insomnia/app/network/__tests__/multipart.test.js

84 lines
2.3 KiB
JavaScript
Raw Normal View History

import fs from 'fs';
import {globalBeforeEach} from '../../__jest__/before-each';
import {buildMultipart, DEFAULT_BOUNDARY} from '../multipart';
import path from 'path';
describe('buildMultipart()', () => {
beforeEach(globalBeforeEach);
it('builds a simple request', async () => {
const {filePath, boundary, contentLength} = await buildMultipart([
{name: 'foo', value: 'bar'},
{name: 'multi-line', value: 'Hello\nWorld!'}
]);
expect(boundary).toBe(DEFAULT_BOUNDARY);
expect(contentLength).toBe(189);
expect(fs.readFileSync(filePath, 'utf8')).toBe([
2017-10-12 17:32:26 +00:00
`--${boundary}`,
'Content-Disposition: form-data; name="foo"',
'',
'bar',
2017-10-12 17:32:26 +00:00
`--${boundary}`,
'Content-Disposition: form-data; name="multi-line"',
'',
2017-10-12 11:34:51 +00:00
'Hello\nWorld!',
2017-10-12 17:32:26 +00:00
`--${boundary}--`,
2017-10-12 11:34:51 +00:00
''
].join('\r\n'));
});
it('builds with file', async () => {
const fileName = path.resolve(path.join(__dirname, './testfile.txt'));
const {filePath, boundary, contentLength} = await buildMultipart([
{name: 'foo', value: 'bar'},
{name: 'file', type: 'file', fileName: fileName},
{name: 'baz', value: 'qux'}
]);
expect(boundary).toBe(DEFAULT_BOUNDARY);
expect(contentLength).toBe(322);
expect(fs.readFileSync(filePath, 'utf8')).toBe([
2017-10-12 17:32:26 +00:00
`--${boundary}`,
'Content-Disposition: form-data; name="foo"',
'',
'bar',
2017-10-12 17:32:26 +00:00
`--${boundary}`,
'Content-Disposition: form-data; name="file"; filename="testfile.txt"',
'Content-Type: text/plain',
'',
2017-10-12 11:34:51 +00:00
'Hello World!\n\nHow are you?',
2017-10-12 17:32:26 +00:00
`--${boundary}`,
'Content-Disposition: form-data; name="baz"',
'',
'qux',
2017-10-12 17:32:26 +00:00
`--${boundary}--`,
2017-10-12 11:34:51 +00:00
''
].join('\r\n'));
});
it('skips entries with no name or value', async () => {
const {filePath, boundary, contentLength} = await buildMultipart([
{value: 'bar'},
{name: 'foo'},
{name: '', value: ''},
{name: '', type: 'file', fileName: ''}
]);
expect(boundary).toBe(DEFAULT_BOUNDARY);
expect(contentLength).toBe(167);
expect(fs.readFileSync(filePath, 'utf8')).toBe([
2017-10-12 17:32:26 +00:00
`--${boundary}`,
'Content-Disposition: form-data; name=""',
'',
'bar',
2017-10-12 17:32:26 +00:00
`--${boundary}`,
'Content-Disposition: form-data; name="foo"',
'',
'',
2017-10-12 17:32:26 +00:00
`--${boundary}--`,
2017-10-12 11:34:51 +00:00
''
].join('\r\n'));
});
});