const chai = require('chai'); const expect = chai.expect; const chaiHttp = require('chai-http'); const app = require('../app'); chai.use(chaiHttp); describe('Testing the JSON storage', () => { describe("GET capabilities redirect", () => { it("It should redirect to /capabilities endpoint", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getcapabilities&acceptversions=1.0") .redirects(0) .end((err, res) => { expect(res).to.redirectTo('/service/v1/capabilities?service=3dps&request=getcapabilities&acceptversions=1.0'); done(); }); }); }); describe("GET capabilities", () => { it("It should get the capabilities", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getcapabilities&acceptversions=1.0") .end((err, res) => { expect(res).to.have.status(200); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET scene redirect", () => { it("It should redirect to /scene endpoint", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getscene&acceptversions=1.0&layers=Niedernhall&crs=EPSG:4321") .redirects(0) .end((err, res) => { expect(res).to.redirectTo('/service/v1/scene?service=3dps&request=getscene&acceptversions=1.0&layers=Niedernhall&crs=EPSG%3A4321'); done(); }); }); }); describe("GET scene", () => { it("It should get Niedernhall 3D-Tiles", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getscene&acceptversions=1.0&layers=Niedernhall&crs=EPSG:4321") .end((err, res) => { expect(res).to.have.status(200); expect(res).to.have.header('content-type', 'application/json; charset=utf-8'); expect(res.body).to.be.instanceof(Array); expect(res.body[0]).to.be.instanceof(Object); expect(res.body[0].id).to.be.equal('Niedernhall'); done(); }); }); }); describe("GET scene with two layers", () => { it("It should get Niedernhall 3D-Tiles and Hamburg 3D-Tiles", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getscene&acceptversions=1.0&layers=Buildings_Hamburg,Niedernhall&crs=EPSG:4321") .end((err, res) => { expect(res).to.have.status(200); expect(res).to.have.header('content-type', 'application/json; charset=utf-8'); expect(res.body).to.be.instanceof(Array); expect(res.body).to.have.length(2); expect(res.body[0]).to.be.instanceof(Object); expect(res.body[1]).to.be.instanceof(Object); done(); }); }); }); describe("GET scene with bounding box", () => { it("It should get Niedernhall 3D-Tiles and ignore the Hamburg layer", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getscene&acceptversions=1.0&layers=Buildings_Hamburg,Niedernhall&crs=EPSG:4321&boundingbox=9.599292965,49.2666170807472,9.63473690336899,49.30961789948958") .end((err, res) => { expect(res).to.have.status(200); expect(res).to.have.header('content-type', 'application/json; charset=utf-8'); expect(res.body).to.be.instanceof(Array); expect(res.body[0]).to.be.instanceof(Object); expect(res.body[0].id).to.be.equal('Niedernhall'); done(); }); }); }); describe("GET capabilities with mandatory query parameter missing: service", () => { it("It should return 400 and an XML exception specifying the missing parameter", (done) => { chai.request(app) .get("/service/v1?request=getcapabilities&acceptversions=1.0") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET capabilities with mandatory query parameter missing: request", () => { it("It should return 400 and an XML exception specifying the missing parameter", (done) => { chai.request(app) .get("/service/v1?service=3DPS&acceptversions=1.0") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET capabilities with mandatory query parameter missing: acceptversions", () => { it("It should return 400 and an XML exception specifying the missing parameter", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getcapabilities") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET capabilities with mandatory query parameter having invalid value: service", () => { it("It should return 400 and an XML exception specifying the invalid parameter", (done) => { chai.request(app) .get("/service/v1?service=ABCD&request=getcapabilities&acceptversions=1.0") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET capabilities with mandatory query parameter having invalid value: request", () => { it("It should return 400 and an XML exception specifying the invalid parameter", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=ABCD&acceptversions=1.0") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET capabilities with mandatory query parameter having invalid value: acceptversions", () => { it("It should return 400 and an XML exception specifying the invalid parameter", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getcapabilities&acceptversions=ABCD") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET scene with mandatory query parameter missing: crs", () => { it("It should return 400 and an XML exception specifying the missing parameter", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getscene&acceptversions=1.0&layers=Niedernhall&boundingbox=9,49.2,9.8,49.3") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET scene with mandatory query parameter having invalid value: crs", () => { it("It should return 400 and an XML exception specifying the invalid parameter", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getscene&acceptversions=1.0&layers=Niedernhall&crs=ABCD:4321&boundingbox=9,49.2,9.8,49.3") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET scene with invalid bounding box: includes alphanumenric values", () => { it("It should return 400 and an XML exception specifying the invalid parameter", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getscene&acceptversions=1.0&layers=Niedernhall&crs=EPSG:4321&boundingbox=ABCD,49.2,9.8,49.3") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); describe("GET scene with invalid bounding box: min Longitude is greater than max Longitude", () => { it("It should return 400 and an XML exception specifying the invalid parameter", (done) => { chai.request(app) .get("/service/v1?service=3DPS&request=getscene&acceptversions=1.0&layers=Niedernhall&crs=EPSG:4321&boundingbox=10,49.2,9.8,49.3") .end((err, res) => { expect(res).to.have.status(400); expect(res).to.have.header('content-type', 'application/xml; charset=utf-8'); done(); }); }); }); });