39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
vi.mock('@/lib/config', () => ({
|
|
getEnv: () => ({
|
|
ADMIN_TOKEN: 'test-admin-token',
|
|
}),
|
|
}));
|
|
|
|
import {
|
|
ORDER_STATUS_ACCESS_QUERY_KEY,
|
|
buildOrderResultUrl,
|
|
createOrderStatusAccessToken,
|
|
verifyOrderStatusAccessToken,
|
|
} from '@/lib/order/status-access';
|
|
|
|
describe('order status access token helpers', () => {
|
|
it('creates and verifies a token bound to the order id', () => {
|
|
const token = createOrderStatusAccessToken('order-001');
|
|
expect(token).toBeTruthy();
|
|
expect(verifyOrderStatusAccessToken('order-001', token)).toBe(true);
|
|
expect(verifyOrderStatusAccessToken('order-002', token)).toBe(false);
|
|
});
|
|
|
|
it('rejects missing or malformed tokens', () => {
|
|
expect(verifyOrderStatusAccessToken('order-001', null)).toBe(false);
|
|
expect(verifyOrderStatusAccessToken('order-001', undefined)).toBe(false);
|
|
expect(verifyOrderStatusAccessToken('order-001', 'short')).toBe(false);
|
|
});
|
|
|
|
it('builds a result url with order id and access token', () => {
|
|
const url = new URL(buildOrderResultUrl('https://pay.example.com', 'order-009'));
|
|
expect(url.origin + url.pathname).toBe('https://pay.example.com/pay/result');
|
|
expect(url.searchParams.get('order_id')).toBe('order-009');
|
|
const token = url.searchParams.get(ORDER_STATUS_ACCESS_QUERY_KEY);
|
|
expect(token).toBeTruthy();
|
|
expect(verifyOrderStatusAccessToken('order-009', token)).toBe(true);
|
|
});
|
|
});
|