github.com/cs3org/reva/v2@v2.27.7/pkg/ocm/provider/authorizer/json/json_test.go (about) 1 package json_test 2 3 import ( 4 "context" 5 "testing" 6 7 ocmprovider "github.com/cs3org/go-cs3apis/cs3/ocm/provider/v1beta1" 8 "github.com/stretchr/testify/assert" 9 10 "github.com/cs3org/reva/v2/pkg/errtypes" 11 "github.com/cs3org/reva/v2/pkg/ocm/provider/authorizer/json" 12 ) 13 14 func TestAuthorizer_GetInfoByDomain(t *testing.T) { 15 authorizer, err := json.New(map[string]interface{}{ 16 "providers": "./testdata/providers.json", 17 }) 18 assert.NotNil(t, authorizer) 19 assert.Nil(t, err) 20 21 { // implicit normalizeDomain 22 for name, env := range map[string]struct { 23 givenDomain string 24 expectedDomain string 25 expectedError error 26 }{ 27 "domain only": {givenDomain: "server-one", expectedDomain: "server-one"}, 28 "domain with port": {givenDomain: "server-two:9200", expectedDomain: "server-two:9200"}, 29 "domain only with port in result": {givenDomain: "server-two", expectedDomain: "server-two:9200"}, 30 "unknown domain": {givenDomain: "unknown-domain", expectedError: errtypes.NotFound("unknown-domain")}, 31 } { 32 t.Run(name, func(t *testing.T) { 33 info, err := authorizer.GetInfoByDomain(context.Background(), env.givenDomain) 34 assert.ErrorIs(t, err, env.expectedError) 35 assert.Equal(t, info.GetDomain(), env.expectedDomain) 36 }) 37 } 38 } 39 } 40 41 func TestAuthorizer_IsProviderAllowed(t *testing.T) { 42 { // implicit normalizeDomain 43 for name, env := range map[string]struct { 44 providerInfo *ocmprovider.ProviderInfo 45 verifyRequestHostname bool 46 expectedError error 47 }{ 48 "not authorized": { 49 providerInfo: &ocmprovider.ProviderInfo{ 50 Domain: "some.unknown.domain", 51 }, 52 expectedError: errtypes.NotFound("some.unknown.domain"), 53 }, 54 "authorized without host name verification": { 55 providerInfo: &ocmprovider.ProviderInfo{ 56 Domain: "server-one", 57 }, 58 }, 59 "no services and host name verification enabled": { 60 providerInfo: &ocmprovider.ProviderInfo{}, 61 verifyRequestHostname: true, 62 expectedError: json.ErrNoIP, 63 }, 64 "fails if the domain contains a port": { 65 providerInfo: &ocmprovider.ProviderInfo{ 66 Domain: "server-two", 67 }, 68 expectedError: error(errtypes.NotFound("server-two")), 69 }, 70 } { 71 t.Run(name, func(t *testing.T) { 72 authorizer, err := json.New(map[string]interface{}{ 73 "providers": "./testdata/providers.json", 74 "verify_request_hostname": env.verifyRequestHostname, 75 }) 76 assert.NotNil(t, authorizer) 77 assert.Nil(t, err) 78 79 err = authorizer.IsProviderAllowed(context.Background(), env.providerInfo) 80 assert.ErrorIs(t, err, env.expectedError) 81 }) 82 } 83 } 84 }