UNPKG

json-routing

Version:

JSON configurable MVC routing for express 4

254 lines (219 loc) 7.98 kB
import {routeInfo} from "./demo/server"; import * as chai from "chai"; const chaiHttp = require("chai-http"); const should = chai.should(); const expect = chai.expect; const URL = "http://localhost:3000"; chai.use(chaiHttp); describe('Server is Up: ', () => { it('Has 13 routes', () => { routeInfo.length.should.be.eql(18); }); it('/GET return 200', (done) => { chai.request(URL) .get('/') .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); //res.body.should.be.a('array'); //res.body.length.should.be.eql(0); done(); }); }); }); describe('Basic routes: ', () => { it('/GET return "get index"', (done) => { chai.request(URL) .get('/') .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('message').eql('get index'); done(); }); }); it('/POST return "post index"', (done) => { chai.request(URL) .post('/') .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('message').eql('post index'); done(); }); }); it('/GET without route params return "get index"', (done) => { chai.request(URL) .get('/noroute') .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a('object'); res.body.should.have.property('message').eql('get index'); done(); }); }); }); describe('Middleware: ', () => { it('/hasmiddleware GET - as array - has property "mdlw"', (done) => { chai.request(URL) .get("/hasmiddleware") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("mdlw").eql(true); done(); }); }); it('/hasmiddleware POST - as string - has property "mdlw"', (done) => { chai.request(URL) .post("/hasmiddleware") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("mdlw").eql(true); done(); }); }); it('/customMiddlewarePath GET - has custom path middleware - has property "mdlw"', (done) => { chai.request(URL) .get("/customMiddlewarePath") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("mdlw").eql(true); done(); }); }); }); describe('Controller custom name: ', () => { it('/customControllerPath GET - has custom controller path', (done) => { chai.request(URL) .get("/customControllerPath") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("message").eql("custom controller"); done(); }); }); }); describe('Global params: ', () => { it('/other/hasbaseUrl GET - BASEURL has "/other"', (done) => { chai.request(URL) .get("/other/hasbaseUrl") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("message").eql("index other"); done(); }); }); it('/globalctrl GET - CTRL PATH custom', (done) => { chai.request(URL) .get("/globalctrl") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("message").eql("custom controller"); done(); }); }); it('/customctrlroute GET - use ROUTE NOT GLOBAL', (done) => { chai.request(URL) .get("/globalctrl/customctrlroute") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("message").eql("get index"); done(); }); }); it('/globalmdlw/plusone GET - MERGE MDLW global with route, has 3 mdlw', (done) => { chai.request(URL) .get("/globalmdlw/plusone") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("ma").eql(true); res.body.should.have.property("mb").eql(true); res.body.should.have.property("mc").eql(true); done(); }); }); }); describe('Regex route: ', () => { it('/dragonfly GET - PURE REGEX, RE /.*fly$/', (done) => { chai.request(URL) .get("/dragonfly") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("message").eql("regex done"); done(); }); }); it('/dragonflyno GET - must return 404, RE /.*fly$/', (done) => { chai.request(URL) .get("/dragonflyno") .end((err, res) => { expect(res).to.have.status(404); done(); }); }); }); describe('JWT route: ', () => { it('/protected GET - must return 401', (done) => { chai.request(URL) .get("/protected") .end((err, res) => { expect(res).to.have.status(401); done(); }); }); it('/notprotected GET - must return 200', (done) => { chai.request(URL) .get("/notprotected") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("message").eql("NOT protected by jwt"); done(); }); }); }); describe('Validation: ', () => { it('/validateparam/23 GET - must return 400', (done) => { chai.request(URL) .get("/validateparam/23") .end((err, res) => { expect(res).to.have.status(400); res.body.should.be.a("object"); res.body.should.have.property("message").eql("Validation error - id Must be between 2 and 10 chars long"); done(); }); }); it('/validateparam/232323 GET - must return 200', (done) => { chai.request(URL) .get("/validateparam/232323") .end((err, res) => { expect(err).to.be.null; expect(res).to.have.status(200); res.body.should.be.a("object"); res.body.should.have.property("message").eql("validate params"); done(); }); }); });