Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"tdd": "./tdd.sh",
"start": "node app.js"
},
"start": "node app.js",
"dev": "nodemon app.js",
"week3": "nodemon week-3-middleware/app.js"
},
"author": "Code the Dream",
"license": "MIT",
"dependencies": {
Expand Down
86 changes: 86 additions & 0 deletions tdd/assignment3a.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@

import { describe, it, expect, beforeAll } from "vitest";
import httpMocks from "node-mocks-http";
import { logon, register, logoff } from "../controllers/userController.js";

let saveRes = null;
let saveData = null;

beforeAll(() => {
global.users = [];
global.user_id = null;
});

describe("testing logon, register, and logoff", () => {
it("You can register a user.", async () => {
const req = httpMocks.createRequest({
method: "POST",
body: {
email: "jim@sample.com",
name: "Jim",
password: "Pa$$word20",
},
});
saveRes = httpMocks.createResponse();
await register(req, saveRes);
expect(saveRes.statusCode).toBe(201);
});

it("The user can be logged on", async () => {
const req = httpMocks.createRequest({
method: "POST",
body: { email: "jim@sample.com", password: "Pa$$word20" },
});
saveRes = httpMocks.createResponse();
await logon(req, saveRes);
expect(saveRes.statusCode).toBe(200);
});

it("returns the expected name.", () => {
saveData = saveRes._getJSONData();
expect(saveData.name).toBe("Jim");
});

it("A logon attempt with a bad password returns a 401", async () => {
const req = httpMocks.createRequest({
method: "POST",
body: { email: "jim@sample.com", password: "bad password" },
});
saveRes = httpMocks.createResponse();
await logon(req, saveRes);
expect(saveRes.statusCode).toBe(401);
});

it("You can register an additional user.", async () => {
const req = httpMocks.createRequest({
method: "POST",
body: {
email: "manuel@sample.com",
name: "Manuel",
password: "Pa$$word20",
},
});
saveRes = httpMocks.createResponse();
await register(req, saveRes);
expect(saveRes.statusCode).toBe(201);
});

it("You can logon as that new user.", async () => {
const req = httpMocks.createRequest({
method: "POST",
body: { email: "manuel@sample.com", password: "Pa$$word20" },
});
saveRes = httpMocks.createResponse();
await logon(req, saveRes);
expect(saveRes.statusCode).toBe(200);
});

it("You can now logoff.", async () => {
const req = httpMocks.createRequest({
method: "POST",
});
saveRes = httpMocks.createResponse();
await logoff(req, saveRes);
expect(saveRes.statusCode).toBe(200);
});
});
Loading