github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/model/auth_test.go (about) 1 package model_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/kyma-incubator/compass/components/director/internal/model" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 var accessStrategy = "accessStrategy" 13 14 func TestAuthInput_ToAuth(t *testing.T) { 15 // GIVEN 16 testCases := []struct { 17 Name string 18 Input *model.AuthInput 19 Expected *model.Auth 20 }{ 21 { 22 Name: "All properties given", 23 Input: &model.AuthInput{ 24 Credential: &model.CredentialDataInput{ 25 Basic: &model.BasicCredentialDataInput{ 26 Username: "test", 27 }, 28 }, 29 AccessStrategy: &accessStrategy, 30 AdditionalQueryParams: map[string][]string{ 31 "key": {"value1", "value2"}, 32 }, 33 AdditionalHeaders: map[string][]string{ 34 "header": {"value1", "value2"}, 35 }, 36 RequestAuth: &model.CredentialRequestAuthInput{ 37 Csrf: &model.CSRFTokenCredentialRequestAuthInput{ 38 TokenEndpointURL: "test", 39 }, 40 }, 41 }, 42 Expected: &model.Auth{ 43 Credential: model.CredentialData{ 44 Basic: &model.BasicCredentialData{ 45 Username: "test", 46 }, 47 }, 48 AccessStrategy: &accessStrategy, 49 AdditionalQueryParams: map[string][]string{ 50 "key": {"value1", "value2"}, 51 }, 52 AdditionalHeaders: map[string][]string{ 53 "header": {"value1", "value2"}, 54 }, 55 RequestAuth: &model.CredentialRequestAuth{ 56 Csrf: &model.CSRFTokenCredentialRequestAuth{ 57 TokenEndpointURL: "test", 58 }, 59 }, 60 }, 61 }, 62 { 63 Name: "Empty", 64 Input: &model.AuthInput{}, 65 Expected: &model.Auth{}, 66 }, 67 { 68 Name: "Nil", 69 Input: nil, 70 Expected: nil, 71 }, 72 } 73 74 for i, testCase := range testCases { 75 t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) { 76 // WHEN 77 result := testCase.Input.ToAuth() 78 79 // then 80 assert.Equal(t, testCase.Expected, result) 81 }) 82 } 83 } 84 85 func TestCredentialDataInput_ToCredentialData(t *testing.T) { 86 // GIVEN 87 testCases := []struct { 88 Name string 89 Input *model.CredentialDataInput 90 Expected *model.CredentialData 91 }{ 92 { 93 Name: "All properties given", 94 Input: &model.CredentialDataInput{ 95 Basic: &model.BasicCredentialDataInput{ 96 Username: "user", 97 }, 98 Oauth: &model.OAuthCredentialDataInput{ 99 URL: "test", 100 }, 101 }, 102 Expected: &model.CredentialData{ 103 Basic: &model.BasicCredentialData{ 104 Username: "user", 105 }, 106 Oauth: &model.OAuthCredentialData{ 107 URL: "test", 108 }, 109 }, 110 }, 111 { 112 Name: "Empty", 113 Input: &model.CredentialDataInput{}, 114 Expected: &model.CredentialData{}, 115 }, 116 { 117 Name: "Nil", 118 Input: nil, 119 Expected: nil, 120 }, 121 } 122 123 for i, testCase := range testCases { 124 t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) { 125 // WHEN 126 result := testCase.Input.ToCredentialData() 127 128 // then 129 assert.Equal(t, testCase.Expected, result) 130 }) 131 } 132 } 133 134 func TestBasicCredentialDataInput_ToBasicCredentialData(t *testing.T) { 135 // GIVEN 136 testCases := []struct { 137 Name string 138 Input *model.BasicCredentialDataInput 139 Expected *model.BasicCredentialData 140 }{ 141 { 142 Name: "All properties given", 143 Input: &model.BasicCredentialDataInput{ 144 Username: "user", 145 Password: "pass", 146 }, 147 Expected: &model.BasicCredentialData{ 148 Username: "user", 149 Password: "pass", 150 }, 151 }, 152 { 153 Name: "Empty", 154 Input: &model.BasicCredentialDataInput{}, 155 Expected: &model.BasicCredentialData{}, 156 }, 157 { 158 Name: "Nil", 159 Input: nil, 160 Expected: nil, 161 }, 162 } 163 164 for i, testCase := range testCases { 165 t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) { 166 // WHEN 167 result := testCase.Input.ToBasicCredentialData() 168 169 // then 170 assert.Equal(t, testCase.Expected, result) 171 }) 172 } 173 } 174 175 func TestOAuthCredentialDataInput_ToOAuthCredentialData(t *testing.T) { 176 // GIVEN 177 testCases := []struct { 178 Name string 179 Input *model.OAuthCredentialDataInput 180 Expected *model.OAuthCredentialData 181 }{ 182 { 183 Name: "All properties given", 184 Input: &model.OAuthCredentialDataInput{ 185 URL: "test", 186 ClientID: "id", 187 ClientSecret: "secret", 188 }, 189 Expected: &model.OAuthCredentialData{ 190 URL: "test", 191 ClientID: "id", 192 ClientSecret: "secret", 193 }, 194 }, 195 { 196 Name: "Empty", 197 Input: &model.OAuthCredentialDataInput{}, 198 Expected: &model.OAuthCredentialData{}, 199 }, 200 { 201 Name: "Nil", 202 Input: nil, 203 Expected: nil, 204 }, 205 } 206 207 for i, testCase := range testCases { 208 t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) { 209 // WHEN 210 result := testCase.Input.ToOAuthCredentialData() 211 212 // then 213 assert.Equal(t, testCase.Expected, result) 214 }) 215 } 216 } 217 218 func TestCredentialRequestAuthInput_ToCredentialRequestAuth(t *testing.T) { 219 // GIVEN 220 testCases := []struct { 221 Name string 222 Input *model.CredentialRequestAuthInput 223 Expected *model.CredentialRequestAuth 224 }{ 225 { 226 Name: "All properties given", 227 Input: &model.CredentialRequestAuthInput{ 228 Csrf: &model.CSRFTokenCredentialRequestAuthInput{ 229 TokenEndpointURL: "foo.bar", 230 }, 231 }, 232 Expected: &model.CredentialRequestAuth{ 233 Csrf: &model.CSRFTokenCredentialRequestAuth{ 234 TokenEndpointURL: "foo.bar", 235 }, 236 }, 237 }, 238 { 239 Name: "Empty", 240 Input: &model.CredentialRequestAuthInput{}, 241 Expected: &model.CredentialRequestAuth{}, 242 }, 243 { 244 Name: "Nil", 245 Input: nil, 246 Expected: nil, 247 }, 248 } 249 250 for i, testCase := range testCases { 251 t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) { 252 // WHEN 253 result := testCase.Input.ToCredentialRequestAuth() 254 255 // then 256 assert.Equal(t, testCase.Expected, result) 257 }) 258 } 259 } 260 261 func TestCSRFTokenCredentialRequestAuthInput_ToCSRFTokenCredentialRequestAuth(t *testing.T) { 262 // GIVEN 263 testCases := []struct { 264 Name string 265 Input *model.CSRFTokenCredentialRequestAuthInput 266 Expected *model.CSRFTokenCredentialRequestAuth 267 }{ 268 { 269 Name: "All properties given", 270 Input: &model.CSRFTokenCredentialRequestAuthInput{ 271 Credential: &model.CredentialDataInput{ 272 Basic: &model.BasicCredentialDataInput{ 273 Username: "test", 274 }, 275 }, 276 TokenEndpointURL: "foo.bar", 277 AdditionalQueryParams: map[string][]string{ 278 "key": {"value1", "value2"}, 279 }, 280 AdditionalHeaders: map[string][]string{ 281 "header": {"value1", "value2"}, 282 }, 283 }, 284 Expected: &model.CSRFTokenCredentialRequestAuth{ 285 Credential: model.CredentialData{ 286 Basic: &model.BasicCredentialData{ 287 Username: "test", 288 }, 289 }, 290 TokenEndpointURL: "foo.bar", 291 AdditionalQueryParams: map[string][]string{ 292 "key": {"value1", "value2"}, 293 }, 294 AdditionalHeaders: map[string][]string{ 295 "header": {"value1", "value2"}, 296 }, 297 }, 298 }, 299 { 300 Name: "Empty", 301 Input: &model.CSRFTokenCredentialRequestAuthInput{}, 302 Expected: &model.CSRFTokenCredentialRequestAuth{}, 303 }, 304 { 305 Name: "Nil", 306 Input: nil, 307 Expected: nil, 308 }, 309 } 310 311 for i, testCase := range testCases { 312 t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) { 313 // WHEN 314 result := testCase.Input.ToCSRFTokenCredentialRequestAuth() 315 316 // then 317 assert.Equal(t, testCase.Expected, result) 318 }) 319 } 320 }