package keyfunc_test

import (
	"encoding/json"
	"errors"
	"testing"

	"github.com/golang-jwt/jwt/v5"

	"github.com/MicahParks/keyfunc/v2"
)

func TestBadCurve(t *testing.T) {
	const (
		badJWKS = `{"keys":[{"kty":"EC","crv":"BAD","x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4","y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM","use":"sig","kid":"1"}]}`
		someJWT = `eyJhbGciOiJFUzI1NiIsImtpZCI6IjEiLCJ0eXAiOiJKV1QifQ.e30.Q1EeyWUv6XEA0gMLwTFoNhx7Hq1MbVwjI2k9FZPSa-myKW1wYn1X6rHtRyuV-2MEzvimCskFD-afL7UzvdWBQg`
	)

	jwks, err := keyfunc.NewJSON(json.RawMessage(badJWKS))
	if err != nil {
		t.Fatalf("Failed to create JWKS from JSON: %v", err)
	}

	// The number of parsed keys should be 0.

	_, err = jwt.Parse(someJWT, jwks.Keyfunc)
	if !errors.Is(err, keyfunc.ErrKIDNotFound) {
		t.Fatalf("Expected ErrKIDNotFound, got %v", err)
	}
}
