feat(03-01): add ServeMux groups, JWT verifier, and serve command

Named middleware resolves at boot, HS256 tokens are pinned with required
exp/sub, and both binaries expose a signal-aware serve command.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jakub Zych
2026-09-17 20:04:13 +02:00
parent d0d845052b
commit 4ee4c4a2fc
18 changed files with 976 additions and 12 deletions

View File

@@ -117,3 +117,32 @@ func TestOptionalMessageContract(t *testing.T) {
type extraMessage struct{ s string }
func (e extraMessage) Message() string { return e.s }
type routesOnly struct{}
func (routesOnly) Routes(Router) error { return nil }
type middlewareOnly struct{}
func (middlewareOnly) Middlewares() map[string]Middleware {
return map[string]Middleware{"jwt.auth": nil}
}
type modelsOnly struct{}
func (modelsOnly) Models() []any { return []any{struct{}{}} }
func TestHTTPCapabilitiesDiscoveredByTypeAssertion(t *testing.T) {
var r HasRoutes = routesOnly{}
if err := r.Routes(nil); err != nil {
t.Fatal(err)
}
var m HasMiddleware = middlewareOnly{}
if _, ok := m.Middlewares()["jwt.auth"]; !ok {
t.Fatal("missing jwt.auth")
}
var models HasModels = modelsOnly{}
if len(models.Models()) != 1 {
t.Fatalf("Models = %+v", models.Models())
}
}