Skip to content

Commit 00545e5

Browse files
committed
test: add more fixtures for api responses in e2e testing
1 parent 3d99592 commit 00545e5

2 files changed

Lines changed: 95 additions & 0 deletions

File tree

modules/runtime/server/cache.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,44 @@ function getMockForUrl(url: string): MockResult | null {
195195
return { data: null }
196196
}
197197

198+
// npm attestations API - return empty attestations (provenance not needed in tests)
199+
if (host === 'registry.npmjs.org' && pathname.startsWith('/-/npm/v1/attestations/')) {
200+
return { data: { attestations: [] } }
201+
}
202+
203+
// Constellation API - return empty results for link queries
204+
if (host === 'constellation.microcosm.blue') {
205+
if (pathname === '/links/distinct-dids') {
206+
return { data: { total: 0, linking_dids: [], cursor: undefined } }
207+
}
208+
if (pathname === '/links/all') {
209+
return { data: { links: {} } }
210+
}
211+
if (pathname === '/xrpc/blue.microcosm.links.getBacklinks') {
212+
return { data: { total: 0, records: [], cursor: undefined } }
213+
}
214+
return { data: null }
215+
}
216+
217+
// UNGH (GitHub proxy) - return mock repo metadata
218+
if (host === 'ungh.cc') {
219+
const repoMatch = pathname.match(/^\/repos\/([^/]+)\/([^/]+)$/)
220+
if (repoMatch?.[1] && repoMatch?.[2]) {
221+
return {
222+
data: {
223+
repo: {
224+
description: `${repoMatch[1]}/${repoMatch[2]} - mock repo description`,
225+
stars: 1000,
226+
forks: 100,
227+
watchers: 50,
228+
defaultBranch: 'main',
229+
},
230+
},
231+
}
232+
}
233+
return { data: null }
234+
}
235+
198236
// GitHub API - handled via fixtures, return null to use fixture system
199237
// Note: The actual fixture loading is handled in fetchFromFixtures via special case
200238
if (host === 'api.github.com') {

test/fixtures/mock-routes.cjs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ function matchNpmRegistry(urlString) {
124124
return json({ error: 'Not found' }, 404)
125125
}
126126

127+
// Attestations endpoint - return empty attestations
128+
if (pathname.startsWith('/-/npm/v1/attestations/')) {
129+
return json({ attestations: [] })
130+
}
131+
127132
// Packument
128133
if (!pathname.startsWith('/-/')) {
129134
let packageName = pathname.slice(1)
@@ -440,6 +445,52 @@ function matchGravatarApi(_urlString) {
440445
return { status: 404, contentType: 'text/plain', body: 'Not found' }
441446
}
442447

448+
/**
449+
* @param {string} urlString
450+
* @returns {MockResponse | null}
451+
*/
452+
function matchUnghApi(urlString) {
453+
const url = new URL(urlString)
454+
455+
const repoMatch = url.pathname.match(/^\/repos\/([^/]+)\/([^/]+)$/)
456+
if (repoMatch && repoMatch[1] && repoMatch[2]) {
457+
return json({
458+
repo: {
459+
description: `${repoMatch[1]}/${repoMatch[2]} - mock repo description`,
460+
stars: 1000,
461+
forks: 100,
462+
watchers: 50,
463+
defaultBranch: 'main',
464+
},
465+
})
466+
}
467+
468+
return json(null)
469+
}
470+
471+
/**
472+
* @param {string} urlString
473+
* @returns {MockResponse | null}
474+
*/
475+
function matchConstellationApi(urlString) {
476+
const url = new URL(urlString)
477+
478+
if (url.pathname === '/links/distinct-dids') {
479+
return json({ total: 0, linking_dids: [], cursor: undefined })
480+
}
481+
482+
if (url.pathname === '/links/all') {
483+
return json({ links: {} })
484+
}
485+
486+
if (url.pathname === '/xrpc/blue.microcosm.links.getBacklinks') {
487+
return json({ total: 0, records: [], cursor: undefined })
488+
}
489+
490+
// Unknown constellation endpoint - return empty
491+
return json(null)
492+
}
493+
443494
/**
444495
* @param {string} urlString
445496
* @returns {MockResponse | null}
@@ -480,6 +531,12 @@ const routes = [
480531
},
481532
{ name: 'Gravatar API', pattern: 'https://www.gravatar.com/**', match: matchGravatarApi },
482533
{ name: 'GitHub API', pattern: 'https://api.github.com/**', match: matchGitHubApi },
534+
{ name: 'UNGH API', pattern: 'https://ungh.cc/**', match: matchUnghApi },
535+
{
536+
name: 'Constellation API',
537+
pattern: 'https://constellation.microcosm.blue/**',
538+
match: matchConstellationApi,
539+
},
483540
]
484541

485542
/**

0 commit comments

Comments
 (0)