Skip to content

Commit 227e5d0

Browse files
Add Tests and refactor getDiscordMembers Function (#1199)
* add tests for getDiscordMembers function * replace auth token generation code with utility function
1 parent 8e951ad commit 227e5d0

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

services/discordService.js

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
const jwt = require("jsonwebtoken");
21
const firestore = require("../utils/firestore");
32
const { fetchAllUsers } = require("../models/users");
43
const { generateAuthTokenForCloudflare } = require("../utils/discord-actions");
@@ -7,19 +6,7 @@ const userModel = firestore.collection("users");
76
const DISCORD_BASE_URL = config.get("services.discordBot.baseUrl");
87

98
const getDiscordMembers = async () => {
10-
let authToken;
11-
const expiry = config.get("rdsServerlessBot.ttl");
12-
const privateKey = config.get("rdsServerlessBot.rdsServerLessPrivateKey");
13-
try {
14-
authToken = jwt.sign({}, privateKey, {
15-
algorithm: "RS256",
16-
expiresIn: expiry,
17-
});
18-
} catch (err) {
19-
logger.error("Error in generating auth token", err);
20-
throw err;
21-
}
22-
9+
const authToken = generateAuthTokenForCloudflare();
2310
try {
2411
const response = await (
2512
await fetch(`${DISCORD_BASE_URL}/discord-members`, {

test/unit/services/discordService.test.js

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
const { expect } = require("chai");
22
const firestore = require("../../../utils/firestore");
3-
const { setInDiscordFalseScript, addRoleToUser } = require("../../../services/discordService");
3+
const { setInDiscordFalseScript, addRoleToUser, getDiscordMembers } = require("../../../services/discordService");
44
const { fetchAllUsers } = require("../../../models/users");
55
const Sinon = require("sinon");
66
const userModel = firestore.collection("users");
77
const userDataArray = require("../../fixtures/user/user")();
8+
const discordMembersArray = require("../../fixtures/discordResponse/discord-response");
89
let fetchStub;
910
describe("Discord services", function () {
1011
describe("setInDiscordFalseScript", function () {
@@ -43,4 +44,33 @@ describe("Discord services", function () {
4344
expect(response.message).to.be.equal("done");
4445
});
4546
});
47+
48+
describe("get discord members", function () {
49+
beforeEach(function () {
50+
fetchStub = Sinon.stub(global, "fetch");
51+
});
52+
afterEach(function () {
53+
fetchStub.restore();
54+
});
55+
it("Gets all the members from discord server", async function () {
56+
fetchStub.returns(
57+
Promise.resolve({
58+
status: 200,
59+
json: () => Promise.resolve(discordMembersArray.getDiscordMembers),
60+
})
61+
);
62+
63+
const response = await getDiscordMembers();
64+
expect(response).to.deep.equal(discordMembersArray.getDiscordMembers);
65+
expect(fetchStub.calledOnce).to.be.equal(true);
66+
});
67+
68+
it("fails to get discord members", async function () {
69+
fetchStub.rejects(new Error("Fetch call error"));
70+
getDiscordMembers().catch((err) => {
71+
expect(err).to.be.an.instanceOf(Error);
72+
expect(err.message).to.equal("Fetch call error");
73+
});
74+
});
75+
});
4676
});

0 commit comments

Comments
 (0)