mirror of
https://github.com/tiennm99/tiennm99bot.git
synced 2026-10-11 03:13:46 +00:00
Serve the BotFather game noitu from the bot's HTTP server under /games/noitu when GAME_BASE_URL is set. /noitu sends the game, Play answers with a signed, expiring link, and the server validates every word against the embedded noitu dictionary (CC BY-SA 4.0), runs the bot opponent and turn timer, and reports the score with setGameScore. Modules can now register game-short-name callbacks and HTTP routes.
46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
package server
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestHealthHandler_OK(t *testing.T) {
|
|
rec := httptest.NewRecorder()
|
|
HealthHandler()(rec, httptest.NewRequest(http.MethodGet, "/", nil))
|
|
if rec.Code != http.StatusOK {
|
|
t.Errorf("status = %d, want 200", rec.Code)
|
|
}
|
|
if !strings.Contains(rec.Body.String(), "ok") {
|
|
t.Errorf("body = %q, want contains 'ok'", rec.Body.String())
|
|
}
|
|
}
|
|
|
|
func TestNew_ServesModuleRoutesAndKeepsHealth(t *testing.T) {
|
|
_, restore := captureLogger(t)
|
|
defer restore()
|
|
h := New(Route{Pattern: "/games/demo/", Handler: http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
|
_, _ = w.Write([]byte("demo"))
|
|
})})
|
|
|
|
rec := httptest.NewRecorder()
|
|
h.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/games/demo/x", nil))
|
|
if rec.Code != http.StatusOK || rec.Body.String() != "demo" {
|
|
t.Fatalf("module route: status %d body %q", rec.Code, rec.Body.String())
|
|
}
|
|
|
|
rec = httptest.NewRecorder()
|
|
h.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/", nil))
|
|
if rec.Code != http.StatusOK || !strings.Contains(rec.Body.String(), "ok") {
|
|
t.Fatalf("health: status %d body %q", rec.Code, rec.Body.String())
|
|
}
|
|
|
|
rec = httptest.NewRecorder()
|
|
h.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/games/other/", nil))
|
|
if rec.Code != http.StatusNotFound {
|
|
t.Fatalf("unknown path: status %d, want 404", rec.Code)
|
|
}
|
|
}
|