2021-02-09 11:53:33 +00:00
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
|
2021-02-08 11:57:14 +00:00
|
|
|
package handlers
|
|
|
|
|
|
|
|
import (
|
2021-02-10 13:39:38 +00:00
|
|
|
"bytes"
|
|
|
|
"fmt"
|
|
|
|
"io/ioutil"
|
2021-02-08 11:57:14 +00:00
|
|
|
"net/http"
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
"testing"
|
|
|
|
|
2021-02-10 13:39:38 +00:00
|
|
|
"github.com/BurntSushi/toml"
|
2021-02-08 11:57:14 +00:00
|
|
|
"github.com/pkg/errors"
|
|
|
|
"go.mindeco.de/http/tester"
|
|
|
|
|
2021-02-09 16:38:51 +00:00
|
|
|
"github.com/ssb-ngi-pointer/go-ssb-room/admindb/mockdb"
|
|
|
|
"github.com/ssb-ngi-pointer/go-ssb-room/internal/repo"
|
2021-02-10 13:39:38 +00:00
|
|
|
"github.com/ssb-ngi-pointer/go-ssb-room/web/i18n"
|
2021-02-09 16:38:51 +00:00
|
|
|
"github.com/ssb-ngi-pointer/go-ssb-room/web/router"
|
2021-02-08 11:57:14 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
testMux *http.ServeMux
|
|
|
|
testClient *tester.Tester
|
|
|
|
testRouter = router.CompleteApp()
|
|
|
|
|
|
|
|
// mocked dbs
|
2021-02-08 16:47:42 +00:00
|
|
|
testAuthDB *mockdb.FakeAuthWithSSBService
|
|
|
|
testAuthFallbackDB *mockdb.FakeAuthFallbackService
|
2021-02-10 13:39:38 +00:00
|
|
|
|
|
|
|
testI18N = justTheKeys()
|
2021-02-08 11:57:14 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func setup(t *testing.T) {
|
|
|
|
|
|
|
|
testRepoPath := filepath.Join("testrun", t.Name())
|
|
|
|
os.RemoveAll(testRepoPath)
|
|
|
|
testRepo := repo.New(testRepoPath)
|
|
|
|
|
2021-02-10 13:39:38 +00:00
|
|
|
testOverride := filepath.Join(testRepo.GetPath("i18n"), "active.en.toml")
|
|
|
|
os.MkdirAll(filepath.Dir(testOverride), 0700)
|
|
|
|
err := ioutil.WriteFile(testOverride, testI18N, 0700)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
2021-02-08 16:47:42 +00:00
|
|
|
testAuthDB = new(mockdb.FakeAuthWithSSBService)
|
|
|
|
testAuthFallbackDB = new(mockdb.FakeAuthFallbackService)
|
2021-02-08 11:57:14 +00:00
|
|
|
h, err := New(
|
|
|
|
testRouter,
|
|
|
|
testRepo,
|
|
|
|
testAuthDB,
|
|
|
|
testAuthFallbackDB,
|
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(errors.Wrap(err, "setup: handler init failed"))
|
|
|
|
}
|
|
|
|
|
|
|
|
// log, _ := logtest.KitLogger("complete", t)
|
|
|
|
|
|
|
|
testMux = http.NewServeMux()
|
|
|
|
testMux.Handle("/", h)
|
|
|
|
testClient = tester.New(testMux, t)
|
|
|
|
}
|
|
|
|
|
|
|
|
func teardown() {
|
|
|
|
testMux = nil
|
|
|
|
testClient = nil
|
2021-02-08 16:47:42 +00:00
|
|
|
testAuthDB = nil
|
2021-02-08 11:57:14 +00:00
|
|
|
testAuthFallbackDB = nil
|
|
|
|
}
|
2021-02-10 13:39:38 +00:00
|
|
|
|
|
|
|
// auto generate from defaults a list of Label = "Label"
|
|
|
|
func justTheKeys() []byte {
|
|
|
|
f, err := i18n.Defaults.Open("/active.en.toml")
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
justAMap := make(map[string]interface{})
|
|
|
|
md, err := toml.DecodeReader(f, &justAMap)
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
var buf = &bytes.Buffer{}
|
|
|
|
|
|
|
|
for _, key := range md.Keys() {
|
|
|
|
fmt.Fprintf(buf, "%s = \"%s\"\n", key, key)
|
|
|
|
}
|
|
|
|
|
|
|
|
return buf.Bytes()
|
|
|
|
}
|