mirror of
https://github.com/Kong/insomnia
synced 2024-11-08 14:49:53 +00:00
d3ce502c13
* Install plugins from npm * A bit more * Error handling and messaging
78 lines
2.5 KiB
JavaScript
78 lines
2.5 KiB
JavaScript
import * as plugin from '../response';
|
|
import {globalBeforeEach} from '../../../__jest__/before-each';
|
|
|
|
const PLUGIN = {
|
|
name: 'my-plugin',
|
|
version: '1.0.0',
|
|
directory: '/plugins/my-plugin',
|
|
module: {}
|
|
};
|
|
|
|
describe('init()', () => {
|
|
beforeEach(globalBeforeEach);
|
|
it('initializes correctly', async () => {
|
|
const result = plugin.init(PLUGIN, {});
|
|
expect(Object.keys(result)).toEqual(['response']);
|
|
expect(Object.keys(result.response)).toEqual([
|
|
'getRequestId',
|
|
'getStatusCode',
|
|
'getStatusMessage',
|
|
'getBytesRead',
|
|
'getTime',
|
|
'getBody',
|
|
'getHeader',
|
|
'hasHeader'
|
|
]);
|
|
});
|
|
|
|
it('fails to initialize without response', () => {
|
|
expect(() => plugin.init(PLUGIN))
|
|
.toThrowError('contexts.response initialized without response');
|
|
});
|
|
});
|
|
|
|
describe('response.*', () => {
|
|
beforeEach(globalBeforeEach);
|
|
it('works for basic and full response', async () => {
|
|
const response = {
|
|
parentId: 'req_1',
|
|
url: 'https://insomnia.rest',
|
|
statusCode: 200,
|
|
statusMessage: 'OK',
|
|
bytesRead: 123,
|
|
elapsedTime: 321
|
|
};
|
|
const result = plugin.init(PLUGIN, response, Buffer.from('Hello World!'));
|
|
expect(result.response.getRequestId()).toBe('req_1');
|
|
expect(result.response.getStatusCode()).toBe(200);
|
|
expect(result.response.getBytesRead()).toBe(123);
|
|
expect(result.response.getTime()).toBe(321);
|
|
expect(result.response.getBody().toString()).toBe('Hello World!');
|
|
});
|
|
|
|
it('works for basic and empty response', async () => {
|
|
const result = plugin.init(PLUGIN, {});
|
|
expect(result.response.getRequestId()).toBe('');
|
|
expect(result.response.getStatusCode()).toBe(0);
|
|
expect(result.response.getBytesRead()).toBe(0);
|
|
expect(result.response.getTime()).toBe(0);
|
|
expect(result.response.getBody()).toBeNull();
|
|
});
|
|
|
|
it('works for getting headers', () => {
|
|
const response = {
|
|
headers: [
|
|
{name: 'content-type', value: 'application/json'},
|
|
{name: 'set-cookie', value: 'foo=bar'},
|
|
{name: 'set-cookie', value: 'baz=qux'}
|
|
]
|
|
};
|
|
const result = plugin.init(PLUGIN, response);
|
|
expect(result.response.getHeader('Does-Not-Exist')).toBeNull();
|
|
expect(result.response.getHeader('CONTENT-TYPE')).toBe('application/json');
|
|
expect(result.response.getHeader('set-cookie')).toEqual(['foo=bar', 'baz=qux']);
|
|
expect(result.response.hasHeader('foo')).toBe(false);
|
|
expect(result.response.hasHeader('ConTent-Type')).toBe(true);
|
|
});
|
|
});
|