Fix some linting issues
This commit is contained in:
@@ -687,7 +687,8 @@ describe('download-artifact', () => {
|
|||||||
const message = new http.IncomingMessage(new net.Socket())
|
const message = new http.IncomingMessage(new net.Socket())
|
||||||
message.statusCode = 200
|
message.statusCode = 200
|
||||||
message.headers['content-type'] = 'text/plain'
|
message.headers['content-type'] = 'text/plain'
|
||||||
message.headers['content-disposition'] = `attachment; filename="${rawFileName}"`
|
message.headers['content-disposition'] =
|
||||||
|
`attachment; filename="${rawFileName}"`
|
||||||
message.push(Buffer.from(rawFileContent))
|
message.push(Buffer.from(rawFileContent))
|
||||||
message.push(null)
|
message.push(null)
|
||||||
return {
|
return {
|
||||||
@@ -753,13 +754,16 @@ describe('download-artifact', () => {
|
|||||||
it('should not attempt to unzip when content-type is image/png', async () => {
|
it('should not attempt to unzip when content-type is image/png', async () => {
|
||||||
const pngFileName = 'screenshot.png'
|
const pngFileName = 'screenshot.png'
|
||||||
// Simple PNG header bytes for testing
|
// Simple PNG header bytes for testing
|
||||||
const pngContent = Buffer.from([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])
|
const pngContent = Buffer.from([
|
||||||
|
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a
|
||||||
|
])
|
||||||
|
|
||||||
const mockGetPngFile = jest.fn(() => {
|
const mockGetPngFile = jest.fn(() => {
|
||||||
const message = new http.IncomingMessage(new net.Socket())
|
const message = new http.IncomingMessage(new net.Socket())
|
||||||
message.statusCode = 200
|
message.statusCode = 200
|
||||||
message.headers['content-type'] = 'image/png'
|
message.headers['content-type'] = 'image/png'
|
||||||
message.headers['content-disposition'] = `attachment; filename="${pngFileName}"`
|
message.headers['content-disposition'] =
|
||||||
|
`attachment; filename="${pngFileName}"`
|
||||||
message.push(pngContent)
|
message.push(pngContent)
|
||||||
message.push(null)
|
message.push(null)
|
||||||
return {
|
return {
|
||||||
@@ -851,7 +855,8 @@ describe('download-artifact', () => {
|
|||||||
const message = new http.IncomingMessage(new net.Socket())
|
const message = new http.IncomingMessage(new net.Socket())
|
||||||
message.statusCode = 200
|
message.statusCode = 200
|
||||||
message.headers['content-type'] = 'text/plain'
|
message.headers['content-type'] = 'text/plain'
|
||||||
message.headers['content-disposition'] = `attachment; filename="${maliciousFileName}"`
|
message.headers['content-disposition'] =
|
||||||
|
`attachment; filename="${maliciousFileName}"`
|
||||||
message.push(Buffer.from(rawFileContent))
|
message.push(Buffer.from(rawFileContent))
|
||||||
message.push(null)
|
message.push(null)
|
||||||
return {
|
return {
|
||||||
@@ -880,7 +885,10 @@ describe('download-artifact', () => {
|
|||||||
expect(fs.readFileSync(savedFilePath, 'utf8')).toBe(rawFileContent)
|
expect(fs.readFileSync(savedFilePath, 'utf8')).toBe(rawFileContent)
|
||||||
|
|
||||||
// Verify the file was NOT written outside the workspace directory
|
// Verify the file was NOT written outside the workspace directory
|
||||||
const maliciousPath = path.resolve(fixtures.workspaceDir, maliciousFileName)
|
const maliciousPath = path.resolve(
|
||||||
|
fixtures.workspaceDir,
|
||||||
|
maliciousFileName
|
||||||
|
)
|
||||||
expect(fs.existsSync(maliciousPath)).toBe(false)
|
expect(fs.existsSync(maliciousPath)).toBe(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -893,7 +901,8 @@ describe('download-artifact', () => {
|
|||||||
const message = new http.IncomingMessage(new net.Socket())
|
const message = new http.IncomingMessage(new net.Socket())
|
||||||
message.statusCode = 200
|
message.statusCode = 200
|
||||||
message.headers['content-type'] = 'application/octet-stream'
|
message.headers['content-type'] = 'application/octet-stream'
|
||||||
message.headers['content-disposition'] = `attachment; filename="${encodedMaliciousFileName}"`
|
message.headers['content-disposition'] =
|
||||||
|
`attachment; filename="${encodedMaliciousFileName}"`
|
||||||
message.push(Buffer.from(rawFileContent))
|
message.push(Buffer.from(rawFileContent))
|
||||||
message.push(null)
|
message.push(null)
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -99,8 +99,12 @@ export async function streamExtractExternal(
|
|||||||
fileName = path.basename(decodeURIComponent(filenameMatch[1].trim()))
|
fileName = path.basename(decodeURIComponent(filenameMatch[1].trim()))
|
||||||
}
|
}
|
||||||
|
|
||||||
core.debug(`Content-Type: ${contentType}, isZip: ${isZip}, skipDecompress: ${skipDecompress}`)
|
core.debug(
|
||||||
core.debug(`Content-Disposition: ${contentDisposition}, fileName: ${fileName}`)
|
`Content-Type: ${contentType}, isZip: ${isZip}, skipDecompress: ${skipDecompress}`
|
||||||
|
)
|
||||||
|
core.debug(
|
||||||
|
`Content-Disposition: ${contentDisposition}, fileName: ${fileName}`
|
||||||
|
)
|
||||||
|
|
||||||
let sha256Digest: string | undefined = undefined
|
let sha256Digest: string | undefined = undefined
|
||||||
|
|
||||||
@@ -115,18 +119,16 @@ export async function streamExtractExternal(
|
|||||||
const timer = setTimeout(timerFn, timeout)
|
const timer = setTimeout(timerFn, timeout)
|
||||||
|
|
||||||
const onError = (error: Error): void => {
|
const onError = (error: Error): void => {
|
||||||
core.debug(
|
core.debug(`response.message: Artifact download failed: ${error.message}`)
|
||||||
`response.message: Artifact download failed: ${error.message}`
|
|
||||||
)
|
|
||||||
clearTimeout(timer)
|
clearTimeout(timer)
|
||||||
reject(error)
|
reject(error)
|
||||||
}
|
}
|
||||||
|
|
||||||
const hashStream = crypto.createHash('sha256').setEncoding('hex')
|
const hashStream = crypto.createHash('sha256').setEncoding('hex')
|
||||||
const passThrough = new stream.PassThrough()
|
const passThrough = new stream.PassThrough()
|
||||||
.on('data', () => {
|
.on('data', () => {
|
||||||
timer.refresh()
|
timer.refresh()
|
||||||
})
|
})
|
||||||
.on('error', onError)
|
.on('error', onError)
|
||||||
|
|
||||||
response.message.pipe(passThrough)
|
response.message.pipe(passThrough)
|
||||||
@@ -144,7 +146,10 @@ export async function streamExtractExternal(
|
|||||||
|
|
||||||
if (isZip && !skipDecompress) {
|
if (isZip && !skipDecompress) {
|
||||||
// Extract zip file
|
// Extract zip file
|
||||||
passThrough.pipe(unzip.Extract({path: directory})).on('close', onClose).on('error', onError)
|
passThrough
|
||||||
|
.pipe(unzip.Extract({path: directory}))
|
||||||
|
.on('close', onClose)
|
||||||
|
.on('error', onError)
|
||||||
} else {
|
} else {
|
||||||
// Save raw file without extracting
|
// Save raw file without extracting
|
||||||
const filePath = path.join(directory, fileName)
|
const filePath = path.join(directory, fileName)
|
||||||
|
|||||||
Reference in New Issue
Block a user