Skip to content

Commit

Permalink
feat: add tests for json and toml config
Browse files Browse the repository at this point in the history
  • Loading branch information
hacdias committed Jul 21, 2024
1 parent b16c041 commit 356edb8
Showing 1 changed file with 85 additions and 20 deletions.
105 changes: 85 additions & 20 deletions lib/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import (
"github.com/stretchr/testify/require"
)

func writeAndParseConfig(t *testing.T, content string) *Config {
func writeAndParseConfig(t *testing.T, content, extension string) *Config {
tmpDir := t.TempDir()
tmpFile := filepath.Join(tmpDir, "config.yml")
tmpFile := filepath.Join(tmpDir, "config"+extension)

err := os.WriteFile(tmpFile, []byte(content), 0666)
require.NoError(t, err)
Expand All @@ -24,7 +24,7 @@ func writeAndParseConfig(t *testing.T, content string) *Config {
func TestConfigDefaults(t *testing.T) {
t.Parallel()

cfg := writeAndParseConfig(t, "")
cfg := writeAndParseConfig(t, "", ".yml")
require.NoError(t, cfg.Validate())

require.EqualValues(t, []string{"*"}, cfg.CORS.AllowedHeaders)
Expand All @@ -35,7 +35,24 @@ func TestConfigDefaults(t *testing.T) {
func TestConfigCascade(t *testing.T) {
t.Parallel()

content := `
check := func(t *testing.T, cfg *Config) {
require.True(t, cfg.Modify)
require.Equal(t, "/", cfg.Scope)
require.Len(t, cfg.Rules, 1)

require.Len(t, cfg.Users, 2)

require.True(t, cfg.Users[0].Modify)
require.Equal(t, "/", cfg.Users[0].Scope)
require.Len(t, cfg.Users[0].Rules, 1)

require.False(t, cfg.Users[1].Modify)
require.Equal(t, "/basic", cfg.Users[1].Scope)
require.Len(t, cfg.Users[1].Rules, 0)
}

t.Run("YAML", func(t *testing.T) {
content := `
auth: true
scope: /
modify: true
Expand All @@ -52,20 +69,68 @@ users:
modify: false
rules: []`

cfg := writeAndParseConfig(t, content)
require.NoError(t, cfg.Validate())

require.True(t, cfg.Modify)
require.Equal(t, "/", cfg.Scope)
require.Len(t, cfg.Rules, 1)

require.Len(t, cfg.Users, 2)

require.True(t, cfg.Users[0].Modify)
require.Equal(t, "/", cfg.Users[0].Scope)
require.Len(t, cfg.Users[0].Rules, 1)

require.False(t, cfg.Users[1].Modify)
require.Equal(t, "/basic", cfg.Users[1].Scope)
require.Len(t, cfg.Users[1].Rules, 0)
cfg := writeAndParseConfig(t, content, ".yml")
require.NoError(t, cfg.Validate())

check(t, cfg)
})

t.Run("JSON", func(t *testing.T) {
content := `{
"auth": true,
"scope": "/",
"modify": true,
"rules": [
{
"path": "/public/access/",
"modify": true
}
],
"users": [
{
"username": "admin",
"password": "admin"
},
{
"username": "basic",
"password": "basic",
"scope": "/basic",
"modify": false,
"rules": []
}
]
}`

cfg := writeAndParseConfig(t, content, ".json")
require.NoError(t, cfg.Validate())

check(t, cfg)
})

t.Run("`TOML", func(t *testing.T) {
content := `auth = true
scope = "/"
modify = true
[[rules]]
path = "/public/access/"
modify = true
[[users]]
username = "admin"
password = "admin"
[[users]]
username = "basic"
password = "basic"
scope = "/basic"
modify = false
rules = [ ]
`

cfg := writeAndParseConfig(t, content, ".toml")
require.NoError(t, cfg.Validate())

check(t, cfg)
})
}

0 comments on commit 356edb8

Please sign in to comment.