e2e/deployment-smoke.spec.ts
Rama main · réplica de lectura del repositorio original.
import { configzConfigResponseSchema } from '../shared/api/configz'
import { realmrootApiVersion } from '../shared/api/openapi'
import { expect, test } from './fixtures'
const expectedVersion = process.env.PVT_EXPECTED_VERSION ?? realmrootApiVersion
test.describe('deployed public surface', { tag: '@production-safe' }, () => {
test('[spec: platform-onboarding/api-health-smoke] reports service liveness', async ({
request,
configuredRealm: _,
}) => {
const response = await request.get('/api/health')
expect(response.status()).toBe(200)
expect(await response.json()).toEqual({ ok: true, service: 'realmroot' })
})
test('publishes coherent public configuration and discovery metadata', async ({
request,
baseURL,
realmrootTarget,
configuredRealm: _,
}) => {
if (!baseURL) throw new Error('Playwright baseURL is required.')
const origin = new URL(baseURL).origin
const configResponse = await request.get('/api/configz')
expect(configResponse.status()).toBe(200)
const config = configzConfigResponseSchema.parse(await configResponse.json())
expect(config.oidc.issuer).toBe(`${origin}/api/auth`)
expect(config.oidc.discoveryUrl).toBe(`${origin}/api/auth/.well-known/openid-configuration`)
const [oidcResponse, oidcAliasResponse, oauthResponse, resourceResponse, agentResponse] = await Promise.all([
request.get('/api/auth/.well-known/openid-configuration'),
request.get('/.well-known/openid-configuration/api/auth'),
request.get('/.well-known/oauth-authorization-server/api/auth'),
request.get('/.well-known/oauth-protected-resource/api'),
request.get('/.well-known/agent-configuration'),
])
for (const [path, response] of [
['/api/auth/.well-known/openid-configuration', oidcResponse],
['/.well-known/openid-configuration/api/auth', oidcAliasResponse],
['/.well-known/oauth-authorization-server/api/auth', oauthResponse],
['/.well-known/oauth-protected-resource/api', resourceResponse],
['/.well-known/agent-configuration', agentResponse],
] as const) {
expect(response.status(), path).toBe(200)
}
const oidc = (await oidcResponse.json()) as Record<string, unknown>
expect(oidc).toMatchObject({
issuer: `${origin}/api/auth`,
authorization_endpoint: `${origin}/api/auth/oauth2/authorize`,
device_authorization_endpoint: `${origin}/api/auth/device/code`,
token_endpoint: `${origin}/api/auth/oauth2/token`,
jwks_uri: `${origin}/api/auth/jwks`,
code_challenge_methods_supported: ['S256'],
dpop_signing_alg_values_supported: ['ES256', 'EdDSA'],
})
expect(await oidcAliasResponse.json()).toEqual(oidc)
expect(await oauthResponse.json()).toMatchObject({
issuer: `${origin}/api/auth`,
authorization_endpoint: `${origin}/api/auth/oauth2/authorize`,
device_authorization_endpoint: `${origin}/api/auth/device/code`,
token_endpoint: `${origin}/api/auth/oauth2/token`,
jwks_uri: `${origin}/api/auth/jwks`,
code_challenge_methods_supported: ['S256'],
dpop_signing_alg_values_supported: ['ES256', 'EdDSA'],
agent_profile_uri_template: `${origin}/api/public/agents/{subject}`,
})
expect(await resourceResponse.json()).toMatchObject({
resource: `${origin}/api`,
authorization_servers: [`${origin}/api/auth`],
bearer_methods_supported: ['header'],
dpop_signing_alg_values_supported: ['ES256', 'EdDSA'],
dpop_bound_access_tokens_required: false,
scopes_supported: expect.arrayContaining(['agent:read', 'users:read', 'resource-servers:write']),
})
expect(await agentResponse.json()).toMatchObject({
agent_identity_issuer: `${origin}/api/auth`,
agent_enrollment_endpoint: `${origin}/api/agent/enrollments`,
agent_endpoint: `${origin}/api/agent`,
agent_profile_uri_template: `${origin}/api/public/agents/{subject}`,
agent_token_endpoint: `${origin}/api/auth/oauth2/token`,
agent_jwks_uri: `${origin}/api/auth/jwks`,
})
if (realmrootTarget === 'production') {
const skillsResponse = await request.get('/.well-known/agent-skills/index.json')
expect(skillsResponse.status()).toBe(200)
expect(await skillsResponse.json()).toMatchObject({
$schema: 'https://schemas.agentskills.io/discovery/0.2.0/schema.json',
skills: expect.arrayContaining([
expect.objectContaining({ name: 'integrate-realmroot-application', type: 'archive' }),
expect.objectContaining({ name: 'integrate-realmroot-resource-server', type: 'archive' }),
expect.objectContaining({ name: 'realmroot', type: 'archive' }),
]),
})
}
const jwksResponse = await request.get('/.well-known/jwks.json')
expect(jwksResponse.status()).toBe(200)
const jwks = (await jwksResponse.json()) as { keys?: Array<{ kid?: unknown; kty?: unknown }> }
expect(jwks.keys).toBeDefined()
expect(jwks.keys).not.toHaveLength(0)
for (const key of jwks.keys ?? []) {
expect(key.kid).toEqual(expect.any(String))
expect(key.kty).toEqual(expect.any(String))
}
const jwksAliasResponse = await request.get('/api/auth/jwks')
expect(jwksAliasResponse.status()).toBe(200)
expect(await jwksAliasResponse.json()).toEqual(jwks)
expect((await request.head('/.well-known/jwks.json')).status()).toBe(200)
})
test('[spec: management-api/management-openapi-discovery] publishes the unified OpenAPI document', async ({
request,
configuredRealm: _,
}) => {
const response = await request.get('/api/openapi.json')
expect(response.status()).toBe(200)
expect(await response.json()).toMatchObject({
openapi: '3.1.0',
info: {
title: 'Realmroot API',
version: expectedVersion,
},
})
})
})