Path: blob/dev/pkg/authprovider/authx/dynamic_test.go
2070 views
package authx12import (3"testing"45"github.com/stretchr/testify/require"6)78func TestDynamicUnmarshalJSON(t *testing.T) {9t.Run("basic-unmarshal", func(t *testing.T) {10data := []byte(`{11"template": "test-template.yaml",12"variables": [13{14"key": "username",15"value": "testuser"16}17],18"secrets": [19{20"type": "BasicAuth",21"domains": ["example.com"],22"username": "user1",23"password": "pass1"24}25],26"type": "BasicAuth",27"domains": ["test.com"],28"username": "testuser",29"password": "testpass"30}`)3132var d Dynamic33err := d.UnmarshalJSON(data)34require.NoError(t, err)3536// Secret37require.NotNil(t, d.Secret)38require.Equal(t, "BasicAuth", d.Type)39require.Equal(t, []string{"test.com"}, d.Domains)40require.Equal(t, "testuser", d.Username)41require.Equal(t, "testpass", d.Password)4243// Dynamic fields44require.Equal(t, "test-template.yaml", d.TemplatePath)45require.Len(t, d.Variables, 1)46require.Equal(t, "username", d.Variables[0].Key)47require.Equal(t, "testuser", d.Variables[0].Value)48require.Len(t, d.Secrets, 1)49require.Equal(t, "BasicAuth", d.Secrets[0].Type)50require.Equal(t, []string{"example.com"}, d.Secrets[0].Domains)51require.Equal(t, "user1", d.Secrets[0].Username)52require.Equal(t, "pass1", d.Secrets[0].Password)53})5455t.Run("complex-unmarshal", func(t *testing.T) {56data := []byte(`{57"template": "test-template.yaml",58"variables": [59{60"key": "token",61"value": "Bearer xyz"62}63],64"secrets": [65{66"type": "CookiesAuth",67"domains": ["example.com"],68"cookies": [69{70"key": "session",71"value": "abc123"72}73]74}75],76"type": "HeadersAuth",77"domains": ["api.test.com"],78"headers": [79{80"key": "X-API-Key",81"value": "secret-key"82}83]84}`)8586var d Dynamic87err := d.UnmarshalJSON(data)88require.NoError(t, err)8990// Secret91require.NotNil(t, d.Secret)92require.Equal(t, "HeadersAuth", d.Type)93require.Equal(t, []string{"api.test.com"}, d.Domains)94require.Len(t, d.Headers, 1)95require.Equal(t, "X-API-Key", d.Secret.Headers[0].Key)96require.Equal(t, "secret-key", d.Secret.Headers[0].Value)9798// Dynamic fields99require.Equal(t, "test-template.yaml", d.TemplatePath)100require.Len(t, d.Variables, 1)101require.Equal(t, "token", d.Variables[0].Key)102require.Equal(t, "Bearer xyz", d.Variables[0].Value)103require.Len(t, d.Secrets, 1)104require.Equal(t, "CookiesAuth", d.Secrets[0].Type)105require.Equal(t, []string{"example.com"}, d.Secrets[0].Domains)106require.Len(t, d.Secrets[0].Cookies, 1)107require.Equal(t, "session", d.Secrets[0].Cookies[0].Key)108require.Equal(t, "abc123", d.Secrets[0].Cookies[0].Value)109})110111t.Run("invalid-json", func(t *testing.T) {112data := []byte(`{invalid json}`)113var d Dynamic114err := d.UnmarshalJSON(data)115require.Error(t, err)116})117118t.Run("empty-json", func(t *testing.T) {119data := []byte(`{}`)120var d Dynamic121err := d.UnmarshalJSON(data)122require.NoError(t, err)123})124}125126127