Files
delete-package-versions/__tests__/version/delete-version.test.ts
Anupam b9ed39f728 Configure baseUrl in octokit initialisation (#91)
Make the action work for GHES by passing `GITHUB_API_URL` environment variable to octokit initialisation.
2023-03-02 19:56:14 +05:30

180 lines
3.7 KiB
TypeScript

import {rest} from 'msw'
import {setupServer} from 'msw/node'
import {deletePackageVersion, deletePackageVersions} from '../../src/version'
describe('delete tests - mock rest', () => {
let server = setupServer()
beforeEach(() => {
server = setupServer()
server.listen()
})
afterEach(() => {
server.close()
})
it('deletePackageVersion', done => {
server.use(
rest.delete(
'https://api.github.com/users/test-owner/packages/npm/test-package/versions/123',
(req, res, ctx) => {
return res(ctx.status(204))
}
)
)
deletePackageVersion(
'123',
'test-owner',
'test-package',
'npm',
'test-token'
).subscribe(result => {
expect(result).toBe(true)
done()
})
})
it('deletePackageVersions', done => {
let success = 0
server.use(
rest.delete(
'https://api.github.com/users/test-owner/packages/npm/test-package/versions/*',
(req, res, ctx) => {
return res(ctx.status(204))
}
)
)
deletePackageVersions(
['123', '456', '789'],
'test-owner',
'test-package',
'npm',
'test-token'
)
.subscribe(
result => {
expect(result).toBe(true)
success++
},
err => {
// should not get here
done.fail(err)
}
)
.add(() => {
expect(success).toBe(3)
done()
})
})
it('deletePackageVersions - GHES', done => {
process.env.GITHUB_API_URL = 'https://github.someghesinstance.com/api/v3'
let success = 0
server.use(
rest.delete(
'https://github.someghesinstance.com/api/v3/users/test-owner/packages/npm/test-package/versions/*',
(req, res, ctx) => {
return res(ctx.status(204))
}
)
)
deletePackageVersions(
['123', '456', '789'],
'test-owner',
'test-package',
'npm',
'test-token'
)
.subscribe(
result => {
expect(result).toBe(true)
success++
},
err => {
// should not get here
done.fail(err)
}
)
.add(() => {
expect(success).toBe(3)
delete process.env.GITHUB_API_URL
done()
})
})
it('deletePackageVersion - API error', done => {
server.use(
rest.delete(
'https://api.github.com/users/test-owner/packages/npm/test-package/versions/123',
(req, res, ctx) => {
return res(ctx.status(500))
}
)
)
deletePackageVersion(
'123',
'test-owner',
'test-package',
'npm',
'test-token'
).subscribe(
() => {
done.fail('should not get here.')
},
err => {
expect(err).toContain('delete version API failed.')
done()
}
)
})
it('deletePackageVersions - API error for some versions', done => {
let success = 0
let failed = 0
server.use(
rest.delete(
'https://api.github.com/users/test-owner/packages/npm/test-package/versions/:versionId',
(req, res, ctx) => {
if (req.params.versionId === '456') {
return res(ctx.status(500))
}
return res(ctx.status(204))
}
)
)
deletePackageVersions(
['123', '456', '789'],
'test-owner',
'test-package',
'npm',
'test-token'
)
.subscribe(
result => {
expect(result).toBe(true)
success++
},
err => {
expect(err).toContain('delete version API failed.')
failed++
}
)
.add(() => {
expect(success).toBe(2)
expect(failed).toBe(1)
done()
})
})
})