Files
makelore/tests/unit/app-deep-link.test.ts

43 lines
2.0 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
findNianCodeDeepLinkUrl,
parseNianCodeDeepLinkUrl,
queueCloudAgentLink,
takeCloudAgentRoute,
} from '@electron/main/app-deep-link';
describe('NianCode app deep links', () => {
it('opens only an agent locator and preserves it until Renderer is ready', () => {
const slug = 'ml-' + 'a'.repeat(32);
expect(parseNianCodeDeepLinkUrl('niancode://agents/' + slug)).toMatchObject({ type: 'cloud-agent', slug });
expect(parseNianCodeDeepLinkUrl('niancode://agents/' + slug + '?token=secret')).toBeNull();
expect(parseNianCodeDeepLinkUrl('niancode://agents/../../settings')).toBeNull();
queueCloudAgentLink(slug);
expect(takeCloudAgentRoute()).toBe('/cloud-agents/shared/' + slug);
expect(takeCloudAgentRoute()).toBeNull();
});
it('parses desktop auth callback request ids from niancode links', () => {
expect(parseNianCodeDeepLinkUrl('niancode://auth/callback?request_id=desktop-request-id')).toEqual({
type: 'desktop-auth-callback',
requestId: 'desktop-request-id',
url: 'niancode://auth/callback?request_id=desktop-request-id',
});
});
it('rejects links that do not target the desktop auth callback', () => {
expect(parseNianCodeDeepLinkUrl('https://square.nianxx.cn/#desktop-auth?request_id=1')).toBeNull();
expect(parseNianCodeDeepLinkUrl('niancode://auth/callback')).toBeNull();
expect(parseNianCodeDeepLinkUrl('niancode://auth/callback?request_id=')).toBeNull();
expect(parseNianCodeDeepLinkUrl('niancode://auth/callback?request_id=1&access_token=secret')).toBeNull();
expect(parseNianCodeDeepLinkUrl('niancode://settings')).toBeNull();
});
it('finds the app link from platform launch arguments', () => {
expect(findNianCodeDeepLinkUrl([
'C:\\Program Files\\NianCode\\NianCode.exe',
'--flag',
'niancode://auth/callback?request_id=desktop-request-id',
])).toBe('niancode://auth/callback?request_id=desktop-request-id');
});
});