master
go 70 lines 1.79 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package cloudauth
4
5 import (
6 "encoding/json"
7 "testing"
8
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11 "gopkg.in/yaml.v3"
12 )
13
14 func TestProviderUnmarshalJSON_EmptyToNone(t *testing.T) {
15 var cfg Config
16
17 err := json.Unmarshal([]byte(`{"provider":""}`), &cfg)
18 require.NoError(t, err)
19
20 assert.Equal(t, ProviderNone, cfg.Provider)
21 assert.Equal(t, ProviderNone, cfg.ProviderName())
22 }
23
24 func TestProviderUnmarshalYAML_EmptyToNone(t *testing.T) {
25 var cfg Config
26
27 err := yaml.Unmarshal([]byte("provider: \"\""), &cfg)
28 require.NoError(t, err)
29
30 assert.Equal(t, ProviderNone, cfg.Provider)
31 assert.Equal(t, ProviderNone, cfg.ProviderName())
32 }
33
34 func TestProviderUnmarshalJSON_TrimAndCaseToAzureAD(t *testing.T) {
35 var cfg Config
36
37 err := json.Unmarshal([]byte(`{"provider":" AZURE_AD "}`), &cfg)
38 require.NoError(t, err)
39
40 assert.Equal(t, ProviderAzureAD, cfg.Provider)
41 assert.Equal(t, ProviderAzureAD, cfg.ProviderName())
42 }
43
44 func TestProviderUnmarshalJSON_AzureADAliasWithoutUnderscoreIsInvalid(t *testing.T) {
45 var cfg Config
46
47 err := json.Unmarshal([]byte(`{"provider":"AzureAD"}`), &cfg)
48 require.NoError(t, err)
49
50 assert.Equal(t, Provider("azuread"), cfg.Provider)
51 assert.Equal(t, Provider("azuread"), cfg.ProviderName())
52
53 err = cfg.Validate()
54 require.Error(t, err)
55 assert.ErrorContains(t, err, `cloud_auth.provider "azuread" is invalid`)
56 }
57
58 func TestProviderMarshalJSON_NoneToNormalized(t *testing.T) {
59 data, err := json.Marshal(Config{Provider: ProviderNone})
60 require.NoError(t, err)
61
62 assert.Contains(t, string(data), `"provider":"none"`)
63 }
64
65 func TestProviderMarshalYAML_NoneToNormalized(t *testing.T) {
66 data, err := yaml.Marshal(Config{Provider: ProviderNone})
67 require.NoError(t, err)
68
69 assert.Contains(t, string(data), "provider: none")
70 }