Files
llmgw/internal/web/about_test.go
T
Ilker ManapandClaude Opus 5.5 af6f8e023e
Release / build (push) Successful in 3m41s
Release / notes (push) Successful in 3s
CI / test (push) Successful in 4m24s
Describe v0.10.0
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 21:06:42 +02:00

84 lines
2.4 KiB
Go

package web
import (
"bytes"
"net/http"
"os"
"strings"
"testing"
)
func TestAboutPageForARelease(t *testing.T) {
code, body := get(t, About("v1.2.3"), "http://llmgw.example/about", nil)
if code != http.StatusOK {
t.Fatalf("status %d", code)
}
for _, want := range []string{
"<!doctype html>",
repoURL + "/releases/download/v1.2.3/llmgw-v1.2.3-linux-amd64",
"VERSION=v1.2.3",
"reverse_proxy", // the Caddyfile, inline
"proxy_read_timeout", // and nginx's
`<a href="/">This gateway</a>`,
"/_static/fonts/archivo-latin.woff2?v=",
} {
if !strings.Contains(body, want) {
t.Errorf("the page does not have %q", want)
}
}
// Served to anyone, on networks that may reach nothing: the page sends no
// browser elsewhere for its fonts, and does not announce unreleased work
// in a binary that already has it.
for _, not := range []string{"fonts.googleapis.com", "next release"} {
if strings.Contains(body, not) {
t.Errorf("the page has %q", not)
}
}
}
func TestAboutPageForADevelopmentBuild(t *testing.T) {
_, body := get(t, About("v1.2.3-4-gabcdef"), "http://llmgw.example/about", nil)
if strings.Contains(body, "/releases/download/v1.2.3-4") || strings.Contains(body, `class="dl"`) {
t.Error("a development build links to release files that do not exist")
}
if !strings.Contains(body, "development build (v1.2.3-4-gabcdef)") {
t.Error("a development build does not say what it is")
}
}
func TestAboutPageAsTheWebsite(t *testing.T) {
d := NewAboutData("v1.2.3")
d.Site, d.Date = true, "1 January 2027"
var b bytes.Buffer
if err := RenderAbout(&b, d); err != nil {
t.Fatal(err)
}
body := b.String()
for _, want := range []string{"fonts.googleapis.com", "Released 1 January 2027"} {
if !strings.Contains(body, want) {
t.Errorf("the website does not have %q", want)
}
}
for _, not := range []string{"<!doctype", "</body>", "This gateway", "/_static/"} {
if strings.Contains(body, not) {
t.Errorf("the website has %q", not)
}
}
}
func TestAboutProxyConfigsMatchDeploy(t *testing.T) {
for _, name := range []string{"Caddyfile", "nginx.conf"} {
want, err := os.ReadFile("../../deploy/proxy/" + name)
if err != nil {
t.Fatal(err)
}
got, err := proxyConfigs.ReadFile("proxy/" + name)
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(got, want) {
t.Errorf("internal/web/proxy/%s differs from deploy/proxy/%[1]s: copy it over", name)
}
}
}