Files
GoCalGoo/internal/config/config_test.go

74 lines
1.4 KiB
Go

package config
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestLoadDefaults(t *testing.T) {
cfg, err := Load("", "")
require.NoError(t, err)
assert.Equal(t, "GoCalGoo", cfg.App.Name)
assert.Equal(t, 53682, cfg.OAuth.DefaultPort)
assert.Equal(t, "primary", cfg.Google.DefaultCalendarID)
assert.Equal(t, 8080, cfg.Server.Port)
assert.NotEmpty(t, cfg.Google.Scopes)
}
func TestValidate(t *testing.T) {
tests := []struct {
name string
mutate func(*Config)
wantErr bool
}{
{
name: "valid config",
mutate: func(c *Config) {},
wantErr: false,
},
{
name: "missing credentials file",
mutate: func(c *Config) {
c.OAuth.ClientCredentialsFile = ""
},
wantErr: true,
},
{
name: "missing token store",
mutate: func(c *Config) {
c.OAuth.TokenStoreFile = ""
},
wantErr: true,
},
{
name: "empty scopes",
mutate: func(c *Config) {
c.Google.Scopes = nil
},
wantErr: true,
},
{
name: "invalid port",
mutate: func(c *Config) {
c.Server.Port = 0
},
wantErr: true,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
cfg, err := Load("", "")
require.NoError(t, err)
tc.mutate(cfg)
err = Validate(cfg)
if tc.wantErr {
assert.Error(t, err)
} else {
assert.NoError(t, err)
}
})
}
}