Make the action work for GHES by passing `GITHUB_API_URL` environment variable to octokit initialisation.
180 lines
3.7 KiB
TypeScript
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()
|
|
})
|
|
})
|
|
})
|