All api calls from tests use same chaiHttp implementation

Removes a list of fetch alternatives after being replaced by chaiHttp:
 - request
 - request-promise
 - supertest
 - supertest-as-promised
This commit is contained in:
2022-08-20 16:52:34 +02:00
parent 104b5e09fd
commit b4758040ee
9 changed files with 130 additions and 83 deletions

View File

@@ -19,22 +19,16 @@
"classDocs": "scripts/generate-class-docs.sh" "classDocs": "scripts/generate-class-docs.sh"
}, },
"dependencies": { "dependencies": {
"axios": "^0.18.0",
"bcrypt": "^5.0.1", "bcrypt": "^5.0.1",
"body-parser": "~1.18.2", "body-parser": "~1.18.2",
"cookie-parser": "^1.4.6", "cookie-parser": "^1.4.6",
"cross-env": "~5.1.4",
"express": "~4.16.0", "express": "~4.16.0",
"form-data": "^2.5.1", "form-data": "^2.5.1",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",
"km-moviedb": "^0.2.12", "km-moviedb": "^0.2.12",
"node-cache": "^4.1.1",
"node-fetch": "^2.6.0",
"python-shell": "^0.5.0", "python-shell": "^0.5.0",
"raven": "^2.4.2", "raven": "^2.4.2",
"redis": "^3.0.2", "redis": "^3.0.2",
"request": "^2.87.0",
"request-promise": "^4.2",
"sqlite3": "^5.0.1" "sqlite3": "^5.0.1"
}, },
"devDependencies": { "devDependencies": {
@@ -56,8 +50,6 @@
"mocha": "8.4.0", "mocha": "8.4.0",
"mocha-lcov-reporter": "^1.3.0", "mocha-lcov-reporter": "^1.3.0",
"nyc": "15.1.0", "nyc": "15.1.0",
"prettier": "^2.7.1", "prettier": "^2.7.1"
"supertest": "^3.0.0",
"supertest-as-promised": "^4.0.1"
} }
} }

View File

@@ -1,17 +1,24 @@
const assert = require("assert"); const assert = require("assert");
const request = require("supertest-as-promised"); const chai = require("chai");
const app = require("../../src/webserver/app"); const chaiHttp = require("chai-http");
const server = require("../../src/webserver/server");
const resetDatabase = require("../helpers/resetDatabase"); const resetDatabase = require("../helpers/resetDatabase");
chai.use(chaiHttp);
describe("As a user I want to register", () => { describe("As a user I want to register", () => {
beforeEach(() => resetDatabase()); beforeEach(() => resetDatabase());
it("should return 200 and a message indicating success", () => it("should return 200 and a message indicating success", done => {
request(app) chai
.request(server)
.post("/api/v1/user") .post("/api/v1/user")
.send({ username: "test", email: "test@gmail.com", password: "password" }) .send({ username: "test", email: "test@gmail.com", password: "password" })
.expect(200) .end((error, response) => {
.then(response => assert.equal(response?.status, 200);
assert.equal(response.body.message, "Welcome to Seasoned!") assert.equal(response?.body?.message, "Welcome to Seasoned!");
)); done();
});
});
}); });

View File

@@ -1,24 +1,40 @@
const request = require("supertest-as-promised"); const assert = require("assert");
const app = require("../../src/webserver/app"); const chai = require("chai");
const chaiHttp = require("chai-http");
const server = require("../../src/webserver/server");
const createUser = require("../helpers/createUser"); const createUser = require("../helpers/createUser");
const resetDatabase = require("../helpers/resetDatabase"); const resetDatabase = require("../helpers/resetDatabase");
// const assert = require("assert");
chai.use(chaiHttp);
describe("As a user I want to log in", () => { describe("As a user I want to log in", () => {
beforeEach(() => { beforeEach(() => resetDatabase());
return resetDatabase().then(() => createUser("test_user", "password")); beforeEach(() => createUser("test_user", "password"));
});
it("should return 200 with a token if correct credentials are given", () => it("should return 200 with a token if correct credentials are given", done => {
request(app) chai
.request(server)
.post("/api/v1/user/login") .post("/api/v1/user/login")
.send({ username: "test_user", password: "password" }) .send({ username: "test_user", password: "password" })
.expect(200)); .end((error, response) => {
// .then(response => assert.equal(typeof response.body.token, "string"))); // console.log(response);
it("should return 401 if incorrect credentials are given", () => assert.equal(response?.status, 200);
request(app) done();
});
});
it("should return 401 if incorrect credentials are given", done => {
chai
.request(server)
.post("/api/v1/user/login") .post("/api/v1/user/login")
.send({ username: "test_user", password: "anti-password" }) .send({ username: "test_user", password: "anti-password" })
.expect(401)); .end((error, response) => {
// console.log(response);
assert.equal(response?.status, 401);
done();
});
});
}); });

View File

@@ -1,17 +1,26 @@
const request = require("supertest-as-promised"); const assert = require("assert");
const app = require("../../src/webserver/app"); const chai = require("chai");
const chaiHttp = require("chai-http");
const server = require("../../src/webserver/server");
const resetDatabase = require("../helpers/resetDatabase"); const resetDatabase = require("../helpers/resetDatabase");
// const assert = require("assert"); // const assert = require("assert");
chai.use(chaiHttp);
describe("As a user I want a forbidden error if the token is malformed", () => { describe("As a user I want a forbidden error if the token is malformed", () => {
beforeEach(() => resetDatabase()); beforeEach(() => resetDatabase());
it("should return 401", () => it("should return 401", done => {
request(app) chai
.request(server)
.get("/api/v1/user/settings") .get("/api/v1/user/settings")
.set("Authorization", "maLfOrMed TOKEN") .set("Authorization", "maLfOrMed TOKEN")
.expect(401)); .end((error, response) => {
assert.equal(response?.status, 401);
done();
});
});
// .then(response => { // .then(response => {
// assert.equal(response.body.error, "You must be logged in."); // assert.equal(response.body.error, "You must be logged in.");
// })); // }));}
}); });

View File

@@ -1,23 +1,30 @@
const assert = require("assert"); const assert = require("assert");
const request = require("supertest-as-promised"); const chai = require("chai");
const app = require("../../src/webserver/app"); const chaiHttp = require("chai-http");
const server = require("../../src/webserver/server");
const createUser = require("../helpers/createUser"); const createUser = require("../helpers/createUser");
const resetDatabase = require("../helpers/resetDatabase"); const resetDatabase = require("../helpers/resetDatabase");
describe("As a user I want error when registering existing username", () => { chai.use(chaiHttp);
beforeEach(() => {
return resetDatabase().then(() => createUser("test_user", "password"));
});
it("should return 401 with error message when same username is given", () => describe("As a user I want error when registering existing username", () => {
request(app) beforeEach(() => resetDatabase());
beforeEach(() => createUser("test_user", "password"));
it("should return 401 with error message when same username is given", done => {
chai
.request(server)
.post("/api/v1/user") .post("/api/v1/user")
.send({ username: "test_user", password: "password" }) .send({ username: "test_user", password: "password" })
.expect(401) .end((error, response) => {
.then(response => // console.log(response);
assert.equal(response?.status, 401);
assert.equal( assert.equal(
response.text, response?.text,
'{"success":false,"message":"That username is already registered"}' '{"success":false,"message":"That username is already registered"}'
) );
)); done();
});
});
}); });

View File

@@ -1,21 +1,27 @@
const assert = require("assert"); const assert = require("assert");
const request = require("supertest-as-promised"); const chai = require("chai");
const app = require("../../src/webserver/app"); const chaiHttp = require("chai-http");
const server = require("../../src/webserver/server");
const resetDatabase = require("../helpers/resetDatabase"); const resetDatabase = require("../helpers/resetDatabase");
const createCacheEntry = require("../helpers/createCacheEntry"); const createCacheEntry = require("../helpers/createCacheEntry");
const popularMoviesSuccess = require("../fixtures/popular-movies-success-response.json"); const popularMoviesSuccess = require("../fixtures/popular-movies-success-response.json");
chai.use(chaiHttp);
describe("As a user I want to get popular movies", () => { describe("As a user I want to get popular movies", () => {
beforeEach(() => resetDatabase()); beforeEach(() => resetDatabase());
beforeEach(() => beforeEach(() => createCacheEntry("tmdb/pm:1", popularMoviesSuccess));
createCacheEntry("tmdb/miscPopularMovies:1", popularMoviesSuccess)
);
it("should return 200 with the information", () => it("should return 200 with the information", done => {
request(app) chai
.request(server)
.get("/api/v2/movie/popular") .get("/api/v2/movie/popular")
.expect(200) .end((error, response) => {
.then(response => { // console.log(response);
assert.equal(response.body?.results?.length, 20);
})); assert.equal(response?.status, 200);
done();
});
});
}); });

View File

@@ -1,5 +1,4 @@
// const assert = require("assert"); const assert = require("assert");
// const request = require("supertest-as-promised");
const chai = require("chai"); const chai = require("chai");
const chaiHttp = require("chai-http"); const chaiHttp = require("chai-http");
@@ -7,29 +6,21 @@ const server = require("../../src/webserver/server");
const resetDatabase = require("../helpers/resetDatabase"); const resetDatabase = require("../helpers/resetDatabase");
const createCacheEntry = require("../helpers/createCacheEntry"); const createCacheEntry = require("../helpers/createCacheEntry");
const popularShowsSuccess = require("../fixtures/popular-show-success-response.json"); const popularShowsSuccess = require("../fixtures/popular-show-success-response.json");
// const should = chai.should();
chai.use(chaiHttp); chai.use(chaiHttp);
// describe("system test", () => {
// it("should run", () => {
// assert.equal(1, 1);
// });
// });
describe("As a user I want to get popular shows", () => { describe("As a user I want to get popular shows", () => {
beforeEach(() => resetDatabase()); beforeEach(() => resetDatabase());
beforeEach(() => createCacheEntry("pt:1", popularShowsSuccess)); beforeEach(() => createCacheEntry("tmdb/pt:1", popularShowsSuccess));
it("should return 200 with the information", done => { it("should return 200 with the information", done => {
chai chai
.request(server) .request(server)
.get("/api/v2/show/popular") .get("/api/v2/show/popular")
.end((error, response) => { .end((error, response) => {
response.should.have.status(200); assert.equal(response?.status, 200);
done(); done();
}); });
// done();
}); });
// .end((err, res) => { // .end((err, res) => {

View File

@@ -1,5 +1,8 @@
const request = require("supertest-as-promised"); const assert = require("assert");
const app = require("../../src/webserver/app"); const chai = require("chai");
const chaiHttp = require("chai-http");
const server = require("../../src/webserver/server");
const createUser = require("../helpers/createUser"); const createUser = require("../helpers/createUser");
const createToken = require("../helpers/createToken"); const createToken = require("../helpers/createToken");
const resetDatabase = require("../helpers/resetDatabase"); const resetDatabase = require("../helpers/resetDatabase");
@@ -11,10 +14,14 @@ describe("As a user I want to request a movie", () => {
beforeEach(() => createUser("test_user", "test@gmail.com", "password")); beforeEach(() => createUser("test_user", "test@gmail.com", "password"));
beforeEach(() => createCacheEntry("mi:335984:false", infoMovieSuccess)); beforeEach(() => createCacheEntry("mi:335984:false", infoMovieSuccess));
it("should return 200 when item is requested", () => it("should return 200 when item is requested", () => {
request(app) chai
.request(server)
.post("/api/v2/request") .post("/api/v2/request")
.set("authorization", createToken("test_user", "secret")) .set("authorization", createToken("test_user", "secret"))
.send({ id: 335984, type: "movie" }) .send({ id: 335984, type: "movie" })
.expect(200)); .end((error, response) => {
assert.equal(response?.status, 200);
});
});
}); });

View File

@@ -1,17 +1,29 @@
const request = require("supertest-as-promised"); const assert = require("assert");
const app = require("../../src/webserver/app"); const chai = require("chai");
const chaiHttp = require("chai-http");
const server = require("../../src/webserver/server");
const resetDatabase = require("../helpers/resetDatabase"); const resetDatabase = require("../helpers/resetDatabase");
const createCacheEntry = require("../helpers/createCacheEntry"); const createCacheEntry = require("../helpers/createCacheEntry");
const interstellarQuerySuccess = require("../fixtures/interstellar-query-movie-success-response.json"); const interstellarQuerySuccess = require("../fixtures/interstellar-query-movie-success-response.json");
chai.use(chaiHttp);
describe("As an anonymous user I want to search for a movie", () => { describe("As an anonymous user I want to search for a movie", () => {
beforeEach(() => resetDatabase()); beforeEach(() => resetDatabase());
beforeEach(() => beforeEach(() =>
createCacheEntry("mos:1:interstellar", interstellarQuerySuccess) createCacheEntry("tmdb/mos:1:interstellar:false", interstellarQuerySuccess)
); );
it("should return 200 with the search results even if user is not logged in", () => it("should return 200 with the search results even if user is not logged in", done => {
request(app) chai
.request(server)
.get("/api/v2/search/movie?query=interstellar&page=1") .get("/api/v2/search/movie?query=interstellar&page=1")
.expect(200)); .end((error, response) => {
// console.log(response);
assert.equal(response?.status, 200);
done();
});
});
}); });