Files
2026-09-23 17:42:55 +08:00

58 lines
1.8 KiB
Go

package routecatalog
import "testing"
func TestLiveClientRouteVisibilityContract(t *testing.T) {
public := []struct{ method, path string }{
{"GET", "/live/streams"},
{"GET", "/live/streams/:streamId"},
{"GET", "/live/categories"},
{"GET", "/live/rooms"},
{"GET", "/live/rooms/:id"},
{"POST", "/live/rooms/:id/like"},
{"GET", "/live/rooms/:id/messages"},
{"GET", "/live/gifts"},
{"GET", "/live/recharge/providers"},
{"GET", "/live/recharge/plans"},
{"POST", "/live/client/auth/login"},
{"POST", "/live/client/auth/register"},
}
for _, route := range public {
descriptor, ok := Lookup(route.method, route.path)
if !ok || !descriptor.Public {
t.Errorf("%s %s must be public: found=%v descriptor=%+v", route.method, route.path, ok, descriptor)
}
}
private := []struct{ method, path string }{
{"GET", "/live/client/me"},
{"GET", "/live/client/balance"},
{"POST", "/live/client/auth/logout"},
{"GET", "/live/rooms/:id/follow"},
{"POST", "/live/rooms/:id/follow"},
{"DELETE", "/live/rooms/:id/follow"},
{"POST", "/live/rooms/:id/gifts"},
{"POST", "/live/recharge/orders"},
{"GET", "/live/recharge/orders/:orderNo"},
{"GET", "/live/recharge/orders/:orderNo/status"},
}
for _, route := range private {
descriptor, ok := Lookup(route.method, route.path)
if !ok || descriptor.Public {
t.Errorf("%s %s must require login: found=%v descriptor=%+v", route.method, route.path, ok, descriptor)
}
}
}
func TestLiveMoneyChangingRoutesAreAudited(t *testing.T) {
for _, route := range []struct{ method, path string }{
{"POST", "/live/rooms/:id/gifts"},
{"POST", "/live/recharge/orders"},
{"POST", "/live/client/auth/logout"},
} {
if !ShouldAudit(route.method, route.path) {
t.Errorf("%s %s must be audited", route.method, route.path)
}
}
}