diff options
Diffstat (limited to 'server/server_test.go')
| -rw-r--r-- | server/server_test.go | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/server/server_test.go b/server/server_test.go new file mode 100644 index 0000000..96ee083 --- /dev/null +++ b/server/server_test.go @@ -0,0 +1,80 @@ +package server + +import ( + "io" + "log" + "net/http" + "net/http/httptest" + "net/url" + "os" + "strings" + "testing" + + "github.com/benbusby/farside/db" +) + +const breezewikiTestSite = "https://breezewikitest.com" + +func TestMain(m *testing.M) { + err := db.InitializeDB() + if err != nil { + log.Fatalln("Failed to initialize database", err) + } + + err = db.SetInstances("breezewiki", []string{breezewikiTestSite}) + if err != nil { + log.Fatalln("Failed to set instances in db") + } + + exitCode := m.Run() + + _ = db.CloseDB() + os.Exit(exitCode) +} + +func TestBaseRouting(t *testing.T) { + req := httptest.NewRequest(http.MethodGet, "/fandom.com", nil) + w := httptest.NewRecorder() + + baseRouting(w, req) + + res := w.Result() + defer res.Body.Close() + + if res.StatusCode != http.StatusFound { + t.Fatalf("Incorrect resp code (%d) in base routing", res.StatusCode) + } + + expectedHost, _ := url.Parse(breezewikiTestSite) + redirect, err := res.Location() + if err != nil { + t.Fatalf("Error retrieving direct from request: %v\n", err) + } else if redirect.Host != expectedHost.Host { + t.Fatalf("Incorrect redirect site -- expected: %s, actual: %s\n", + expectedHost.Host, + redirect.Host) + } +} + +func TestJSRouting(t *testing.T) { + req := httptest.NewRequest(http.MethodGet, "/_/fandom.com", nil) + w := httptest.NewRecorder() + + jsRouting(w, req) + + res := w.Result() + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + t.Fatalf("Incorrect resp code (%d) in base routing", res.StatusCode) + } + + data, err := io.ReadAll(res.Body) + if err != nil { + t.Fatalf("Error reading response body: %v", err) + } + + if !strings.Contains(string(data), breezewikiTestSite) { + t.Fatalf("%s not found in response body (%s)", breezewikiTestSite, string(data)) + } +} |
