package jwk

import (
	"testing"

	"github.com/pkg/errors"
)

func TestJWK(t *testing.T) {
	privateKey, err := Generate(DefaultKeySize)
	if err != nil {
		t.Fatalf("%+v", errors.WithStack(err))
	}

	keySet, err := PublicKeySet(privateKey)
	if err != nil {
		t.Fatalf("%+v", errors.WithStack(err))
	}

	metadata := map[string]any{
		"Foo":  "bar",
		"Test": 1,
	}

	signature, err := Sign(privateKey, metadata)
	if err != nil {
		t.Fatalf("%+v", errors.WithStack(err))
	}

	t.Logf("Signature: %s", signature)

	matches, err := Verify(keySet, signature, metadata)
	if err != nil {
		t.Fatalf("%+v", errors.WithStack(err))
	}

	if !matches {
		t.Error("signature should match")
	}
}