gogcli/internal/tracking/pixel_test.go

76 lines
1.7 KiB
Go

package tracking
import (
"strings"
"testing"
)
func TestGeneratePixelURL(t *testing.T) {
key, _ := GenerateKey()
cfg := &Config{
Enabled: true,
WorkerURL: "https://test.workers.dev",
TrackingKey: key,
}
pixelURL, blob, err := GeneratePixelURL(cfg, "test@example.com", "Hello World")
if err != nil {
t.Fatalf("GeneratePixelURL failed: %v", err)
}
if !strings.HasPrefix(pixelURL, "https://test.workers.dev/p/") {
t.Errorf("Unexpected URL prefix: %s", pixelURL)
}
if !strings.HasSuffix(pixelURL, ".gif") {
t.Errorf("URL should end with .gif: %s", pixelURL)
}
if blob == "" {
t.Error("Blob should not be empty")
}
}
func TestGeneratePixelURLNotConfigured(t *testing.T) {
cfg := &Config{Enabled: false}
_, _, err := GeneratePixelURL(cfg, "test@example.com", "Hello")
if err == nil {
t.Error("Expected error for unconfigured tracking")
}
}
func TestGeneratePixelHTML(t *testing.T) {
html := GeneratePixelHTML("https://test.workers.dev/p/abc123.gif")
if !strings.Contains(html, `src="https://test.workers.dev/p/abc123.gif"`) {
t.Errorf("HTML missing src: %s", html)
}
if !strings.Contains(html, `width="1"`) {
t.Errorf("HTML missing width: %s", html)
}
if !strings.Contains(html, `style="display:none`) {
t.Errorf("HTML missing display:none: %s", html)
}
}
func TestHashSubjectConsistent(t *testing.T) {
h1 := hashSubject("Hello World")
h2 := hashSubject("Hello World")
h3 := hashSubject("Different Subject")
if h1 != h2 {
t.Error("Same subject should produce same hash")
}
if h1 == h3 {
t.Error("Different subjects should produce different hashes")
}
if len(h1) != 6 {
t.Errorf("Hash should be 6 chars, got %d", len(h1))
}
}