Configure baseUrl in octokit initialisation (#91)

Make the action work for GHES by passing `GITHUB_API_URL` environment variable to octokit initialisation.
This commit is contained in:
Anupam
2023-03-02 19:56:14 +05:30
committed by GitHub
parent ba4d22f251
commit b9ed39f728
8 changed files with 161 additions and 6 deletions

View File

@@ -18,6 +18,9 @@ jobs:
steps:
- uses: actions/checkout@v2
name: Checkout Delete Package Versions Repo
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm install
name: NPM Install
- run: npm run pack
@@ -29,6 +32,9 @@ jobs:
steps:
- uses: actions/checkout@v2
name: Checkout Delete Package Versions Repo
- uses: actions/setup-node@v3
with:
node-version: 16
- uses: ./
name: Smoke Test Delete Package Versions Action
with:

View File

@@ -55,6 +55,36 @@ describe('index tests -- call rest', () => {
})
})
it('finalIDs test - success - GHES', done => {
process.env.GITHUB_API_URL = 'https://github.someghesinstance.com/api/v3'
const numVersions = 10
let apiCalled = 0
const versions = getMockedVersionsResponse(numVersions)
server.use(
rest.get(
'https://github.someghesinstance.com/api/v3/users/test-owner/packages/npm/test-package/versions',
(req, res, ctx) => {
apiCalled++
return res(ctx.status(200), ctx.json(versions))
}
)
)
finalIds(getInput()).subscribe(ids => {
expect(apiCalled).toBe(1)
expect(ids.length).toBe(numVersions)
for (let i = 0; i < numVersions; i++) {
expect(ids[i]).toBe(versions[i].id.toString())
}
delete process.env.GITHUB_API_URL
done()
})
})
it('finalIDs test - success - pagination', done => {
const numVersions = RATE_LIMIT * 2
let apiCalled = 0
@@ -343,6 +373,53 @@ describe('index tests -- call rest', () => {
done()
})
})
it('deleteVersions test - success complete flow - GHES', done => {
process.env.GITHUB_API_URL = 'https://github.someghesinstance.com/api/v3'
const numVersions = 10
let getApiCalled = 0
let deleteApiCalled = 0
const versions = getMockedVersionsResponse(numVersions)
const versionsDeleted: string[] = []
server.use(
rest.get(
'https://github.someghesinstance.com/api/v3/users/test-owner/packages/npm/test-package/versions',
(req, res, ctx) => {
getApiCalled++
return res(ctx.status(200), ctx.json(versions))
}
)
)
server.use(
rest.delete(
'https://github.someghesinstance.com/api/v3/users/test-owner/packages/npm/test-package/versions/:versionId',
(req, res, ctx) => {
deleteApiCalled++
versionsDeleted.push(req.params.versionId as string)
return res(ctx.status(204))
}
)
)
deleteVersions(getInput())
.subscribe(result => {
expect(result).toBe(true)
})
.add(() => {
expect(getApiCalled).toBe(1)
expect(deleteApiCalled).toBe(numVersions)
for (let i = 0; i < numVersions; i++) {
expect(versionsDeleted[i]).toBe(versions[i].id.toString())
}
delete process.env.GITHUB_API_URL
done()
})
})
})
const defaultInput: InputParams = {

View File

@@ -71,6 +71,45 @@ describe('delete tests - mock rest', () => {
})
})
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(

View File

@@ -46,6 +46,37 @@ describe('get versions tests -- mock rest', () => {
})
})
it('getOldestVersions -- success - GHES', done => {
const numVersions = RATE_LIMIT
const resp = getMockedVersionsResponse(numVersions)
// set GITHUB_API_URL to a different base url
process.env.GITHUB_API_URL = 'https://github.someghesinstance.com/api/v3'
server.use(
rest.get(
'https://github.someghesinstance.com/api/v3/users/test-owner/packages/npm/test-package/versions',
(req, res, ctx) => {
return res(ctx.status(200), ctx.json(resp))
}
)
)
getOldestVersions({numVersions}).subscribe(result => {
expect(result.versions.length).toBe(numVersions)
for (let i = 0; i < numVersions; i++) {
expect(result.versions[i].id).toBe(resp[i].id)
expect(result.versions[i].version).toBe(resp[i].name)
expect(result.versions[i].created_at).toBe(resp[i].created_at)
}
expect(result.paginate).toBe(true)
expect(result.totalCount).toBe(numVersions)
delete process.env.GITHUB_API_URL
done()
})
})
it('getOldestVersions -- paginate is false when fetched versions is less than page size', done => {
const numVersions = 5

7
dist/index.js vendored
View File

@@ -147,7 +147,8 @@ const rest_1 = __nccwpck_require__(5375);
let deleted = 0;
function deletePackageVersion(packageVersionId, owner, packageName, packageType, token) {
const octokit = new rest_1.Octokit({
auth: token
auth: token,
baseUrl: process.env.GITHUB_API_URL || 'https://api.github.com'
});
const package_version_id = +packageVersionId;
const package_type = packageType;
@@ -195,7 +196,8 @@ const operators_1 = __nccwpck_require__(7801);
const rest_1 = __nccwpck_require__(5375);
function getOldestVersions(owner, packageName, packageType, numVersions, page, token) {
const octokit = new rest_1.Octokit({
auth: token
auth: token,
baseUrl: process.env.GITHUB_API_URL || 'https://api.github.com'
});
const package_type = packageType;
return (0, rxjs_1.from)(octokit.rest.packages.getAllPackageVersionsForPackageOwnedByUser({
@@ -43896,7 +43898,6 @@ var __webpack_exports__ = {};
var exports = __webpack_exports__;
Object.defineProperty(exports, "__esModule", ({ value: true }));
/* eslint-disable @typescript-eslint/no-unused-vars */
const core_1 = __nccwpck_require__(2186);
const github_1 = __nccwpck_require__(5438);
const input_1 = __nccwpck_require__(8657);

View File

@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import {getInput, setFailed} from '@actions/core'
import {context} from '@actions/github'
import {Input} from './input'

View File

@@ -15,7 +15,8 @@ export function deletePackageVersion(
token: string
): Observable<boolean> {
const octokit = new Octokit({
auth: token
auth: token,
baseUrl: process.env.GITHUB_API_URL || 'https://api.github.com'
})
const package_version_id = +packageVersionId
const package_type: PackageType = packageType as PackageType

View File

@@ -31,7 +31,8 @@ export function getOldestVersions(
token: string
): Observable<RestQueryInfo> {
const octokit = new Octokit({
auth: token
auth: token,
baseUrl: process.env.GITHUB_API_URL || 'https://api.github.com'
})
const package_type: PackageType = packageType as PackageType