mirror of https://github.com/actions/toolkit
80 lines
2.1 KiB
TypeScript
80 lines
2.1 KiB
TypeScript
|
import {
|
||
|
validateArtifactName,
|
||
|
validateFilePath
|
||
|
} from '../src/internal/upload/path-and-artifact-name-validation'
|
||
|
|
||
|
import * as core from '@actions/core'
|
||
|
|
||
|
describe('Path and artifact name validation', () => {
|
||
|
beforeAll(() => {
|
||
|
// mock all output so that there is less noise when running tests
|
||
|
jest.spyOn(console, 'log').mockImplementation(() => {})
|
||
|
jest.spyOn(core, 'debug').mockImplementation(() => {})
|
||
|
jest.spyOn(core, 'info').mockImplementation(() => {})
|
||
|
jest.spyOn(core, 'warning').mockImplementation(() => {})
|
||
|
})
|
||
|
|
||
|
it('Check Artifact Name for any invalid characters', () => {
|
||
|
const invalidNames = [
|
||
|
'my\\artifact',
|
||
|
'my/artifact',
|
||
|
'my"artifact',
|
||
|
'my:artifact',
|
||
|
'my<artifact',
|
||
|
'my>artifact',
|
||
|
'my|artifact',
|
||
|
'my*artifact',
|
||
|
'my?artifact',
|
||
|
''
|
||
|
]
|
||
|
for (const invalidName of invalidNames) {
|
||
|
expect(() => {
|
||
|
validateArtifactName(invalidName)
|
||
|
}).toThrow()
|
||
|
}
|
||
|
|
||
|
const validNames = [
|
||
|
'my-normal-artifact',
|
||
|
'myNormalArtifact',
|
||
|
'm¥ñðrmålÄr†ï£å¢†'
|
||
|
]
|
||
|
for (const validName of validNames) {
|
||
|
expect(() => {
|
||
|
validateArtifactName(validName)
|
||
|
}).not.toThrow()
|
||
|
}
|
||
|
})
|
||
|
|
||
|
it('Check Artifact File Path for any invalid characters', () => {
|
||
|
const invalidNames = [
|
||
|
'some/invalid"artifact/path',
|
||
|
'some/invalid:artifact/path',
|
||
|
'some/invalid<artifact/path',
|
||
|
'some/invalid>artifact/path',
|
||
|
'some/invalid|artifact/path',
|
||
|
'some/invalid*artifact/path',
|
||
|
'some/invalid?artifact/path',
|
||
|
'some/invalid\rartifact/path',
|
||
|
'some/invalid\nartifact/path',
|
||
|
'some/invalid\r\nartifact/path',
|
||
|
''
|
||
|
]
|
||
|
for (const invalidName of invalidNames) {
|
||
|
expect(() => {
|
||
|
validateFilePath(invalidName)
|
||
|
}).toThrow()
|
||
|
}
|
||
|
|
||
|
const validNames = [
|
||
|
'my/perfectly-normal/artifact-path',
|
||
|
'my/perfectly\\Normal/Artifact-path',
|
||
|
'm¥/ñðrmål/Är†ï£å¢†'
|
||
|
]
|
||
|
for (const validName of validNames) {
|
||
|
expect(() => {
|
||
|
validateFilePath(validName)
|
||
|
}).not.toThrow()
|
||
|
}
|
||
|
})
|
||
|
})
|