kt-template-admin/test/router/admin-sso.spec.ts

38 lines
1.1 KiB
TypeScript

import {
ADMIN_SSO_DEFAULT_REDIRECT,
isAdminSsoRequest,
resolveAdminSsoRedirect,
} from '@test-source/apps/web-antdv-next/src/router/admin-sso';
import { describe, expect, it } from 'vitest';
describe('admin SSO route helpers', () => {
it('recognizes only the explicit SSO bootstrap flag', () => {
expect(isAdminSsoRequest('1')).toBe(true);
expect(isAdminSsoRequest(['1'])).toBe(true);
expect(isAdminSsoRequest('true')).toBe(false);
expect(isAdminSsoRequest(undefined)).toBe(false);
});
it('accepts the Blog management route in plain or encoded form', () => {
expect(resolveAdminSsoRedirect('/blog/article')).toBe(
ADMIN_SSO_DEFAULT_REDIRECT,
);
expect(resolveAdminSsoRedirect('%2Fblog%2Farticle')).toBe(
ADMIN_SSO_DEFAULT_REDIRECT,
);
});
it.each([
'https://evil.example/',
'https%3A%2F%2Fevil.example%2F',
'//evil.example/',
'%2F%2Fevil.example%2F',
'/qqbot/account',
'/blog/article/61',
'broken',
undefined,
])('falls back to the fixed Blog management route for %s', (value) => {
expect(resolveAdminSsoRedirect(value)).toBe(ADMIN_SSO_DEFAULT_REDIRECT);
});
});