Some checks failed
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
import { SsoController } from './sso.controller.js';
|
|
|
|
describe('SsoController', () => {
|
|
afterEach(() => {
|
|
vi.unstubAllEnvs();
|
|
});
|
|
|
|
it('lists configured OIDC providers', () => {
|
|
vi.stubEnv('WORKOS_CLIENT_ID', 'workos-client');
|
|
vi.stubEnv('WORKOS_CLIENT_SECRET', 'workos-secret');
|
|
vi.stubEnv('WORKOS_ISSUER', 'https://auth.workos.com/sso/client_123');
|
|
|
|
const controller = new SsoController();
|
|
const providers = controller.list();
|
|
|
|
expect(providers.find((provider) => provider.id === 'workos')).toMatchObject({
|
|
configured: true,
|
|
loginMode: 'oidc',
|
|
callbackPath: '/api/auth/oauth2/callback/workos',
|
|
teamSync: { enabled: true, claim: 'organization_id' },
|
|
});
|
|
});
|
|
|
|
it('prefers SAML fallback for Keycloak when only the SAML login URL is configured', () => {
|
|
vi.stubEnv('KEYCLOAK_SAML_LOGIN_URL', 'https://sso.example.com/realms/mosaic/protocol/saml');
|
|
|
|
const controller = new SsoController();
|
|
const providers = controller.list();
|
|
|
|
expect(providers.find((provider) => provider.id === 'keycloak')).toMatchObject({
|
|
configured: true,
|
|
loginMode: 'saml',
|
|
samlFallback: {
|
|
configured: true,
|
|
loginUrl: 'https://sso.example.com/realms/mosaic/protocol/saml',
|
|
},
|
|
});
|
|
});
|
|
});
|