frontend/.pnpm-store/v3/files/e1/3557325b86c56db8a4521ffce392cc1c434bd65a3698258c0baa538091302f3844005a605f970d14c3437f38620d399b4be971b8a966afb89300624e73b68f

131 lines
3.5 KiB
Plaintext

import nock from 'nock';
const interceptAuthentication = ({ api = 'https://api.github.com', username = 'john' } = {}) => {
nock(api).get('/user').reply(200, {
login: username
});
};
const interceptCollaborator = ({
api = 'https://api.github.com',
owner = 'user',
project = 'repo',
username = 'john'
} = {}) => {
nock(api).get(`/repos/${owner}/${project}/collaborators/${username}`).reply(204);
};
const interceptListReleases = ({
host = 'github.com',
api = 'https://api.github.com',
owner = 'user',
project = 'repo',
tag_name
} = {}) => {
nock(api)
.get(`/repos/${owner}/${project}/releases?per_page=1&page=1`)
.reply(200, [
{
id: 1,
upload_url: `https://uploads.${host}/repos/${owner}/${project}/releases/1/assets{?name,label}`,
html_url: `https://${host}/${owner}/${project}/releases/tag/${tag_name}`,
tag_name,
target_commitish: 'main',
name: `Release ${tag_name}`,
body: 'Description of the release',
draft: false,
prerelease: false
}
]);
};
const interceptCreate = ({
api = 'https://api.github.com',
host = 'github.com',
owner = 'user',
project = 'repo',
body: { tag_name, name = '', generate_release_notes = false, body = null, prerelease = false, draft = false }
} = {}) => {
nock(api)
.post(`/repos/${owner}/${project}/releases`, {
tag_name,
name,
body,
prerelease,
draft,
generate_release_notes
})
.reply(() => {
const id = 1;
const responseBody = {
id,
tag_name,
name,
body,
prerelease,
draft,
generate_release_notes,
upload_url: `https://uploads.${host}/repos/${owner}/${project}/releases/${id}/assets{?name,label}`,
html_url: `https://${host}/${owner}/${project}/releases/tag/${tag_name}`
};
return [200, responseBody, { location: `${api}/repos/${owner}/${project}/releases/${id}` }];
});
};
const interceptUpdate = ({
host = 'github.com',
api = 'https://api.github.com',
owner = 'user',
project = 'repo',
body: { tag_name, name = '', body = null, prerelease = false, draft = false, generate_release_notes = false }
} = {}) => {
nock(api)
.patch(`/repos/${owner}/${project}/releases/1`, { tag_name, name, body, draft, prerelease, generate_release_notes })
.reply(200, {
id: 1,
tag_name,
name,
body,
prerelease,
draft,
generate_release_notes,
upload_url: `https://uploads.${host}/repos/${owner}/${project}/releases/1/assets{?name,label}`,
html_url: `https://${host}/${owner}/${project}/releases/tag/${tag_name}`
});
};
const interceptAsset = ({
api = 'https://api.github.com',
host = 'github.com',
owner = 'user',
project = 'repo',
tagName,
body = {}
} = {}) => {
nock(`https://uploads.${host}`)
.post(`/repos/${owner}/${project}/releases/1/assets`, body)
.query(true)
.reply(200, function () {
const id = 1;
const [, name] = this.req.path.match(/\?name=([^&]+)/);
return {
id,
url: `${api}/repos/${owner}/${project}/releases/assets/${id}`,
name,
label: '',
state: 'uploaded',
size: this.req.headers['content-length'],
browser_download_url: `https://${host}/${owner}/${project}/releases/download/${tagName}/${name}`
};
});
};
export {
interceptAuthentication,
interceptCollaborator,
interceptListReleases,
interceptCreate,
interceptUpdate,
interceptAsset
};