package source
import (
"context"
"os"
"path/filepath"
"strings"
"testing"
)
const sampleHAR = `{
"log": {
"entries": [
{
"startedDateTime": "2024-05-30T12:00:00Z",
"request": {
"method": "GET",
"url": "https://example.com/",
"httpVersion": "HTTP/1.1",
"headers": [{"name": "Host", "value": "example.com"}]
},
"response": {"status": 200, "statusText": "OK",
"httpVersion": "HTTP/1.1", "headers": [],
"content": {"text": ""}}
}
]
}
}`
func TestOpenFileHAR(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "sample.har")
if err := os.WriteFile(path, []byte(sampleHAR), 0o644); err != nil {
t.Fatal(err)
}
f, err := OpenFile(path)
if err != nil {
t.Fatal(err)
}
defer f.Close()
ev, err := f.Next(context.Background())
if err != nil {
t.Fatal(err)
}
if !strings.HasPrefix(string(ev.Payload), "GET https://example.com/ HTTP/1.1") {
t.Errorf("unexpected payload: %q", ev.Payload)
}
}
func TestOpenFileUnsupported(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "data.xyz")
if err := os.WriteFile(path, []byte("{}"), 0o644); err != nil {
t.Fatal(err)
}
if _, err := OpenFile(path); err == nil {
t.Fatal("expected error for .xyz")
}
}
func TestFileCloseNil(t *testing.T) {
f := &File{}
if err := f.Close(); err != nil {
t.Fatalf("close: %v", err)
}
}