import { HttpPublicKeyResolver } from '../../src/resolvers/httpPublicKeyResolver.js'; import http from 'http'; const TEST_PORT = 56789; const BASE_URL = `http://localhost:${TEST_PORT}`; describe('HttpPublicKeyResolver (integration)', () => { let server: http.Server; const kid = 'test-key-id'; const jwk = { kty: 'EC', kid, use: 'sig', crv: 'P-256', x: 'x-coord', y: 'y-coord', x5c: ['cert'], }; const jwksResponse = { keys: [jwk] }; beforeAll((done) => { server = http.createServer((req, res) => { if (req.url === '/jwks') { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify(jwksResponse)); } else { res.writeHead(404); res.end(); } }); server.listen(TEST_PORT, done); }); afterAll((done) => { server.close(done); }); it('should return a public key with x, y and correct kid (integration)', async () => { const resolver = new HttpPublicKeyResolver(); const result = await resolver.getPublicKeyJwk(kid, BASE_URL); expect(result.kid).toBe(kid); expect(result.x).toBeDefined(); expect(result.y).toBeDefined(); }); it('should throw an error if the kid is not found (integration)', async () => { const resolver = new HttpPublicKeyResolver(); await expect( resolver.getPublicKeyJwk('non-existent', BASE_URL), ).rejects.toThrow('Public key not found for kid: non-existent'); }); });