package sanitize

import (
	"strings"
	"testing"
)

func TestSanitizeTextAnthropicBilling(t *testing.T) {
	input := "x-anthropic-billing-header: abc123\nHello"
	got := SanitizeText(input)
	if strings.Contains(got, "x-anthropic-billing-header") {
		t.Errorf("billing header not removed: %q", got)
	}
}

func TestSanitizeTextClaudeCode(t *testing.T) {
	input := "I am Claude Code assistant"
	got := SanitizeText(input)
	if strings.Contains(got, "Claude Code") {
		t.Errorf("'Claude Code' not replaced: %q", got)
	}
	if !strings.Contains(got, "Cursor") {
		t.Errorf("'Cursor' not present in output: %q", got)
	}
}

func TestSanitizeTextAnthropic(t *testing.T) {
	input := "Powered by Anthropic's technology and anthropic.com"
	got := SanitizeText(input)
	if strings.Contains(got, "Anthropic") {
		t.Errorf("'Anthropic' not replaced: %q", got)
	}
	if strings.Contains(got, "anthropic.com") {
		t.Errorf("'anthropic.com' not replaced: %q", got)
	}
}

func TestSanitizeTextNoChange(t *testing.T) {
	input := "Hello, this is a normal message about cursor."
	got := SanitizeText(input)
	if got != input {
		t.Errorf("unexpected change: %q -> %q", input, got)
	}
}

func TestSanitizeMessages(t *testing.T) {
	messages := []interface{}{
		map[string]interface{}{"role": "user", "content": "Ask Claude Code something"},
		map[string]interface{}{"role": "system", "content": "Use Anthropic's tools"},
	}
	result := SanitizeMessages(messages)

	for _, raw := range result {
		m := raw.(map[string]interface{})
		c := m["content"].(string)
		if strings.Contains(c, "Claude Code") || strings.Contains(c, "Anthropic") {
			t.Errorf("found unsanitized content: %q", c)
		}
	}
}
