package webhook_test

import (
	"testing"

	"bit.admedia.com/scm/ad/adpilot-indexing-repo-sync.com/internal/webhook"
)

func TestVerifySignatureValid(t *testing.T) {
	body := []byte(`{"eventKey":"repo:refs_changed"}`)
	secret := "test-secret"
	sig := webhook.SignBody(secret, body)

	if err := webhook.VerifySignature(secret, body, sig); err != nil {
		t.Fatalf("VerifySignature: %v", err)
	}
}

func TestVerifySignatureInvalid(t *testing.T) {
	body := []byte(`{"eventKey":"repo:refs_changed"}`)
	if err := webhook.VerifySignature("secret", body, webhook.SignBody("other", body)); err == nil {
		t.Fatal("expected invalid signature error")
	}
}

func TestVerifySignatureMissing(t *testing.T) {
	if err := webhook.VerifySignature("secret", []byte("{}"), ""); err == nil {
		t.Fatal("expected missing signature error")
	}
}

func TestVerifySignatureWrongAlgorithm(t *testing.T) {
	if err := webhook.VerifySignature("secret", []byte("{}"), "sha1=abc"); err == nil {
		t.Fatal("expected invalid signature error")
	}
}
