| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package service
- import (
- "encoding/json"
- "testing"
- "github.com/mhsanaei/3x-ui/v3/internal/util/json_util"
- )
- func TestEnsureAPIServices(t *testing.T) {
- // legacy template without RoutingService gets it injected
- out := ensureAPIServices(json_util.RawMessage(`{"services":["HandlerService","LoggerService","StatsService"],"tag":"api"}`))
- var parsed struct {
- Services []string `json:"services"`
- Tag string `json:"tag"`
- }
- if err := json.Unmarshal(out, &parsed); err != nil {
- t.Fatal(err)
- }
- want := map[string]bool{"HandlerService": true, "StatsService": true, "RoutingService": true, "LoggerService": true}
- if len(parsed.Services) != 4 {
- t.Fatalf("expected 4 services, got %v", parsed.Services)
- }
- for _, svc := range parsed.Services {
- if !want[svc] {
- t.Fatalf("unexpected service %q", svc)
- }
- }
- if parsed.Tag != "api" {
- t.Fatalf("tag must be preserved, got %q", parsed.Tag)
- }
- // complete api block is returned unchanged (no marshal churn)
- full := json_util.RawMessage(`{"services":["HandlerService","StatsService","RoutingService"],"tag":"api"}`)
- if got := ensureAPIServices(full); string(got) != string(full) {
- t.Fatalf("complete api block must pass through untouched, got %s", got)
- }
- // absent api block stays absent
- if got := ensureAPIServices(nil); got != nil {
- t.Fatalf("nil api block must stay nil, got %s", got)
- }
- }
|