package agentteambridge

import (
	"context"
	"io"
	"net/http"
	"net/http/httptest"
	"testing"

	"github.com/tidbcloud/AgentTeam/internal/apr/types"
	"github.com/tidbcloud/AgentTeam/internal/store/organization"

	"github.com/stretchr/testify/require"
)

func TestBuildForwardAPRProviderPrefersSpecificBaseURLsForChat(t *testing.T) {
	t.Helper()

	var receivedPath string
	upstream := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
		receivedPath = request.URL.Path
		writer.Header().Set("Content-Type", "application/json")
		_, _ = writer.Write([]byte(`{"ok":true}`))
	}))
	defer upstream.Close()

	providerView := organization.OrganizationProviderView{
		ID:         "opvd_1",
		BaseURL:    upstream.URL + "/root",
		DriverKind: "forward",
		Endpoints: organization.OrganizationProviderEndpoints{
			ResponsesBaseURL: upstream.URL + "/v1",
		},
		Capabilities: organization.OrganizationProviderCapabilities{
			OpenAICompatible:    true,
			ResponsesCompatible: true,
		},
	}

	built, err := buildForwardAPRProvider(providerView, []string{"zhipu/glm-5.1"}, []organization.OrganizationProviderTokenSecret{
		{Token: "token-1"},
	}, upstream.Client())
	require.NoError(t, err)

	provider, ok := built.provider.(types.OpenAICompatible)
	require.True(t, ok)

	resp, err := provider.ChatCompletion(context.Background(), http.Header{}, []byte(`{"model":"zhipu/glm-5.1","messages":[{"role":"user","content":"hello"}]}`))
	require.NoError(t, err)
	defer resp.Body.Close()
	_, _ = io.Copy(io.Discard, resp.Body)

	require.Equal(t, "/v1/chat/completions", receivedPath)
}
