file-box
Version:
Pack a File into Box for easy move/transfer between servers no matter of where it is.(local path, remote url, or cloud storage)
71 lines (54 loc) • 2.23 kB
text/typescript
// tslint:disable:no-shadowed-variable
import { test } from 'tstest'
import {
dataUrlToBase64,
httpHeaderToFileName,
httpHeadHeader,
httpStream,
streamToBuffer,
} from './misc.js'
test('dataUrl to base64', async t => {
const base64 = [
'R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl',
'3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
'ACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGA',
'iqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7',
].join('')
const dataUrl = [
'data:image/png;base64,',
base64,
].join('')
t.equal(base64, dataUrlToBase64(dataUrl), 'should get base64 from dataUrl')
})
test('httpHeadHeader', async t => {
const URL = 'https://github.com/huan/file-box/archive/v0.6.tar.gz'
const EXPECTED_HEADERS_KEY = 'content-disposition'
const EXPECTED_HEADERS_VALUE = 'attachment; filename=file-box-0.6.tar.gz'
const headers = await httpHeadHeader(URL)
t.equal(headers[EXPECTED_HEADERS_KEY], EXPECTED_HEADERS_VALUE, 'should get the headers right')
})
test('httpHeaderToFileName', async t => {
const HEADERS_QUOTATION_MARK: any = {
'content-disposition': 'attachment; filename="db-0.0.19.zip"',
}
const HEADERS_NO_QUOTATION_MARK: any = {
'content-disposition': 'attachment; filename=db-0.0.19.zip',
}
const EXPECTED_FILE_NAME = 'db-0.0.19.zip'
let filename = httpHeaderToFileName(HEADERS_QUOTATION_MARK)
t.equal(filename, EXPECTED_FILE_NAME, 'should get filename with quotation mark')
filename = httpHeaderToFileName(HEADERS_NO_QUOTATION_MARK)
t.equal(filename, EXPECTED_FILE_NAME, 'should get filename with no quotation mark')
})
test('httpStream', async t => {
const URL = 'https://httpbin.org/headers'
const MOL_KEY = 'Mol'
const MOL_VAL = '42'
const headers = {} as { [idx: string]: string }
headers[MOL_KEY] = MOL_VAL
const res = await httpStream(URL, headers)
const buffer = await streamToBuffer(res)
const obj = JSON.parse(buffer.toString())
t.equal(obj.headers[MOL_KEY], MOL_VAL, 'should send the header right')
})