mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-17 23:05:26 +00:00
* chore: fix non-constant fmt string in call Signed-off-by: Dwi Siswanto <git@dw1.io> * build: bump all direct modules Signed-off-by: Dwi Siswanto <git@dw1.io> * chore(hosterrorscache): update import path Signed-off-by: Dwi Siswanto <git@dw1.io> * fix(charts): break changes Signed-off-by: Dwi Siswanto <git@dw1.io> * build: pinned `github.com/zmap/zcrypto` to v0.0.0-20240512203510-0fef58d9a9db Signed-off-by: Dwi Siswanto <git@dw1.io> * chore: golangci-lint auto fixes Signed-off-by: Dwi Siswanto <git@dw1.io> * chore: satisfy lints Signed-off-by: Dwi Siswanto <git@dw1.io> * build: migrate `github.com/xanzy/go-gitlab` => `gitlab.com/gitlab-org/api/client-go` Signed-off-by: Dwi Siswanto <git@dw1.io> * feat(json): update build constraints Signed-off-by: Dwi Siswanto <git@dw1.io> * chore: dont panicking on close err Signed-off-by: Dwi Siswanto <git@dw1.io> --------- Signed-off-by: Dwi Siswanto <git@dw1.io>
126 lines
3.0 KiB
Go
126 lines
3.0 KiB
Go
package authx
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDynamicUnmarshalJSON(t *testing.T) {
|
|
t.Run("basic-unmarshal", func(t *testing.T) {
|
|
data := []byte(`{
|
|
"template": "test-template.yaml",
|
|
"variables": [
|
|
{
|
|
"key": "username",
|
|
"value": "testuser"
|
|
}
|
|
],
|
|
"secrets": [
|
|
{
|
|
"type": "BasicAuth",
|
|
"domains": ["example.com"],
|
|
"username": "user1",
|
|
"password": "pass1"
|
|
}
|
|
],
|
|
"type": "BasicAuth",
|
|
"domains": ["test.com"],
|
|
"username": "testuser",
|
|
"password": "testpass"
|
|
}`)
|
|
|
|
var d Dynamic
|
|
err := d.UnmarshalJSON(data)
|
|
require.NoError(t, err)
|
|
|
|
// Secret
|
|
require.NotNil(t, d.Secret)
|
|
require.Equal(t, "BasicAuth", d.Type)
|
|
require.Equal(t, []string{"test.com"}, d.Domains)
|
|
require.Equal(t, "testuser", d.Username)
|
|
require.Equal(t, "testpass", d.Password)
|
|
|
|
// Dynamic fields
|
|
require.Equal(t, "test-template.yaml", d.TemplatePath)
|
|
require.Len(t, d.Variables, 1)
|
|
require.Equal(t, "username", d.Variables[0].Key)
|
|
require.Equal(t, "testuser", d.Variables[0].Value)
|
|
require.Len(t, d.Secrets, 1)
|
|
require.Equal(t, "BasicAuth", d.Secrets[0].Type)
|
|
require.Equal(t, []string{"example.com"}, d.Secrets[0].Domains)
|
|
require.Equal(t, "user1", d.Secrets[0].Username)
|
|
require.Equal(t, "pass1", d.Secrets[0].Password)
|
|
})
|
|
|
|
t.Run("complex-unmarshal", func(t *testing.T) {
|
|
data := []byte(`{
|
|
"template": "test-template.yaml",
|
|
"variables": [
|
|
{
|
|
"key": "token",
|
|
"value": "Bearer xyz"
|
|
}
|
|
],
|
|
"secrets": [
|
|
{
|
|
"type": "CookiesAuth",
|
|
"domains": ["example.com"],
|
|
"cookies": [
|
|
{
|
|
"key": "session",
|
|
"value": "abc123"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"type": "HeadersAuth",
|
|
"domains": ["api.test.com"],
|
|
"headers": [
|
|
{
|
|
"key": "X-API-Key",
|
|
"value": "secret-key"
|
|
}
|
|
]
|
|
}`)
|
|
|
|
var d Dynamic
|
|
err := d.UnmarshalJSON(data)
|
|
require.NoError(t, err)
|
|
|
|
// Secret
|
|
require.NotNil(t, d.Secret)
|
|
require.Equal(t, "HeadersAuth", d.Type)
|
|
require.Equal(t, []string{"api.test.com"}, d.Domains)
|
|
require.Len(t, d.Headers, 1)
|
|
require.Equal(t, "X-API-Key", d.Secret.Headers[0].Key)
|
|
require.Equal(t, "secret-key", d.Secret.Headers[0].Value)
|
|
|
|
// Dynamic fields
|
|
require.Equal(t, "test-template.yaml", d.TemplatePath)
|
|
require.Len(t, d.Variables, 1)
|
|
require.Equal(t, "token", d.Variables[0].Key)
|
|
require.Equal(t, "Bearer xyz", d.Variables[0].Value)
|
|
require.Len(t, d.Secrets, 1)
|
|
require.Equal(t, "CookiesAuth", d.Secrets[0].Type)
|
|
require.Equal(t, []string{"example.com"}, d.Secrets[0].Domains)
|
|
require.Len(t, d.Secrets[0].Cookies, 1)
|
|
require.Equal(t, "session", d.Secrets[0].Cookies[0].Key)
|
|
require.Equal(t, "abc123", d.Secrets[0].Cookies[0].Value)
|
|
})
|
|
|
|
t.Run("invalid-json", func(t *testing.T) {
|
|
data := []byte(`{invalid json}`)
|
|
var d Dynamic
|
|
err := d.UnmarshalJSON(data)
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("empty-json", func(t *testing.T) {
|
|
data := []byte(`{}`)
|
|
var d Dynamic
|
|
err := d.UnmarshalJSON(data)
|
|
require.NoError(t, err)
|
|
})
|
|
}
|