summary refs log tree commit diff stats
path: root/svc/init_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'svc/init_test.go')
-rw-r--r--svc/init_test.go55
1 files changed, 46 insertions, 9 deletions
diff --git a/svc/init_test.go b/svc/init_test.go
index 8b68839..0c417b4 100644
--- a/svc/init_test.go
+++ b/svc/init_test.go
@@ -1,12 +1,14 @@
 package svc // import "github.com/getwtxt/getwtxt/svc"
 
 import (
+	"bytes"
 	"fmt"
 	"log"
 	"net"
 	"os"
 	"strings"
 	"sync"
+	"testing"
 
 	"github.com/getwtxt/registry"
 	"github.com/spf13/viper"
@@ -16,6 +18,7 @@ var (
 	testport     string
 	initTestOnce sync.Once
 	initDBOnce   sync.Once
+	initPersOnce sync.Once
 )
 
 func initTestConf() {
@@ -38,6 +41,12 @@ func initTestDB() {
 	})
 }
 
+func initTestPers() {
+	initPersOnce.Do(func() {
+		initPersistence()
+	})
+}
+
 func logToNull() {
 	hush, err := os.Open("/dev/null")
 	if err != nil {
@@ -47,17 +56,20 @@ func logToNull() {
 }
 
 func testConfig() {
-
 	viper.SetConfigName("getwtxt")
 	viper.SetConfigType("yml")
-	viper.AddConfigPath("..")
+	viper.AddConfigPath("../")
 
+	viper.SetDefault("BehindProxy", true)
+	viper.SetDefault("UseTLS", false)
+	viper.SetDefault("TLSCert", "/etc/ssl/getwtxt.pem")
+	viper.SetDefault("TLSKey", "/etc/ssl/private/getwtxt.pem")
 	viper.SetDefault("ListenPort", 9001)
 	viper.SetDefault("DatabasePath", "getwtxt.db")
 	viper.SetDefault("AssetsDirectory", "assets")
 	viper.SetDefault("DatabaseType", "leveldb")
-	viper.SetDefault("ReCacheInterval", "1h")
-	viper.SetDefault("DatabasePushInterval", "5m")
+	viper.SetDefault("ReCacheInterval", "9m")
+	viper.SetDefault("DatabasePushInterval", "4m")
 	viper.SetDefault("Instance.SiteName", "getwtxt")
 	viper.SetDefault("Instance.OwnerName", "Anonymous Microblogger")
 	viper.SetDefault("Instance.Email", "nobody@knows")
@@ -69,15 +81,10 @@ func testConfig() {
 
 	confObj.Port = viper.GetInt("ListenPort")
 	confObj.AssetsDir = "../" + viper.GetString("AssetsDirectory")
-
 	confObj.DBType = strings.ToLower(viper.GetString("DatabaseType"))
 	confObj.DBPath = viper.GetString("DatabasePath")
-	log.Printf("Using %v database: %v\n", confObj.DBType, confObj.DBPath)
-
 	confObj.CacheInterval = viper.GetDuration("StatusFetchInterval")
-	log.Printf("User status fetch interval: %v\n", confObj.CacheInterval)
 	confObj.DBInterval = viper.GetDuration("DatabasePushInterval")
-	log.Printf("Database push interval: %v\n", confObj.DBInterval)
 
 	confObj.Instance.Vers = Vers
 	confObj.Instance.Name = viper.GetString("Instance.SiteName")
@@ -87,9 +94,39 @@ func testConfig() {
 	confObj.Instance.Desc = viper.GetString("Instance.Description")
 }
 
+// Creates a fresh mock registry, with a single
+// user and their statuses, for testing.
 func mockRegistry() {
 	twtxtCache = registry.NewIndex()
 	statuses, _, _ := registry.GetTwtxt("https://gbmor.dev/twtxt.txt")
 	parsed, _ := registry.ParseUserTwtxt(statuses, "gbmor", "https://gbmor.dev/twtxt.txt")
 	_ = twtxtCache.AddUser("gbmor", "https://gbmor.dev/twtxt.txt", "1", net.ParseIP("127.0.0.1"), parsed)
 }
+
+// Empties the mock registry's user of statuses
+// for functions that test status modifications
+func killStatuses() {
+	twtxtCache.Mu.Lock()
+	user := twtxtCache.Users["https://gbmor.dev/twtxt.txt"]
+	user.Mu.Lock()
+
+	user.Status = registry.NewTimeMap()
+	user.RLen = "0"
+	twtxtCache.Users["https://gbmor.dev/twtxt.txt"] = user
+
+	user.Mu.Unlock()
+	twtxtCache.Mu.Unlock()
+}
+
+func Test_errLog(t *testing.T) {
+	t.Run("Log to Buffer", func(t *testing.T) {
+		b := []byte{}
+		buf := bytes.NewBuffer(b)
+		log.SetOutput(buf)
+		err := fmt.Errorf("test error")
+		errLog("", err)
+		if !strings.Contains(buf.String(), "test error") {
+			t.Errorf("Output Incorrect: %#v\n", buf.String())
+		}
+	})
+}