server/kubernetes-authentication-fixture.test.ts
Rama main · réplica de lectura del repositorio original.
import { readFileSync } from 'node:fs'
import { realmrootOrganizationClaim } from '@shared/oauth-token-profile'
import { describe, expect, it } from 'vitest'
import { parse } from 'yaml'
describe('Kubernetes Realmroot authentication fixture', () => {
it('maps the verified OIDC identity contract to Kubernetes users and groups', () => {
const fixture = parse(
readFileSync(new URL('../examples/kubernetes/realmroot-authentication.yaml', import.meta.url), 'utf8'),
) as {
apiVersion: string
kind: string
jwt: Array<{
issuer: { audiences: string[] }
claimValidationRules: Array<{ expression: string }>
claimMappings: { username: { claim: string }; groups: { claim: string }; uid: { claim: string } }
}>
}
const authentication = fixture.jwt[0]!
expect(fixture).toMatchObject({ apiVersion: 'apiserver.config.k8s.io/v1', kind: 'AuthenticationConfiguration' })
expect(authentication.issuer.audiences).toEqual(['KUBERNETES_APPLICATION_CLIENT_ID'])
expect(authentication.claimValidationRules.map(({ expression }) => expression)).toEqual(
expect.arrayContaining([
`claims['${realmrootOrganizationClaim}'] == 'REALMROOT_ORGANIZATION_ID'`,
'has(claims.act) && has(claims.act.iss) && has(claims.act.sub)',
]),
)
expect(authentication.claimMappings).toMatchObject({
username: { claim: 'sub' },
groups: { claim: 'groups' },
uid: { claim: 'sub' },
})
})
})