mirror of
https://github.com/Kong/insomnia
synced 2024-11-08 23:00:30 +00:00
196 lines
4.9 KiB
JavaScript
Executable File
196 lines
4.9 KiB
JavaScript
Executable File
/* global describe, it */
|
|
|
|
'use strict';
|
|
|
|
var fixtures = require('./fixtures');
|
|
var HTTPSnippet = require('../src');
|
|
|
|
var should = require('should');
|
|
|
|
describe('HTTPSnippet', function() {
|
|
it('should return false if no matching target', function(done) {
|
|
var snippet = new HTTPSnippet(fixtures.requests.short);
|
|
|
|
snippet.convert(null).should.eql(false);
|
|
|
|
done();
|
|
});
|
|
|
|
it('should fail validation', function(done) {
|
|
var snippet;
|
|
|
|
/* eslint-disable no-extra-parens */
|
|
(function() {
|
|
snippet = new HTTPSnippet({ yolo: 'foo' });
|
|
}.should.throw(Error));
|
|
|
|
should.not.exist(snippet);
|
|
|
|
done();
|
|
});
|
|
|
|
it('should parse HAR file with multiple entries', function(done) {
|
|
var snippet = new HTTPSnippet(fixtures.har);
|
|
|
|
snippet.should.have.property('requests').and.be.an.Array;
|
|
snippet.requests.length.should.equal(2);
|
|
|
|
var results = snippet.convert('shell');
|
|
|
|
results.should.be.an.Array;
|
|
results.length.should.equal(2);
|
|
|
|
done();
|
|
});
|
|
|
|
it('should convert multipart/mixed to multipart/form-data', function(done) {
|
|
var req = new HTTPSnippet(fixtures.mimetypes['multipart/mixed'])
|
|
.requests[0];
|
|
|
|
req.postData.mimeType.should.eql('multipart/form-data');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should convert multipart/related to multipart/form-data', function(done) {
|
|
var req = new HTTPSnippet(fixtures.mimetypes['multipart/related'])
|
|
.requests[0];
|
|
|
|
req.postData.mimeType.should.eql('multipart/form-data');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should convert multipart/alternative to multipart/form-data', function(done) {
|
|
var req = new HTTPSnippet(fixtures.mimetypes['multipart/alternative'])
|
|
.requests[0];
|
|
|
|
req.postData.mimeType.should.eql('multipart/form-data');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should convert text/json to application/json', function(done) {
|
|
var req = new HTTPSnippet(fixtures.mimetypes['text/json']).requests[0];
|
|
|
|
req.postData.mimeType.should.eql('application/json');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should convert text/x-json to application/json', function(done) {
|
|
var req = new HTTPSnippet(fixtures.mimetypes['text/x-json']).requests[0];
|
|
|
|
req.postData.mimeType.should.eql('application/json');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should convert application/x-json to application/json', function(done) {
|
|
var req = new HTTPSnippet(fixtures.mimetypes['application/x-json'])
|
|
.requests[0];
|
|
|
|
req.postData.mimeType.should.eql('application/json');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should gracefully fallback if not able to parse JSON', function(done) {
|
|
var req = new HTTPSnippet(fixtures.mimetypes['invalid-json']).requests[0];
|
|
|
|
req.postData.mimeType.should.eql('text/plain');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should set postData.text = empty string when postData.params === undefined in application/x-www-form-urlencoded', function(done) {
|
|
var req = new HTTPSnippet(
|
|
fixtures.mimetypes['application/x-www-form-urlencoded']
|
|
).requests[0];
|
|
|
|
req.postData.text.should.eql('');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should add "uriObj" to source object', function(done) {
|
|
var req = new HTTPSnippet(fixtures.requests.query).requests[0];
|
|
|
|
req.uriObj.should.be.an.Object;
|
|
req.uriObj.should.eql({
|
|
auth: null,
|
|
hash: null,
|
|
host: 'mockbin.com',
|
|
hostname: 'mockbin.com',
|
|
href: 'http://mockbin.com/har?key=value',
|
|
path: '/har?foo=bar&foo=baz&baz=abc&key=value',
|
|
pathname: '/har',
|
|
port: null,
|
|
protocol: 'http:',
|
|
query: {
|
|
baz: 'abc',
|
|
key: 'value',
|
|
foo: ['bar', 'baz']
|
|
},
|
|
search: 'foo=bar&foo=baz&baz=abc&key=value',
|
|
slashes: true
|
|
});
|
|
|
|
done();
|
|
});
|
|
|
|
it('should add "queryObj" to source object', function(done) {
|
|
var req = new HTTPSnippet(fixtures.requests.query).requests[0];
|
|
|
|
req.queryObj.should.be.an.Object;
|
|
req.queryObj.should.eql({
|
|
baz: 'abc',
|
|
key: 'value',
|
|
foo: ['bar', 'baz']
|
|
});
|
|
|
|
done();
|
|
});
|
|
|
|
it('should add "headersObj" to source object', function(done) {
|
|
var req = new HTTPSnippet(fixtures.requests.headers).requests[0];
|
|
|
|
req.headersObj.should.be.an.Object;
|
|
req.headersObj.should.eql({
|
|
accept: 'application/json',
|
|
'x-foo': 'Bar'
|
|
});
|
|
|
|
done();
|
|
});
|
|
|
|
it('should modify orignal url to strip query string', function(done) {
|
|
var req = new HTTPSnippet(fixtures.requests.query).requests[0];
|
|
|
|
req.url.should.be.a.String;
|
|
req.url.should.eql('http://mockbin.com/har');
|
|
|
|
done();
|
|
});
|
|
|
|
it('should add "fullUrl" to source object', function(done) {
|
|
var req = new HTTPSnippet(fixtures.requests.query).requests[0];
|
|
|
|
req.fullUrl.should.be.a.String;
|
|
req.fullUrl.should.eql(
|
|
'http://mockbin.com/har?foo=bar&foo=baz&baz=abc&key=value'
|
|
);
|
|
|
|
done();
|
|
});
|
|
|
|
it('should fix "path" property of "uriObj" to match queryString', function(done) {
|
|
var req = new HTTPSnippet(fixtures.requests.query).requests[0];
|
|
|
|
req.uriObj.path.should.be.a.String;
|
|
req.uriObj.path.should.eql('/har?foo=bar&foo=baz&baz=abc&key=value');
|
|
|
|
done();
|
|
});
|
|
});
|