63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
package service
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"bsm/full/pkgs/ecmall/internal/config"
|
|
ecmallserver "bsm/full/pkgs/ecmall/internal/server"
|
|
)
|
|
|
|
// TestExposeRegistersPlatformModules guards the aggregate registry: the
|
|
// platform modules (ads, cms, feedback, fts, logs, mgt) must contribute their
|
|
// gRPC services and their native REST routes through service.Expose, and the
|
|
// gRPC-only modules must keep contributing theirs.
|
|
func TestExposeRegistersPlatformModules(t *testing.T) {
|
|
t.Setenv("BSM_SERVICES", "")
|
|
config.Spec.Services = []string{"all"}
|
|
|
|
srv, err := ecmallserver.New("0123456789abcdef0123456789abcdef", 3600, nil)
|
|
if err != nil {
|
|
t.Fatalf("new server: %v", err)
|
|
}
|
|
if err := Expose(srv); err != nil {
|
|
t.Fatalf("expose: %v", err)
|
|
}
|
|
|
|
services := make(map[string]bool)
|
|
for name := range srv.GRPC.GetServiceInfo() {
|
|
services[name] = true
|
|
}
|
|
for _, prefix := range []string{"ads.", "cms.", "feedback.", "address.", "mall.", "market.", "order.", "passport.", "sender.", "wallet.", "initial."} {
|
|
if !hasPrefix(services, prefix) {
|
|
t.Errorf("gRPC service with prefix %q is not registered", prefix)
|
|
}
|
|
}
|
|
|
|
routes := make(map[string]bool)
|
|
for _, route := range srv.HTTP.Routes() {
|
|
routes[route.Method+" "+route.Path] = true
|
|
}
|
|
for _, path := range []string{
|
|
"GET /rest/fts/ping",
|
|
"GET /rest/fts/config",
|
|
"POST /rest/fts/uploader",
|
|
"GET /rest/logs/ping",
|
|
"GET /rest/mgt/ping",
|
|
"POST /rest/mgt/login",
|
|
} {
|
|
if !routes[path] {
|
|
t.Errorf("native REST route %q is not registered", path)
|
|
}
|
|
}
|
|
}
|
|
|
|
func hasPrefix(names map[string]bool, prefix string) bool {
|
|
for name := range names {
|
|
if strings.HasPrefix(name, prefix) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|