(t *testing.T)
| 2707 | } |
| 2708 | |
| 2709 | func TestUnixSocketClientBridgeMethods(t *testing.T) { |
| 2710 | t.Parallel() |
| 2711 | |
| 2712 | client := &unixSocketClient{ |
| 2713 | socketPath: "/tmp/agh.sock", |
| 2714 | httpClient: &http.Client{ |
| 2715 | Transport: roundTripperFunc(func(req *http.Request) (*http.Response, error) { |
| 2716 | switch { |
| 2717 | case req.Method == http.MethodGet && req.URL.Path == "/api/bridges": |
| 2718 | return newHTTPResponse( |
| 2719 | http.StatusOK, |
| 2720 | `{"bridges":[{"id":"brg-a","scope":"global","platform":"telegram","extension_name":"ext-telegram","display_name":"Support","enabled":true,"status":"ready","routing_policy":{"include_peer":true},"created_at":"2026-04-11T12:00:00Z","updated_at":"2026-04-11T12:00:00Z"}]}`, |
| 2721 | ), nil |
| 2722 | case req.Method == http.MethodPost && req.URL.Path == "/api/bridges": |
| 2723 | var payload contract.CreateBridgeRequest |
| 2724 | if err := json.NewDecoder(req.Body).Decode(&payload); err != nil { |
| 2725 | t.Fatalf("json.Decode(create bridge body) error = %v", err) |
| 2726 | } |
| 2727 | if payload.Scope != bridgepkg.ScopeGlobal || |
| 2728 | payload.WorkspaceID != "" || |
| 2729 | payload.Platform != "telegram" || |
| 2730 | payload.ExtensionName != "ext-telegram" || |
| 2731 | payload.DisplayName != "Support" || |
| 2732 | !payload.Enabled || |
| 2733 | !reflect.DeepEqual(payload.RoutingPolicy, bridgepkg.RoutingPolicy{IncludePeer: true}) || |
| 2734 | len(payload.DeliveryDefaults) != 0 { |
| 2735 | t.Fatalf("create bridge payload = %#v", payload) |
| 2736 | } |
| 2737 | return newHTTPResponse( |
| 2738 | http.StatusCreated, |
| 2739 | `{"bridge":{"id":"brg-a","scope":"global","platform":"telegram","extension_name":"ext-telegram","display_name":"Support","enabled":true,"status":"starting","routing_policy":{"include_peer":true},"created_at":"2026-04-11T12:00:00Z","updated_at":"2026-04-11T12:00:00Z"}}`, |
| 2740 | ), nil |
| 2741 | case req.Method == http.MethodGet && req.URL.Path == "/api/bridges/brg-a": |
| 2742 | return newHTTPResponse( |
| 2743 | http.StatusOK, |
| 2744 | `{"bridge":{"id":"brg-a","scope":"global","platform":"telegram","extension_name":"ext-telegram","display_name":"Support","enabled":true,"status":"ready","routing_policy":{"include_peer":true},"created_at":"2026-04-11T12:00:00Z","updated_at":"2026-04-11T12:00:00Z"}}`, |
| 2745 | ), nil |
| 2746 | case req.Method == http.MethodPatch && req.URL.Path == "/api/bridges/brg-a": |
| 2747 | var payload contract.UpdateBridgeRequest |
| 2748 | if err := json.NewDecoder(req.Body).Decode(&payload); err != nil { |
| 2749 | t.Fatalf("json.Decode(update bridge body) error = %v", err) |
| 2750 | } |
| 2751 | if payload.DisplayName == nil || |
| 2752 | *payload.DisplayName != "Support Ops" || |
| 2753 | payload.RoutingPolicy == nil || |
| 2754 | !reflect.DeepEqual( |
| 2755 | *payload.RoutingPolicy, |
| 2756 | bridgepkg.RoutingPolicy{IncludePeer: true, IncludeThread: true}, |
| 2757 | ) || |
| 2758 | payload.DeliveryDefaults != nil { |
| 2759 | t.Fatalf("update bridge payload = %#v, want updated display name", payload) |
| 2760 | } |
| 2761 | return newHTTPResponse( |
| 2762 | http.StatusOK, |
| 2763 | `{"bridge":{"id":"brg-a","scope":"global","platform":"telegram","extension_name":"ext-telegram","display_name":"Support Ops","enabled":true,"status":"ready","routing_policy":{"include_peer":true,"include_thread":true},"created_at":"2026-04-11T12:00:00Z","updated_at":"2026-04-11T12:05:00Z"}}`, |
| 2764 | ), nil |
| 2765 | case req.Method == http.MethodPost && req.URL.Path == "/api/bridges/brg-a/enable": |
| 2766 | return newHTTPResponse( |
nothing calls this directly
no test coverage detected