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  }