feat(registry): add declarative protocol routing and request-scoped storage hook context across registries
This commit is contained in:
+45
-1
@@ -1,7 +1,7 @@
|
||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||
import { SmartRegistry } from '../ts/index.js';
|
||||
import { streamToBuffer, streamToJson } from '../ts/core/helpers.stream.js';
|
||||
import { createTestRegistry, createTestTokens, createTestPackument } from './helpers/registry.js';
|
||||
import { createTestRegistry, createTestTokens, createTestPackument, generateTestRunId } from './helpers/registry.js';
|
||||
|
||||
let registry: SmartRegistry;
|
||||
let npmToken: string;
|
||||
@@ -137,6 +137,50 @@ tap.test('NPM: should publish a new version of the package', async () => {
|
||||
expect(getBody.versions).toHaveProperty(newVersion);
|
||||
});
|
||||
|
||||
tap.test('NPM: should support unencoded scoped package publish and metadata routes', async () => {
|
||||
const scopedPackageName = `@scope/test-package-${generateTestRunId()}`;
|
||||
const scopedVersion = '2.0.0';
|
||||
const scopedTarballData = Buffer.from('scoped tarball content', 'utf-8');
|
||||
const packument = createTestPackument(scopedPackageName, scopedVersion, scopedTarballData);
|
||||
|
||||
const publishResponse = await registry.handleRequest({
|
||||
method: 'PUT',
|
||||
path: `/npm/${scopedPackageName}`,
|
||||
headers: {
|
||||
Authorization: `Bearer ${npmToken}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
query: {},
|
||||
body: packument,
|
||||
});
|
||||
|
||||
expect(publishResponse.status).toEqual(201);
|
||||
|
||||
const metadataResponse = await registry.handleRequest({
|
||||
method: 'GET',
|
||||
path: `/npm/${scopedPackageName}`,
|
||||
headers: {},
|
||||
query: {},
|
||||
});
|
||||
|
||||
expect(metadataResponse.status).toEqual(200);
|
||||
const metadataBody = await streamToJson(metadataResponse.body);
|
||||
expect(metadataBody.name).toEqual(scopedPackageName);
|
||||
expect(metadataBody.versions).toHaveProperty(scopedVersion);
|
||||
|
||||
const versionResponse = await registry.handleRequest({
|
||||
method: 'GET',
|
||||
path: `/npm/${scopedPackageName}/${scopedVersion}`,
|
||||
headers: {},
|
||||
query: {},
|
||||
});
|
||||
|
||||
expect(versionResponse.status).toEqual(200);
|
||||
const versionBody = await streamToJson(versionResponse.body);
|
||||
expect(versionBody.name).toEqual(scopedPackageName);
|
||||
expect(versionBody.version).toEqual(scopedVersion);
|
||||
});
|
||||
|
||||
tap.test('NPM: should get dist-tags (GET /-/package/{pkg}/dist-tags)', async () => {
|
||||
const response = await registry.handleRequest({
|
||||
method: 'GET',
|
||||
|
||||
Reference in New Issue
Block a user