58 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|