github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/config/selfreg_config_test.go (about) 1 package config 2 3 import ( 4 "testing" 5 6 "github.com/kyma-incubator/compass/components/director/pkg/oauth" 7 "github.com/pkg/errors" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestSelfRegConfig_MapInstanceConfigs(t *testing.T) { 12 testCases := []struct { 13 Name string 14 Config SelfRegConfig 15 OauthMode oauth.AuthMode 16 ExpectedRegionToInstance map[string]InstanceConfig 17 ExpectedErr error 18 }{ 19 { 20 Name: "Success for MTLS mode", 21 Config: SelfRegConfig{ 22 SelfRegisterSecretPath: "testdata/TestSelfRegConfig_MapInstanceConfigs_MTLS_Success.golden", 23 OAuthMode: oauth.Mtls, 24 InstanceClientIDPath: "clientId", 25 InstanceClientSecretPath: "clientSecret", 26 InstanceURLPath: "url", 27 InstanceTokenURLPath: "tokenUrl", 28 InstanceCertPath: "clientCert", 29 InstanceKeyPath: "clientKey", 30 }, 31 ExpectedRegionToInstance: map[string]InstanceConfig{ 32 "eu-1": { 33 ClientID: "client_id", 34 URL: "url", 35 TokenURL: "token-url", 36 Cert: "cert", 37 Key: "key", 38 }, 39 "eu-2": { 40 ClientID: "client_id_2", 41 URL: "url-2", 42 TokenURL: "token-url-2", 43 Cert: "cert2", 44 Key: "key2", 45 }, 46 }, 47 ExpectedErr: nil, 48 }, 49 { 50 Name: "Success for Standard mode", 51 Config: SelfRegConfig{ 52 SelfRegisterSecretPath: "testdata/TestSelfRegConfig_MapInstanceConfigs_StandardMode_Success.golden", 53 OAuthMode: oauth.Standard, 54 InstanceClientIDPath: "clientId", 55 InstanceClientSecretPath: "clientSecret", 56 InstanceURLPath: "url", 57 InstanceTokenURLPath: "tokenUrl", 58 InstanceCertPath: "clientCert", 59 InstanceKeyPath: "clientKey", 60 }, 61 ExpectedRegionToInstance: map[string]InstanceConfig{ 62 "eu-1": { 63 ClientID: "client_id", 64 ClientSecret: "client_secret", 65 URL: "url", 66 TokenURL: "token-url", 67 }, 68 "eu-2": { 69 ClientID: "client_id_2", 70 ClientSecret: "client_secret", 71 URL: "url-2", 72 TokenURL: "token-url-2", 73 }, 74 }, 75 ExpectedErr: nil, 76 }, 77 { 78 Name: "Returns error when Client ID and URLs are missing", 79 Config: SelfRegConfig{ 80 SelfRegisterSecretPath: "testdata/TestSelfRegConfig_MapInstanceConfigs_StandardMode_Missing_ClientID_URL.golden", 81 OAuthMode: oauth.Standard, 82 InstanceClientIDPath: "clientId", 83 InstanceClientSecretPath: "clientSecret", 84 InstanceURLPath: "url", 85 InstanceTokenURLPath: "tokenUrl", 86 InstanceCertPath: "clientCert", 87 InstanceKeyPath: "clientKey", 88 }, 89 ExpectedRegionToInstance: nil, 90 ExpectedErr: errors.Errorf("while validating instance for region: %q: Client ID is missing, Token URL is missing, URL is missing", "eu-2"), 91 }, 92 { 93 Name: "Returns error when Client Secret is missing in Standard flow", 94 Config: SelfRegConfig{ 95 SelfRegisterSecretPath: "testdata/TestSelfRegConfig_MapInstanceConfigs_StandardMode_Missing_ClientSecret.golden", 96 OAuthMode: oauth.Standard, 97 InstanceClientIDPath: "clientId", 98 InstanceClientSecretPath: "clientSecret", 99 InstanceURLPath: "url", 100 InstanceTokenURLPath: "tokenUrl", 101 InstanceCertPath: "clientCert", 102 InstanceKeyPath: "clientKey", 103 }, 104 ExpectedRegionToInstance: nil, 105 ExpectedErr: errors.Errorf("while validating instance for region: %q: Client Secret is missing", "eu-2"), 106 }, 107 { 108 Name: "Returns error when Certificate and Key is missing in MTLS flow", 109 Config: SelfRegConfig{ 110 SelfRegisterSecretPath: "testdata/TestSelfRegConfig_MapInstanceConfigs_MTLS_Missing_Cert_Key.golden", 111 OAuthMode: oauth.Mtls, 112 InstanceClientIDPath: "clientId", 113 InstanceClientSecretPath: "clientSecret", 114 InstanceURLPath: "url", 115 InstanceTokenURLPath: "tokenUrl", 116 InstanceCertPath: "clientCert", 117 InstanceKeyPath: "clientKey", 118 }, 119 ExpectedRegionToInstance: nil, 120 ExpectedErr: errors.Errorf("while validating instance for region: %q: Certificate is missing, Key is missing", "eu-2"), 121 }, 122 } 123 124 for _, testCase := range testCases { 125 t.Run(testCase.Name, func(t *testing.T) { 126 err := testCase.Config.MapInstanceConfigs() 127 128 if testCase.ExpectedErr != nil { 129 require.Error(t, err) 130 require.Contains(t, err.Error(), testCase.ExpectedErr.Error()) 131 require.True(t, len(testCase.Config.RegionToInstanceConfig) == 0) 132 } else { 133 require.NoError(t, err) 134 require.Equal(t, testCase.ExpectedRegionToInstance, testCase.Config.RegionToInstanceConfig) 135 } 136 }) 137 } 138 }