Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Configure baseUrl in octokit initialisation (#91)
Make the action work for GHES by passing `GITHUB_API_URL` environment variable to octokit initialisation.
  • Loading branch information
Anupam authored and GitHub committed Mar 2, 2023
1 parent ba4d22f commit b9ed39f
Show file tree
Hide file tree
Showing 8 changed files with 161 additions and 6 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/test.yml
Expand Up @@ -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
Expand All @@ -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:
Expand Down
77 changes: 77 additions & 0 deletions __tests__/delete.test.ts
Expand Up @@ -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
Expand Down Expand Up @@ -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 = {
Expand Down
39 changes: 39 additions & 0 deletions __tests__/version/delete-version.test.ts
Expand Up @@ -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(
Expand Down
31 changes: 31 additions & 0 deletions __tests__/version/get-version.test.ts
Expand Up @@ -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

Expand Down
7 changes: 4 additions & 3 deletions dist/index.js
Expand Up @@ -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;
Expand Down Expand Up @@ -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({
Expand Down Expand Up @@ -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);
Expand Down
1 change: 0 additions & 1 deletion src/main.ts
@@ -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'
Expand Down
3 changes: 2 additions & 1 deletion src/version/delete-version.ts
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion src/version/get-versions.ts
Expand Up @@ -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

Expand Down

0 comments on commit b9ed39f

Please sign in to comment.