Skip to content

Commit c0b5305

Browse files
fix: staging issue for remove unverified role on /verify (#2236)
* fix: staging issue * updated response to res.boom
1 parent f8d76e1 commit c0b5305

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

controllers/external-accounts.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ const { getDiscordMembers } = require("../services/discordService");
44
const { addOrUpdate, getUsersByRole, updateUsersInBatch } = require("../models/users");
55
const { retrieveDiscordUsers, fetchUsersForKeyValues } = require("../services/dataAccessLayer");
66
const { EXTERNAL_ACCOUNTS_POST_ACTIONS } = require("../constants/external-accounts");
7+
const discordServices = require("../services/discordService");
8+
const config = require("config");
79
const logger = require("../utils/logger");
810
const { markUnDoneTasksOfArchivedUsersBacklog } = require("../models/tasks");
911

@@ -69,6 +71,16 @@ const linkExternalAccount = async (req, res) => {
6971
userId
7072
);
7173

74+
try {
75+
const unverifiedRoleId = config.get("discordUnverifiedRoleId");
76+
await discordServices.removeRoleFromUser(unverifiedRoleId, attributes.discordId, req.userData);
77+
} catch (error) {
78+
logger.error(`Error getting external account data: ${error}`);
79+
return res.boom.internal("Role Deletion failed. Please contact admin.", {
80+
message: "Role Deletion failed. Please contact admin.",
81+
});
82+
}
83+
7284
return res.status(204).json({ message: "Your discord profile has been linked successfully" });
7385
} catch (error) {
7486
logger.error(`Error getting external account data: ${error}`);

test/integration/external-accounts.test.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const firestore = require("../../utils/firestore");
1616
const userData = require("../fixtures/user/user")();
1717
const userModel = firestore.collection("users");
1818
const tasksModel = firestore.collection("tasks");
19+
const discordServices = require("../../services/discordService");
1920
const { EXTERNAL_ACCOUNTS_POST_ACTIONS } = require("../../constants/external-accounts");
2021
chai.use(chaiHttp);
2122
const cookieName = config.get("userToken.cookieName");
@@ -537,6 +538,8 @@ describe("External Accounts", function () {
537538
expect(getUserResponseBeforeUpdate.body).to.not.have.property("discordId");
538539
expect(getUserResponseBeforeUpdate.body).to.not.have.property("discordJoinedAt");
539540

541+
const removeRoleFromUserStub = Sinon.stub(discordServices, "removeRoleFromUser").resolves();
542+
540543
const response = await chai
541544
.request(app)
542545
.patch(`/external-accounts/link/${externalAccountData[2].token}`)
@@ -553,6 +556,27 @@ describe("External Accounts", function () {
553556
expect(updatedUserDetails.body.roles.in_discord).to.equal(true);
554557
expect(updatedUserDetails.body).to.have.property("discordId");
555558
expect(updatedUserDetails.body).to.have.property("discordJoinedAt");
559+
560+
removeRoleFromUserStub.restore();
561+
});
562+
563+
it("Should return 500 when unverified role deletion failed", async function () {
564+
await externalAccountsModel.addExternalAccountData(externalAccountData[2]);
565+
566+
const removeRoleFromUserStub = Sinon.stub(discordServices, "removeRoleFromUser").rejects();
567+
568+
const response = await chai
569+
.request(app)
570+
.patch(`/external-accounts/link/${externalAccountData[2].token}`)
571+
.query({ action: EXTERNAL_ACCOUNTS_POST_ACTIONS.DISCORD_USERS_SYNC })
572+
.set("Cookie", `${cookieName}=${newUserJWT}`);
573+
574+
expect(response).to.have.status(500);
575+
expect(response.body).to.be.an("object");
576+
expect(response.body).to.have.property("message");
577+
expect(response.body.message).to.equal(`Role Deletion failed. Please contact admin.`);
578+
579+
removeRoleFromUserStub.restore();
556580
});
557581
});
558582
});

0 commit comments

Comments
 (0)