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  }