UNPKG

rested

Version:

{REST}ed; {REST}ful Enterprise Data-as-a-Service (DaaS)

121 lines (101 loc) 5.57 kB
const supertest = require('supertest'); const msgpack = require('msgpack-lite'); const fixture = require('./fixtures/countries'); describe('Accept', () => { beforeAll(fixture.init); afterAll(fixture.deinit); const request = () => supertest(fixture.app()); it('get distinct values in csv', () => request().get('/api/countries') .query({ distinct: 'continent' }) .accept('text/csv') .expect(200, 'AS\nEU\nAF\nOC\nNA\nAN\nSA\n')) it('get json array in csv', () => request().get('/api/countries?select=_id name') .query({ limit: 3 }) .accept('text/csv') .expect(200, '_id,name\nTWN,Taiwan\nAFG,Afghanistan\nALB,Albania\n')) it('get json object in csv', () => request().get('/api/countries/TWN?select=_id name') .accept('text/csv') .expect(200, '_id,name\nTWN,Taiwan\n')) it('get distinct values in tsv', () => request().get('/api/countries') .query({ distinct: 'continent' }) .accept('text/tsv') .expect(200, 'AS\nEU\nAF\nOC\nNA\nAN\nSA\n')) it('get json array in tsv', () => request().get('/api/countries?select=_id name') .query({ limit: 3 }) .accept('text/tsv') .expect(200, '_id\tname\nTWN\tTaiwan\nAFG\tAfghanistan\nALB\tAlbania\n')) it('get json object in tsv', () => request().get('/api/countries/TWN?select=_id name') .accept('text/tsv') .expect(200, '_id\tname\nTWN\tTaiwan\n')) it('get distinct values in xml', () => request().get('/api/countries') .query({ distinct: 'continent' }) .accept('text/xml') .expect(200, '<?xml version="1.0" encoding="utf-8"?><ArrayOfCountry><Country>AS</Country><Country>EU</Country><Country>AF</Country><Country>OC</Country><Country>NA</Country><Country>AN</Country><Country>SA</Country></ArrayOfCountry>')) it('get json array in xml', () => request().get('/api/countries?select=_id name') .query({ limit: 3 }) .accept('text/xml') .expect(200, '<?xml version="1.0" encoding="utf-8"?><ArrayOfCountry><Country id="TWN"><name>Taiwan</name></Country><Country id="AFG"><name>Afghanistan</name></Country><Country id="ALB"><name>Albania</name></Country></ArrayOfCountry>')) it('get json object in xml', () => request().get('/api/countries/TWN?select=_id name') .accept('text/xml') .expect(200, '<?xml version="1.0" encoding="utf-8"?><Country id="TWN"><name>Taiwan</name></Country>')) it('get distinct values in text/yaml', () => request().get('/api/countries') .query({ distinct: 'continent' }) .accept('text/plain') .expect(200, '- AS\n- EU\n- AF\n- OC\n- NA\n- AN\n- SA\n')) it('get json array in text/yaml', () => request().get('/api/countries?select=_id name') .query({ limit: 3 }) .accept('text/plain') .expect(200, '- _id: TWN\n name: Taiwan\n- _id: AFG\n name: Afghanistan\n- _id: ALB\n name: Albania\n')) it('get json array in text/yaml', () => request().get('/api/countries/TWN?select=_id name') .accept('text/plain') .expect(200, '- _id: TWN\n name: Taiwan\n')) it('get distinct values in js/jsonp', () => request().get('/api/countries') .query({ distinct: 'continent' }) .accept('application/javascript') .expect(200, 'jsonp(["AS","EU","AF","OC","NA","AN","SA"],{"string":"SA"})')) it('get json array in js/jsonp', () => request().get('/api/countries?select=_id name') .query({ limit: 3 }) .accept('application/javascript') .expect(200, 'jsonp([{"_id":"TWN","name":"Taiwan"},{"_id":"AFG","name":"Afghanistan"},{"_id":"ALB","name":"Albania"}],{"_id":"ALB","name":"Albania"})')) it('get json object in js/jsonp', () => request().get('/api/countries/TWN?select=_id name') .accept('application/javascript') .expect(200, 'jsonp({"_id":"TWN","name":"Taiwan"})')) it('get distinct values in msgpack/octet-stream', () => request().get('/api/countries') .query({ distinct: 'continent' }) .accept('application/octet-stream') .expect('Content-Type', /octet-stream/) .expect(200) .then(({ body }) => expect(msgpack.decode(body)).toEqual(['AS', 'EU', 'AF', 'OC', 'NA', 'AN', 'SA']))) it('get json array in msgpack/octet-stream', () => request().get('/api/countries?select=_id name') .query({ limit: 3, sort: '$natural' }) .accept('application/octet-stream') .expect('Content-Type', /octet-stream/) .expect(200) .then(({ body }) => expect(msgpack.decode(body)).toEqual([ { "_id": "TWN", "name": "Taiwan" }, { "_id": "AFG", "name": "Afghanistan" }, { "_id": "ALB", "name": "Albania" }]))) it('get json object in msgpack/octet-stream', () => request().get('/api/countries/TWN?select=_id name') .accept('application/octet-stream') .expect('Content-Type', /octet-stream/) .expect(200) .then(({ body }) => expect(msgpack.decode(body)).toEqual({ "_id": "TWN", "name": "Taiwan" }))) });