98 lines
2.7 KiB
TypeScript
98 lines
2.7 KiB
TypeScript
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
|
|
import client from '../client';
|
|
import { uploadNPMExport, commitNPMImport, cancelNPMImport } from '../npmImport';
|
|
|
|
vi.mock('../client', () => ({
|
|
default: {
|
|
post: vi.fn(),
|
|
},
|
|
}));
|
|
|
|
describe('npmImport API', () => {
|
|
const mockedPost = vi.mocked(client.post);
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it('cancelNPMImport posts cancel endpoint with required session_uuid body', async () => {
|
|
const sessionUUID = 'npm-session-123';
|
|
mockedPost.mockResolvedValue({});
|
|
|
|
await cancelNPMImport(sessionUUID);
|
|
|
|
expect(client.post).toHaveBeenCalledWith('/import/npm/cancel', {
|
|
session_uuid: sessionUUID,
|
|
});
|
|
});
|
|
|
|
it('uploadNPMExport posts upload endpoint with content payload', async () => {
|
|
const content = '{"proxy_hosts":[]}';
|
|
const mockResponse = {
|
|
session: {
|
|
id: 'npm-session-456',
|
|
state: 'reviewing',
|
|
source: 'npm',
|
|
},
|
|
preview: {
|
|
hosts: [],
|
|
conflicts: [],
|
|
errors: [],
|
|
},
|
|
conflict_details: {},
|
|
};
|
|
|
|
mockedPost.mockResolvedValue({ data: mockResponse });
|
|
|
|
const result = await uploadNPMExport(content);
|
|
|
|
expect(client.post).toHaveBeenCalledWith('/import/npm/upload', { content });
|
|
expect(result).toEqual(mockResponse);
|
|
});
|
|
|
|
it('commitNPMImport posts commit endpoint with session_uuid, resolutions, and names body', async () => {
|
|
const sessionUUID = 'npm-session-789';
|
|
const resolutions = { 'npm.example.com': 'replace' };
|
|
const names = { 'npm.example.com': 'NPM Example' };
|
|
const mockResponse = {
|
|
created: 1,
|
|
updated: 1,
|
|
skipped: 0,
|
|
errors: [],
|
|
};
|
|
|
|
mockedPost.mockResolvedValue({ data: mockResponse });
|
|
|
|
const result = await commitNPMImport(sessionUUID, resolutions, names);
|
|
|
|
expect(client.post).toHaveBeenCalledWith('/import/npm/commit', {
|
|
session_uuid: sessionUUID,
|
|
resolutions,
|
|
names,
|
|
});
|
|
expect(result).toEqual(mockResponse);
|
|
});
|
|
|
|
it('forwards uploadNPMExport errors', async () => {
|
|
const error = new Error('upload failed');
|
|
mockedPost.mockRejectedValue(error);
|
|
|
|
await expect(uploadNPMExport('{"proxy_hosts":[]}')).rejects.toBe(error);
|
|
});
|
|
|
|
it('forwards commitNPMImport errors', async () => {
|
|
const error = new Error('commit failed');
|
|
mockedPost.mockRejectedValue(error);
|
|
|
|
await expect(commitNPMImport('npm-session-123', {}, {})).rejects.toBe(error);
|
|
});
|
|
|
|
it('forwards cancelNPMImport errors', async () => {
|
|
const error = new Error('cancel failed');
|
|
mockedPost.mockRejectedValue(error);
|
|
|
|
await expect(cancelNPMImport('npm-session-123')).rejects.toBe(error);
|
|
});
|
|
});
|