mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
118cd3f75b
* Feat: add support for absolute paths
* Refactor: `generateFolderPath` to generic function
`action.root` is initialized at e42fda2d72/src/constants.ts (L98)
, so it should not be an optional property.
* Test: rm unnecessary tests
* Refactor: rm unused exports
245 lines
7.1 KiB
TypeScript
245 lines
7.1 KiB
TypeScript
import {
|
|
isNullOrUndefined,
|
|
generateTokenType,
|
|
generateRepositoryPath,
|
|
generateFolderPath,
|
|
suppressSensitiveInformation
|
|
} from '../src/util'
|
|
|
|
describe('util', () => {
|
|
describe('isNullOrUndefined', () => {
|
|
it('should return true if the value is null', async () => {
|
|
const value = null
|
|
expect(isNullOrUndefined(value)).toBeTruthy()
|
|
})
|
|
|
|
it('should return true if the value is undefined', async () => {
|
|
const value = undefined
|
|
expect(isNullOrUndefined(value)).toBeTruthy()
|
|
})
|
|
|
|
it('should return false if the value is defined', async () => {
|
|
const value = 'montezuma'
|
|
expect(isNullOrUndefined(value)).toBeFalsy()
|
|
})
|
|
})
|
|
|
|
describe('generateTokenType', () => {
|
|
it('should return ssh if ssh is provided', async () => {
|
|
const action = {
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
gitHubToken: null,
|
|
accessToken: null,
|
|
ssh: true,
|
|
silent: false
|
|
}
|
|
expect(generateTokenType(action)).toEqual('SSH Deploy Key')
|
|
})
|
|
|
|
it('should return access token if access token is provided', async () => {
|
|
const action = {
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
gitHubToken: null,
|
|
accessToken: '123',
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
expect(generateTokenType(action)).toEqual('Access Token')
|
|
})
|
|
|
|
it('should return github token if github token is provided', async () => {
|
|
const action = {
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
gitHubToken: '123',
|
|
accessToken: null,
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
expect(generateTokenType(action)).toEqual('GitHub Token')
|
|
})
|
|
|
|
it('should return ... if no token is provided', async () => {
|
|
const action = {
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
gitHubToken: null,
|
|
accessToken: null,
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
expect(generateTokenType(action)).toEqual('…')
|
|
})
|
|
})
|
|
|
|
describe('generateRepositoryPath', () => {
|
|
it('should return ssh if ssh is provided', async () => {
|
|
const action = {
|
|
repositoryName: 'JamesIves/github-pages-deploy-action',
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
gitHubToken: null,
|
|
accessToken: null,
|
|
ssh: true,
|
|
silent: false
|
|
}
|
|
expect(generateRepositoryPath(action)).toEqual(
|
|
'git@github.com:JamesIves/github-pages-deploy-action'
|
|
)
|
|
})
|
|
|
|
it('should return https if access token is provided', async () => {
|
|
const action = {
|
|
repositoryName: 'JamesIves/github-pages-deploy-action',
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
gitHubToken: null,
|
|
accessToken: '123',
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
expect(generateRepositoryPath(action)).toEqual(
|
|
'https://123@github.com/JamesIves/github-pages-deploy-action.git'
|
|
)
|
|
})
|
|
|
|
it('should return https with x-access-token if github token is provided', async () => {
|
|
const action = {
|
|
repositoryName: 'JamesIves/github-pages-deploy-action',
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
gitHubToken: '123',
|
|
accessToken: null,
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
expect(generateRepositoryPath(action)).toEqual(
|
|
'https://x-access-token:123@github.com/JamesIves/github-pages-deploy-action.git'
|
|
)
|
|
})
|
|
|
|
describe('suppressSensitiveInformation', () => {
|
|
it('should replace any sensitive information with ***', async () => {
|
|
const action = {
|
|
repositoryName: 'JamesIves/github-pages-deploy-action',
|
|
repositoryPath:
|
|
'https://x-access-token:supersecret999%%%@github.com/anothersecret123333',
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
accessToken: 'supersecret999%%%',
|
|
gitHubToken: 'anothersecret123333',
|
|
silent: false
|
|
}
|
|
|
|
const string = `This is an error message! It contains ${action.accessToken} and ${action.gitHubToken} and ${action.repositoryPath} and ${action.accessToken} again!`
|
|
expect(suppressSensitiveInformation(string, action)).toBe(
|
|
'This is an error message! It contains *** and *** and *** and *** again!'
|
|
)
|
|
})
|
|
|
|
it('should not suppress information when in debug mode', async () => {
|
|
const action = {
|
|
repositoryName: 'JamesIves/github-pages-deploy-action',
|
|
repositoryPath:
|
|
'https://x-access-token:supersecret999%%%@github.com/anothersecret123333',
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
accessToken: 'supersecret999%%%',
|
|
gitHubToken: 'anothersecret123333',
|
|
silent: false
|
|
}
|
|
|
|
process.env['RUNNER_DEBUG'] = '1'
|
|
|
|
const string = `This is an error message! It contains ${action.accessToken} and ${action.gitHubToken} and ${action.repositoryPath}`
|
|
expect(suppressSensitiveInformation(string, action)).toBe(
|
|
'This is an error message! It contains supersecret999%%% and anothersecret123333 and https://x-access-token:supersecret999%%%@github.com/anothersecret123333'
|
|
)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('generateFolderPath', () => {
|
|
it('should return absolute path if folder name is provided', () => {
|
|
const action = {
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: 'build',
|
|
gitHubToken: null,
|
|
accessToken: null,
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
expect(generateFolderPath(action, 'folder')).toEqual('src/build')
|
|
})
|
|
|
|
it('should return original path if folder name begins with /', () => {
|
|
const action = {
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: '/home/user/repo/build',
|
|
gitHubToken: null,
|
|
accessToken: null,
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
expect(generateFolderPath(action, 'folder')).toEqual(
|
|
'/home/user/repo/build'
|
|
)
|
|
})
|
|
|
|
it('should process as relative path if folder name begins with ./', () => {
|
|
const action = {
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: './build',
|
|
gitHubToken: null,
|
|
accessToken: null,
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
expect(generateFolderPath(action, 'folder')).toEqual('src/build')
|
|
})
|
|
|
|
it('should return absolute path if folder name begins with ~', () => {
|
|
const action = {
|
|
branch: '123',
|
|
root: '.',
|
|
workspace: 'src/',
|
|
folder: '~/repo/build',
|
|
gitHubToken: null,
|
|
accessToken: null,
|
|
ssh: null,
|
|
silent: false
|
|
}
|
|
process.env.HOME = '/home/user'
|
|
expect(generateFolderPath(action, 'folder')).toEqual(
|
|
'/home/user/repo/build'
|
|
)
|
|
})
|
|
})
|
|
})
|