insomnia/app/network/__tests__/multipart.test.js
2017-10-12 19:58:49 +02:00

80 lines
2.2 KiB
JavaScript

import {globalBeforeEach} from '../../__jest__/before-each';
import {buildMultipart} from '../multipart';
import path from 'path';
describe('buildMultipart()', () => {
beforeEach(globalBeforeEach);
it('builds a simple request', async () => {
const {body, boundary} = buildMultipart([
{name: 'foo', value: 'bar'},
{name: 'multi-line', value: 'Hello\nWorld!'}
]);
expect(boundary).toBe('------------------------X-INSOMNIA-BOUNDARY');
expect(body.toString()).toBe([
`--${boundary}`,
'Content-Disposition: form-data; name="foo"',
'',
'bar',
`--${boundary}`,
'Content-Disposition: form-data; name="multi-line"',
'',
'Hello\nWorld!',
`--${boundary}--`,
''
].join('\r\n'));
});
it('builds with file', async () => {
const fileName = path.resolve(path.join(__dirname, './testfile.txt'));
const {body, boundary} = buildMultipart([
{name: 'foo', value: 'bar'},
{name: 'file', type: 'file', fileName: fileName},
{name: 'baz', value: 'qux'}
]);
expect(boundary).toBe('------------------------X-INSOMNIA-BOUNDARY');
expect(body.toString()).toBe([
`--${boundary}`,
'Content-Disposition: form-data; name="foo"',
'',
'bar',
`--${boundary}`,
'Content-Disposition: form-data; name="file"; filename="testfile.txt"',
'Content-Type: text/plain',
'',
'Hello World!\n\nHow are you?',
`--${boundary}`,
'Content-Disposition: form-data; name="baz"',
'',
'qux',
`--${boundary}--`,
''
].join('\r\n'));
});
it('skips entries with no name or value', async () => {
const {body, boundary} = buildMultipart([
{value: 'bar'},
{name: 'foo'},
{name: '', value: ''},
{name: '', type: 'file', fileName: ''}
]);
expect(boundary).toBe('------------------------X-INSOMNIA-BOUNDARY');
expect(body.toString()).toBe([
`--${boundary}`,
'Content-Disposition: form-data; name=""',
'',
'bar',
`--${boundary}`,
'Content-Disposition: form-data; name="foo"',
'',
'',
`--${boundary}--`,
''
].join('\r\n'));
});
});