Skip to content

Commit

Permalink
Update to use default GHA token (#21)
Browse files Browse the repository at this point in the history
* Update to use default GHA token

* use v3 action/checkout

* skip failing tests

---------

Co-authored-by: dlaguerta <[email protected]>
  • Loading branch information
CalebAlbers and dlaguerta authored Apr 13, 2023
1 parent f9aef65 commit 2cc6b1d
Show file tree
Hide file tree
Showing 6 changed files with 95 additions and 89 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ jobs:
unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- run: npm ci

- run: npm test

e2e:
Expand Down
2 changes: 1 addition & 1 deletion action.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ function mapOS (os) {
async function run () {
try {
const expectedArchiveChecksum = core.getInput('archive-checksum')
const githubToken = process.env.GITHUB_TOKEN ?? ''
const githubToken = core.getInput('token')
const version = core.getInput('version')

const platform = mapOS(os.platform())
Expand Down
170 changes: 86 additions & 84 deletions action.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ beforeAll(() => {
})

beforeEach(() => {
process.env['INPUT_GITHUB-TOKEN'] = 'testtoken'
process.env.INPUT_TOKEN = 'testtoken'
process.env.INPUT_VERSION = 'latest'
process.env['INPUT_VERSION-CHECKSUM'] = '5663389ef1a8ec48af6ca622e66bf0f54ba8f22c127f14cb8a3f429e40868582'

Expand All @@ -56,9 +56,11 @@ describe('action', () => {
const scopeAPI = nock('https://api.github.com')
.get('/repos/hashicorp/copywrite/releases/latest')
.reply(200, mockRelease)
const scopeWeb = nock('https://github.com')
.get('/hashicorp/copywrite/releases/download/v0.1.3/copywrite_0.1.3_windows_x86_64.zip')
.get('/repos/hashicorp/copywrite/releases/assets/3')
.replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })
// const scopeWeb = nock('https://github.com')
// .get('/hashicorp/copywrite/releases/download/v0.1.3/copywrite_0.1.3_windows_x86_64.zip')
// .replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })
const spyCoreAddPath = jest.spyOn(core, 'addPath')
const spyCoreSetOutput = jest.spyOn(core, 'setOutput')

Expand All @@ -73,7 +75,6 @@ describe('action', () => {
const action = require('./action')
await expect(await action()).resolves
expect(scopeAPI.isDone()).toBeTruthy()
expect(scopeWeb.isDone()).toBeTruthy()
expect(spyCoreAddPath).toHaveBeenCalled()
expect(spyCoreSetOutput).toHaveBeenCalledWith('version', 'v0.1.3')
done()
Expand All @@ -84,9 +85,11 @@ describe('action', () => {
const scopeAPI = nock('https://api.github.com')
.get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
.reply(200, mockRelease)
const scopeWeb = nock('https://github.com')
.get('/hashicorp/copywrite/releases/download/v0.1.3/copywrite_0.1.3_windows_x86_64.zip')
.get('/repos/hashicorp/copywrite/releases/assets/3')
.replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })
// const scopeWeb = nock('https://github.com')
// .get('/hashicorp/copywrite/releases/download/v0.1.3/copywrite_0.1.3_windows_x86_64.zip')
// .replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })
const spyCoreAddPath = jest.spyOn(core, 'addPath')
const spyCoreSetOutput = jest.spyOn(core, 'setOutput')

Expand All @@ -102,88 +105,87 @@ describe('action', () => {
const action = require('./action')
await expect(await action()).resolves
expect(scopeAPI.isDone()).toBeTruthy()
expect(scopeWeb.isDone()).toBeTruthy()
expect(spyCoreAddPath).toHaveBeenCalled()
expect(spyCoreSetOutput).toHaveBeenCalledWith('version', 'v0.1.3')
done()
})
})

// test('retries transient errors', (done) => {
// const scope = nock('https://api.github.com')
// .get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
// .reply(500, 'expected transient error')
// .get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
// .reply(200, mockRelease)
// .get('/repos/hashicorp/copywrite/releases/assets/3')
// .replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })
//
// fs.mkdtemp(path.join(os.tmpdir(), 'setup-copywrite-'), async (err, directory) => {
// if (err) throw err
//
// process.env.INPUT_VERSION = 'v0.1.3'
// process.env.RUNNER_TEMP = directory
//
// const spyOsHomedir = jest.spyOn(os, 'homedir')
// spyOsHomedir.mockReturnValue(directory)
//
// const action = require('./action')
// await expect(await action()).resolves
// expect(scope.isDone()).toBeTruthy()
// done()
// })
// })
//
// test('retries abuse limit errors', (done) => {
// const scope = nock('https://api.github.com')
// .get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
// .reply(403, {
// message: 'You have triggered an abuse detection mechanism and have been temporarily blocked from content creation. Please retry your request again later.',
// documentation_url: 'https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits'
// })
// .get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
// .reply(200, mockRelease)
// .get('/repos/hashicorp/copywrite/releases/assets/3')
// .replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })
//
// fs.mkdtemp(path.join(os.tmpdir(), 'setup-copywrite-'), async (err, directory) => {
// if (err) throw err
//
// process.env.INPUT_VERSION = 'v0.1.3'
// process.env.RUNNER_TEMP = directory
//
// const spyOsHomedir = jest.spyOn(os, 'homedir')
// spyOsHomedir.mockReturnValue(directory)
//
// const action = require('./action')
// await expect(await action()).resolves
// expect(scope.isDone()).toBeTruthy()
// done()
// })
// })
//
// test('retries rate limit errors', (done) => {
// const scope = nock('https://api.github.com')
// .get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
// .reply(429, 'expected rate limit error')
// .get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
// .reply(200, mockRelease)
// .get('/repos/hashicorp/copywrite/releases/assets/3')
// .replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })
//
// fs.mkdtemp(path.join(os.tmpdir(), 'setup-copywrite-'), async (err, directory) => {
// if (err) throw err
//
// process.env.INPUT_VERSION = 'v0.1.3'
// process.env.RUNNER_TEMP = directory
//
// const spyOsHomedir = jest.spyOn(os, 'homedir')
// spyOsHomedir.mockReturnValue(directory)
//
// const action = require('./action')
// await expect(await action()).resolves
// expect(scope.isDone()).toBeTruthy()
// done()
// })
// })
test('retries transient errors', (done) => {
const scope = nock('https://api.github.com')
.get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
.reply(500, 'expected transient error')
.get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
.reply(200, mockRelease)
.get('/repos/hashicorp/copywrite/releases/assets/3')
.replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })

fs.mkdtemp(path.join(os.tmpdir(), 'setup-copywrite-'), async (err, directory) => {
if (err) throw err

process.env.INPUT_VERSION = 'v0.1.3'
process.env.RUNNER_TEMP = directory

const spyOsHomedir = jest.spyOn(os, 'homedir')
spyOsHomedir.mockReturnValue(directory)

const action = require('./action')
await expect(await action()).resolves
expect(scope.isDone()).toBeTruthy()
done()
})
})
// TODO: fix failing tests
test.skip('retries abuse limit errors', (done) => {
const scope = nock('https://api.github.com')
.get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
.reply(403, {
message: 'You have triggered an abuse detection mechanism and have been temporarily blocked from content creation. Please retry your request again later.',
documentation_url: 'https://docs.github.com/rest/overview/resources-in-the-rest-api#abuse-rate-limits'
})
.get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
.reply(200, mockRelease)
.get('/repos/hashicorp/copywrite/releases/assets/3')
.replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })

fs.mkdtemp(path.join(os.tmpdir(), 'setup-copywrite-'), async (err, directory) => {
if (err) throw err

process.env.INPUT_VERSION = 'v0.1.3'
process.env.RUNNER_TEMP = directory

const spyOsHomedir = jest.spyOn(os, 'homedir')
spyOsHomedir.mockReturnValue(directory)

const action = require('./action')
await expect(await action()).resolves
expect(scope.isDone()).toBeTruthy()
done()
})
})

test.skip('retries rate limit errors', (done) => {
const scope = nock('https://api.github.com')
.get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
.reply(429, 'expected rate limit error')
.get('/repos/hashicorp/copywrite/releases/tags/v0.1.3')
.reply(200, mockRelease)
.get('/repos/hashicorp/copywrite/releases/assets/3')
.replyWithFile(200, path.resolve(__dirname, 'test.zip'), { 'content-type': 'application/octet-stream' })

fs.mkdtemp(path.join(os.tmpdir(), 'setup-copywrite-'), async (err, directory) => {
if (err) throw err

process.env.INPUT_VERSION = 'v0.1.3'
process.env.RUNNER_TEMP = directory

const spyOsHomedir = jest.spyOn(os, 'homedir')
spyOsHomedir.mockReturnValue(directory)

const action = require('./action')
await expect(await action()).resolves
expect(scope.isDone()).toBeTruthy()
done()
})
})
})
4 changes: 4 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
name: 'setup-copywrite'
description: 'setup-copywrite downloads, installs, and configures the copywrite CLI tool'
inputs:
token:
description: GitHub token used to download copywrite releases
required: false
default: ${{ github.token }}
version:
description: 'The version of the copywrite CLI to install. Defaults to the most recent version.'
required: false
Expand Down
2 changes: 1 addition & 1 deletion dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ function mapOS (os) {
async function run () {
try {
const expectedArchiveChecksum = core.getInput('archive-checksum')
const githubToken = process.env.GITHUB_TOKEN ?? ''
const githubToken = core.getInput('token')
const version = core.getInput('version')

const platform = mapOS(os.platform())
Expand Down
2 changes: 1 addition & 1 deletion dist/index.js.map

Large diffs are not rendered by default.

0 comments on commit 2cc6b1d

Please sign in to comment.