Commit 84cdb6a4 authored by Athanasios's avatar Athanasios
Browse files

add testing framewrok

parent 567cf4c1
This diff is collapsed.
......@@ -4,8 +4,8 @@
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js"
"start": "node app.js",
"test": "mocha"
},
"repository": {
"type": "git",
......@@ -22,5 +22,10 @@
"express": "^4.17.1",
"express-validator": "^6.4.0",
"pug": "^2.0.4"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.2"
}
}
\ No newline at end of file
}
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();
});
});
});
});
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment