package githttp

import (
	"crypto/sha256"
	"encoding/hex"
	"os"
	"path/filepath"
	"testing"
)

func TestLFSObjectFileValidation(t *testing.T) {
	payload := []byte("lfs-object")
	sum := sha256.Sum256(payload)
	oid := hex.EncodeToString(sum[:])
	repository := t.TempDir()
	path := lfsObjectPath(repository, oid)
	if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
		t.Fatal(err)
	}
	if err := os.WriteFile(path, payload, 0o444); err != nil {
		t.Fatal(err)
	}
	if !validLFSOID(oid) || !validLFSObjectFile(path, oid, int64(len(payload))) {
		t.Fatal("valid content-addressed LFS object was rejected")
	}
	if validLFSObjectFile(path, oid, int64(len(payload)+1)) {
		t.Fatal("invalid LFS size was accepted")
	}
}
