github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/externaltenant/mapping_test.go (about) 1 package externaltenant_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/kyma-incubator/compass/components/director/pkg/tenant" 8 9 "github.com/kyma-incubator/compass/components/director/pkg/apperrors" 10 11 "github.com/kyma-incubator/compass/components/director/internal/model" 12 13 "github.com/kyma-incubator/compass/components/director/internal/externaltenant" 14 "github.com/stretchr/testify/assert" 15 "github.com/stretchr/testify/require" 16 ) 17 18 func TestMapTenants(t *testing.T) { 19 // GIVEN 20 validTenantSrcPath := "./testdata/tenants/" 21 directoryWithInvalidTenantJSON := "./testdata/invalidtenants/" 22 directoryWithInvalidFiles := "./testdata/invalidfiletypes/" 23 invalidPath := "foo" 24 25 firstProvider := "valid_tenants.json" 26 secondProvider := "valid_tenants2.json" 27 28 expectedTenants := []model.BusinessTenantMappingInput{ 29 { 30 Name: "default", 31 ExternalTenant: "id-default", 32 Provider: firstProvider, 33 Region: "eu-1", 34 Type: string(tenant.Subaccount), 35 }, 36 { 37 Name: "foo", 38 ExternalTenant: "id-foo", 39 Provider: firstProvider, 40 Region: "eu-2", 41 Type: string(tenant.Subaccount), 42 }, 43 { 44 Name: "bar", 45 ExternalTenant: "id-bar", 46 Provider: secondProvider, 47 }, 48 { 49 Name: "baz", 50 ExternalTenant: "id-baz", 51 Provider: secondProvider, 52 }, 53 } 54 55 t.Run("should return tenants", func(t *testing.T) { 56 // WHEN 57 actualTenants, err := externaltenant.MapTenants(validTenantSrcPath, "eu-1") 58 59 // THEN 60 require.NoError(t, err) 61 assert.Equal(t, expectedTenants, actualTenants) 62 }) 63 64 t.Run("should fail while reading tenants directory", func(t *testing.T) { 65 // WHEN 66 _, err := externaltenant.MapTenants(invalidPath, "") 67 68 // THEN 69 require.Error(t, err) 70 assert.Equal(t, err.Error(), fmt.Sprintf("while reading directory with tenant files [%s]: open %s: no such file or directory", invalidPath, invalidPath)) 71 }) 72 73 t.Run("should fail while reading file with tenants - unsupported file extension", func(t *testing.T) { 74 // WHEN 75 _, err := externaltenant.MapTenants(directoryWithInvalidFiles, "") 76 77 // THEN 78 require.Error(t, err) 79 assert.Equal(t, err.Error(), apperrors.NewInternalError("unsupported file format [.txt]").Error()) 80 }) 81 82 t.Run("should fail while unmarshalling tenants", func(t *testing.T) { 83 // WHEN 84 _, err := externaltenant.MapTenants(directoryWithInvalidTenantJSON, "") 85 86 // THEN 87 require.Error(t, err) 88 assert.Equal(t, err.Error(), fmt.Sprintf("while unmarshalling tenants from file [%s%s]: invalid character '\\n' in string literal", directoryWithInvalidTenantJSON, "invalid.json")) 89 }) 90 }