Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/authprovider/authx/dynamic_test.go
2070 views
1
package authx
2
3
import (
4
"testing"
5
6
"github.com/stretchr/testify/require"
7
)
8
9
func TestDynamicUnmarshalJSON(t *testing.T) {
10
t.Run("basic-unmarshal", func(t *testing.T) {
11
data := []byte(`{
12
"template": "test-template.yaml",
13
"variables": [
14
{
15
"key": "username",
16
"value": "testuser"
17
}
18
],
19
"secrets": [
20
{
21
"type": "BasicAuth",
22
"domains": ["example.com"],
23
"username": "user1",
24
"password": "pass1"
25
}
26
],
27
"type": "BasicAuth",
28
"domains": ["test.com"],
29
"username": "testuser",
30
"password": "testpass"
31
}`)
32
33
var d Dynamic
34
err := d.UnmarshalJSON(data)
35
require.NoError(t, err)
36
37
// Secret
38
require.NotNil(t, d.Secret)
39
require.Equal(t, "BasicAuth", d.Type)
40
require.Equal(t, []string{"test.com"}, d.Domains)
41
require.Equal(t, "testuser", d.Username)
42
require.Equal(t, "testpass", d.Password)
43
44
// Dynamic fields
45
require.Equal(t, "test-template.yaml", d.TemplatePath)
46
require.Len(t, d.Variables, 1)
47
require.Equal(t, "username", d.Variables[0].Key)
48
require.Equal(t, "testuser", d.Variables[0].Value)
49
require.Len(t, d.Secrets, 1)
50
require.Equal(t, "BasicAuth", d.Secrets[0].Type)
51
require.Equal(t, []string{"example.com"}, d.Secrets[0].Domains)
52
require.Equal(t, "user1", d.Secrets[0].Username)
53
require.Equal(t, "pass1", d.Secrets[0].Password)
54
})
55
56
t.Run("complex-unmarshal", func(t *testing.T) {
57
data := []byte(`{
58
"template": "test-template.yaml",
59
"variables": [
60
{
61
"key": "token",
62
"value": "Bearer xyz"
63
}
64
],
65
"secrets": [
66
{
67
"type": "CookiesAuth",
68
"domains": ["example.com"],
69
"cookies": [
70
{
71
"key": "session",
72
"value": "abc123"
73
}
74
]
75
}
76
],
77
"type": "HeadersAuth",
78
"domains": ["api.test.com"],
79
"headers": [
80
{
81
"key": "X-API-Key",
82
"value": "secret-key"
83
}
84
]
85
}`)
86
87
var d Dynamic
88
err := d.UnmarshalJSON(data)
89
require.NoError(t, err)
90
91
// Secret
92
require.NotNil(t, d.Secret)
93
require.Equal(t, "HeadersAuth", d.Type)
94
require.Equal(t, []string{"api.test.com"}, d.Domains)
95
require.Len(t, d.Headers, 1)
96
require.Equal(t, "X-API-Key", d.Secret.Headers[0].Key)
97
require.Equal(t, "secret-key", d.Secret.Headers[0].Value)
98
99
// Dynamic fields
100
require.Equal(t, "test-template.yaml", d.TemplatePath)
101
require.Len(t, d.Variables, 1)
102
require.Equal(t, "token", d.Variables[0].Key)
103
require.Equal(t, "Bearer xyz", d.Variables[0].Value)
104
require.Len(t, d.Secrets, 1)
105
require.Equal(t, "CookiesAuth", d.Secrets[0].Type)
106
require.Equal(t, []string{"example.com"}, d.Secrets[0].Domains)
107
require.Len(t, d.Secrets[0].Cookies, 1)
108
require.Equal(t, "session", d.Secrets[0].Cookies[0].Key)
109
require.Equal(t, "abc123", d.Secrets[0].Cookies[0].Value)
110
})
111
112
t.Run("invalid-json", func(t *testing.T) {
113
data := []byte(`{invalid json}`)
114
var d Dynamic
115
err := d.UnmarshalJSON(data)
116
require.Error(t, err)
117
})
118
119
t.Run("empty-json", func(t *testing.T) {
120
data := []byte(`{}`)
121
var d Dynamic
122
err := d.UnmarshalJSON(data)
123
require.NoError(t, err)
124
})
125
}
126
127