package testkit

import (
	"net/http"
	"testing"

	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/AgentTeam/internal/api/dto"
)

// AuthHeaders returns an Authorization header map for browser API HTTP tests.
func AuthHeaders(accessToken string) map[string]string {
	return map[string]string{"Authorization": "Bearer " + accessToken}
}

// WorkspaceHeaders returns Authorization plus X-Workspace-Id headers for browser API HTTP tests.
func WorkspaceHeaders(accessToken string, workspaceID string) map[string]string {
	headers := AuthHeaders(accessToken)
	headers[HeaderWorkspaceID] = workspaceID
	return headers
}

// RegisterUserForOrganizationTests registers a user through the public auth API.
func RegisterUserForOrganizationTests(t *testing.T, client *http.Client, baseURL string, email string, name string) dto.AuthTokensResponse {
	t.Helper()

	var auth dto.AuthTokensResponse
	response := DoJSON(t, client, http.MethodPost, baseURL+"/api/v1/auth/register", map[string]any{
		"email":    email,
		"password": TestUserPassword,
		"name":     name,
	}, nil, &auth)
	require.Equal(t, http.StatusOK, response.StatusCode)
	require.NotEmpty(t, auth.AccessToken)
	return auth
}

// DefaultProviderWatchTemplate mirrors the provider-watch default message template.
const DefaultProviderWatchTemplate = "{{event_summary}}\n{{resource_url}}{{external_body_blockquote}}"
