2026-05-08 07:27:06 +08:00
|
|
|
package service
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"apigo.cc/go/log"
|
|
|
|
|
"testing"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestServiceRegister(t *testing.T) {
|
|
|
|
|
handler := func(req *Request, logger *log.Logger) string {
|
|
|
|
|
return "ok"
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-09 16:39:20 +08:00
|
|
|
Host("*").Register("*", "/test", handler).Auth(0).Memo("test service")
|
2026-05-08 07:27:06 +08:00
|
|
|
|
|
|
|
|
webServicesLock.RLock()
|
2026-05-09 16:39:20 +08:00
|
|
|
s := webServices["*"]["*/test"]
|
2026-05-08 07:27:06 +08:00
|
|
|
webServicesLock.RUnlock()
|
|
|
|
|
|
|
|
|
|
if s == nil {
|
|
|
|
|
t.Fatal("Service not registered")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if s.requestIndex != 0 {
|
|
|
|
|
t.Errorf("requestIndex mismatch: expected 0, got %d", s.requestIndex)
|
|
|
|
|
}
|
|
|
|
|
if s.loggerIndex != 1 {
|
|
|
|
|
t.Errorf("loggerIndex mismatch: expected 1, got %d", s.loggerIndex)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestRegexServiceRegister(t *testing.T) {
|
|
|
|
|
handler := func(args map[string]any) string {
|
|
|
|
|
return "ok"
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-09 16:39:20 +08:00
|
|
|
Host("*").Register("*", "/user/{id}", handler).Auth(0).Memo("get user")
|
2026-05-08 07:27:06 +08:00
|
|
|
|
|
|
|
|
webServicesLock.RLock()
|
|
|
|
|
found := false
|
2026-05-09 16:39:20 +08:00
|
|
|
for _, services := range regexWebServices {
|
|
|
|
|
for _, s := range services {
|
|
|
|
|
if s.path == "/user/{id}" {
|
|
|
|
|
found = true
|
|
|
|
|
if len(s.pathArgs) != 1 || s.pathArgs[0] != "id" {
|
|
|
|
|
t.Errorf("pathArgs mismatch: %v", s.pathArgs)
|
|
|
|
|
}
|
|
|
|
|
break
|
2026-05-08 07:27:06 +08:00
|
|
|
}
|
2026-05-09 16:39:20 +08:00
|
|
|
}
|
|
|
|
|
if found {
|
2026-05-08 07:27:06 +08:00
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
webServicesLock.RUnlock()
|
|
|
|
|
|
|
|
|
|
if !found {
|
|
|
|
|
t.Fatal("Regex service not registered")
|
|
|
|
|
}
|
|
|
|
|
}
|