1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-09-01 11:36:23 -07:00
gochan/pkg/config/config_test.go

72 lines
1.6 KiB
Go

package config
import (
"encoding/json"
"strings"
"testing"
_ "github.com/go-sql-driver/mysql"
"github.com/gochan-org/gochan/pkg/gcutil/testutil"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"
"github.com/stretchr/testify/assert"
)
func TestBadTypes(t *testing.T) {
var c GochanConfig
err := json.NewDecoder(strings.NewReader(badTypeJSON)).Decode(&c)
assert.Error(t, err)
}
func TestValidJSON(t *testing.T) {
var c GochanConfig
err := json.NewDecoder(strings.NewReader(validCfgJSON)).Decode(&c)
assert.NoError(t, err)
}
func TestValidateValues(t *testing.T) {
testutil.GoToGochanRoot(t)
InitConfig()
SetRandomSeed("test")
assert.NoError(t, cfg.ValidateValues())
cfg.CookieMaxAge = "not a duration"
assert.Error(t, cfg.ValidateValues())
cfg.CookieMaxAge = "1y"
assert.NoError(t, cfg.ValidateValues())
SetTestDBConfig("not a valid driver", "127.0.0.1", "gochan", "gochan", "", "")
assert.Error(t, cfg.ValidateValues())
SetTestDBConfig("postgresql", "127.0.0.1", "gochan", "gochan", "", "")
assert.NoError(t, cfg.ValidateValues())
}
type webRootTest struct {
webRoot string
pathArgs []string
expectPath string
}
func TestWebPath(t *testing.T) {
testutil.GoToGochanRoot(t)
InitConfig()
testCases := []webRootTest{
{
webRoot: "/",
pathArgs: []string{"b", "res", "1234.html"},
expectPath: "/b/res/1234.html",
},
{
webRoot: "/chan",
pathArgs: []string{"b", "res", "1234.html"},
expectPath: "/chan/b/res/1234.html",
},
}
for _, tC := range testCases {
t.Run(tC.expectPath, func(t *testing.T) {
cfg.WebRoot = tC.webRoot
wp := WebPath(tC.pathArgs...)
assert.Equal(t, tC.expectPath, wp)
})
}
}