Download server/src/__tests__/lib/endpoint-scope.test.ts from automindy/fokemal: direct link, hf CLI and curl.
- Browser
- Download file 2.61 kB
-
https://huggingface.co/spaces/automindy/fokemal/resolve/main/server/src/__tests__/lib/endpoint-scope.test.ts
- Command line
-
hf download hf://spaces/automindy/fokemal/server/src/__tests__/lib/endpoint-scope.test.ts
-
curl -L -o endpoint-scope.test.ts https://huggingface.co/spaces/automindy/fokemal/resolve/main/server/src/__tests__/lib/endpoint-scope.test.ts
2.61 kB
| import { describe, it, expect } from 'vitest'; | |
| import { | |
| endpointHandle, | |
| endpointRefMatches, | |
| endpointScopeForBaseUrl, | |
| modelStatsKey, | |
| normalizeBaseUrl, | |
| qualifiedModelMemberId, | |
| } from '../../lib/endpoint-scope.js'; | |
| describe('endpoint scope (#651)', () => { | |
| it('normalizes a base_url the way registration stores it', () => { | |
| expect(normalizeBaseUrl(' https://relay.example.com/v1/ ')).toBe('https://relay.example.com/v1'); | |
| expect(endpointScopeForBaseUrl(null)).toBe(''); | |
| expect(endpointScopeForBaseUrl('')).toBe(''); | |
| }); | |
| it('derives a stable, typable handle from the endpoint alone', () => { | |
| expect(endpointHandle('https://relay-a.example.com/v1')).toBe('relay-a.example.com-v1'); | |
| expect(endpointHandle('http://127.0.0.1:11434/v1')).toBe('127.0.0.1-11434-v1'); | |
| // Idempotent, which is what lets a handle and the raw URL both resolve. | |
| expect(endpointHandle(endpointHandle('https://relay-a.example.com/v1'))) | |
| .toBe(endpointHandle('https://relay-a.example.com/v1')); | |
| // Different endpoints never collapse onto one handle. | |
| expect(endpointHandle('https://relay-a.example.com/v1')) | |
| .not.toBe(endpointHandle('https://relay-b.example.com/v1')); | |
| }); | |
| it('leaves catalog stat keys exactly as they were', () => { | |
| expect(modelStatsKey('groq', 'llama-3.3-70b', '')).toBe('groq:llama-3.3-70b'); | |
| expect(modelStatsKey('groq', 'llama-3.3-70b', null)).toBe('groq:llama-3.3-70b'); | |
| // Un-scoped legacy custom rows keep their old bucket too. | |
| expect(modelStatsKey('custom', 'relay-model', '')).toBe('custom:relay-model'); | |
| expect(modelStatsKey('custom', 'relay-model', 'https://a/v1')) | |
| .toBe('custom:relay-model@https://a/v1'); | |
| }); | |
| it('only qualifies model ids that need it', () => { | |
| expect(qualifiedModelMemberId('groq', 'llama-3.3-70b', '')).toBeNull(); | |
| expect(qualifiedModelMemberId('custom', 'relay-model', '')).toBeNull(); | |
| expect(qualifiedModelMemberId('custom', 'deepseek-v3.1', 'https://relay-a.example.com/v1')) | |
| .toBe('custom:deepseek-v3.1#relay-a.example.com-v1'); | |
| }); | |
| it('matches an endpoint reference written either way', () => { | |
| const scope = 'https://relay-a.example.com/v1'; | |
| expect(endpointRefMatches('relay-a.example.com-v1', scope)).toBe(true); | |
| expect(endpointRefMatches(scope, scope)).toBe(true); | |
| expect(endpointRefMatches('relay-a.example.com/v1', scope)).toBe(true); | |
| expect(endpointRefMatches('https://relay-b.example.com/v1', scope)).toBe(false); | |
| expect(endpointRefMatches('', scope)).toBe(false); | |
| expect(endpointRefMatches('anything', '')).toBe(false); | |
| }); | |
| }); | |