32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
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")
|
|
}
|
|
}
|