package avatarstore

import (
	"errors"
	"strings"
	"testing"
)

var testKey = strings.Repeat("0", 64) + ".png"

func TestFileStoreRoundTrip(t *testing.T) {
	root := t.TempDir()
	store := NewFileStore(root)
	if err := store.Put(t.Context(), testKey, []byte("image")); err != nil {
		t.Fatalf("Put: %v", err)
	}
	got, err := store.Get(t.Context(), testKey)
	if err != nil {
		t.Fatalf("Get: %v", err)
	}
	if string(got) != "image" {
		t.Fatalf("Get = %q, want image", got)
	}
	if err := store.Delete(t.Context(), testKey); err != nil {
		t.Fatalf("Delete: %v", err)
	}
	if _, err := store.Get(t.Context(), testKey); !errors.Is(err, ErrNotFound) {
		t.Fatalf("Get after Delete = %v, want ErrNotFound", err)
	}
}

func TestFileStoreRejectsUnsafeKey(t *testing.T) {
	store := NewFileStore(t.TempDir())
	if err := store.Put(t.Context(), "../../outside.png", []byte("bad")); err == nil {
		t.Fatal("Put accepted unsafe key")
	}
}
