package server import ( "net/http/httptest" "strings" "testing" "neuralhunt/internal/auth" ) func TestDecodeAuthAcceptsExtraJWKMembers(t *testing.T) { body := `{"public_jwk":{"kty":"EC","crv":"P-256","x":"abc","y":"def","ext":true,"key_ops":["verify"],"alg":"ES256","use":"sig","kid":"browser-key","vendor_future_field":"ok"}}` req := httptest.NewRequest("POST", "/api/auth/challenge", strings.NewReader(body)) var in struct { PublicJWK auth.PublicJWK `json:"public_jwk"` } if err := decodeAuth(req, &in); err != nil { t.Fatalf("decodeAuth should tolerate optional/unknown JWK metadata: %v", err) } if in.PublicJWK.Kty != "EC" || in.PublicJWK.Crv != "P-256" || in.PublicJWK.X != "abc" || in.PublicJWK.Y != "def" { t.Fatalf("core JWK fields were not decoded: %+v", in.PublicJWK) } } func TestDecodeAuthRejectsSecondJSONValue(t *testing.T) { req := httptest.NewRequest("POST", "/api/auth/challenge", strings.NewReader(`{"public_jwk":{}} {"x":1}`)) var in any if err := decodeAuth(req, &in); err == nil { t.Fatal("expected second JSON value to be rejected") } }