Files
aiturk-hermes-ide/apps/desktop/src/lib/turkservis-combo-details.test.ts
T

26 lines
1.2 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { turkservisComboDetailsUrl } from './turkservis-combo-details'
describe('TurkServis read-only details link', () => {
it('preserves the exact model and drops API query parameters', () => {
const result = turkservisComboDetailsUrl('https://ai.turkservis.online/v1?key=private', '9router-Team & A')!
expect(new URL(result).searchParams.get('model')).toBe('9router-Team & A')
expect(new URL(result).origin).toBe('https://turkservis.online')
expect(result).not.toContain('private')
})
it.each([undefined, '', 'invalid', 'http://ai.turkservis.online/v1',
'https://ai.turkservis.online.evil.test/v1', 'https://other.test/v1',
'https://user:secret@ai.turkservis.online/v1', 'https://ai.turkservis.online:9090/v1'
])('does not offer details for an unrelated or unsafe endpoint: %s', apiUrl => {
expect(turkservisComboDetailsUrl(apiUrl, 'Team')).toBeNull()
})
it('rejects missing and oversized model identities', () => {
expect(turkservisComboDetailsUrl('https://turkservis.online/v1', '')).toBeNull()
expect(turkservisComboDetailsUrl('https://turkservis.online/v1', 'x'.repeat(129))).toBeNull()
})
})