UNPKG

x-mock

Version:

Mock response generator for OAS.

197 lines (177 loc) 6.79 kB
const Assert = require('assert'); const Xmock = require('../lib'); const Path = require('path'); describe('Response Mock generator', () => { let apiPath = Path.resolve(__dirname, 'fixture/petstore.json'); let mixins = [ { 'dogname': function () { return 'Fido' } } ] let xmock = Xmock(apiPath, { mixins }); it('should generate response mock for path /store/order/{orderId}', (done) => { xmock.response({ path: '/store/order/{orderId}', operation: 'get', response: '200' }, (err, mock) => { Assert.ok(!err, 'No error'); Assert.ok(mock, 'Generated mock'); let resp = mock; Assert.ok(resp, 'Generated response'); Assert.ok(Number.isInteger(resp.id), 'id is integer'); Assert.ok(Number.isInteger(resp.petId), 'petId is integer'); Assert.ok([1, 3, 5].indexOf(resp.quantity) != -1, 'quantity is integer enum'); Assert.ok(typeof resp.shipDate === 'string', 'shipDate is string'); Assert.ok(['placed', 'approved', 'delivered'].indexOf(resp.status) !== -1, 'status is enum'); Assert.ok(typeof resp.complete === 'boolean', 'complete is boolean'); done(); }); }); it('should generate response mock for path /pet/findByStatus', (done) => { xmock.response({ path: '/pet/findByStatus', operation: 'get', response: '200' }, (err, mock) => { Assert.ok(!err, 'No error'); Assert.ok(mock, 'Generated mock'); let resp = mock; Assert.ok(resp, 'Generated response'); Assert.ok(Array.isArray(resp), 'response is Pet array'); let pet = resp[0]; Assert.ok(pet, 'Ok Pet response'); Assert.ok(Number.isInteger(pet.id), 'id is integer'); //TODO add asserts for pending props done(); }); }); it('should generate response mock for path /pet/{petId}', (done) => { xmock.response({ path: '/pet/{petId}', operation: 'get', response: '200' }, (err, mock) => { Assert.ok(!err, 'No error'); Assert.ok(mock, 'Generated mock'); let resp = mock; Assert.ok(resp, 'Generated response'); //TODO add asserts for pending props done(); }); }); it('should generate response mock for path /pet/{petId}/uploadImage', (done) => { xmock.response({ path: '/pet/{petId}/uploadImage', operation: 'post', response: '200' }, (err, mock) => { Assert.ok(!err, 'No error'); Assert.ok(mock, 'Generated mock'); let resp = mock; Assert.ok(resp, 'Generated response'); //TODO add asserts for pending props done(); }); }); it('should generate response mock for path /store/inventory', (done) => { xmock.response({ path: '/store/inventory', operation: 'get', response: '200' }, (err, mock) => { Assert.ok(!err, 'No error'); Assert.ok(mock, 'Generated mock'); let resp = mock; Assert.ok(resp, 'Generated response'); //TODO add asserts for pending props done(); }); }); it('should generate response mock for path /store/order', (done) => { xmock.response({ path: '/store/order', operation: 'post', response: '200' }, (err, mock) => { Assert.ok(!err, 'No error'); Assert.ok(mock, 'Generated mock'); let resp = mock; Assert.ok(resp, 'Generated response'); //TODO add asserts for pending props done(); }); }); it('should generate response mock for path /user/login', (done) => { xmock.response({ path: '/user/login', operation: 'get', response: '200' }, (err, mock) => { Assert.ok(!err, 'No error'); Assert.ok(mock, 'Generated mock'); let resp = mock; Assert.ok(resp, 'Generated response'); //TODO add asserts for pending props done(); }); }); it('should generate missing operation error for /user/login PUT 200', (done) => { xmock.response({ path: '/user/login', operation: 'put', response: '200' }, (err, mock) => { Assert.ok(err, 'Should get an error'); // Assert.ok(err.id, 'Error object should have an id') Assert.ok(err.name, 'Error object should have a name') Assert.ok(err.message, 'Error object should have a message') Assert.ok(!mock, 'No mock should be generated'); done(); }); }); it('should generate missing response error for /user/login GET 700', (done) => { xmock.response({ path: '/user/login', operation: 'get', response: '700' }, (err, mock) => { Assert.ok(err, 'Should get an error'); // Assert.ok(err.id, 'Error object should have an id') Assert.ok(err.name, 'Error object should have a name') Assert.ok(err.message, 'Error object should have a message') Assert.ok(!mock, 'No mock should be generated'); done(); }); }); it('should generate missing path error for /no/path GET 200', (done) => { xmock.response({ path: '/no/path', operation: 'get', response: '200' }, (err, mock) => { Assert.ok(err, 'Should get an error'); // Assert.ok(err.id, 'Error object should have an id') Assert.ok(err.name, 'Error object should have a name') Assert.ok(err.message, 'Error object should have a message') Assert.ok(!mock, 'No mock should be generated'); done(); }); }); it('should generate missing schema error for /pet POST 405', (done) => { xmock.response({ path: '/pet', operation: 'post', response: '405' }, (err, mock) => { Assert.ok(err, 'Should get an error'); // Assert.ok(err.id, 'Error object should have an id') Assert.ok(err.name, 'Error object should have a name') Assert.ok(err.message, 'Error object should have a message') Assert.ok(!mock, 'No mock should be generated'); done(); }); }); });