Skip to content

Commit 1362a1c

Browse files
committed
added one put api for user intro
1 parent 70cfd78 commit 1362a1c

File tree

3 files changed

+105
-0
lines changed

3 files changed

+105
-0
lines changed

controllers/users.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,10 @@ const rejectProfileDiff = async (req, res) => {
803803
};
804804

805805
const addUserIntro = async (req, res) => {
806+
if (req.params.userId !== req.userData.id) {
807+
return res.status(403).json({ message: "Unauthorized access" });
808+
}
809+
806810
try {
807811
const rawData = req.body;
808812
const joinData = await userQuery.getJoinData(req.userData.id);

routes/users.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const { authorizeAndAuthenticate } = require("../middlewares/authorizeUsersAndSe
1212
const ROLES = require("../constants/roles");
1313
const { Services } = require("../constants/bot");
1414
const authenticateProfile = require("../middlewares/authenticateProfile");
15+
const { devFlagMiddleware } = require("../middlewares/devFlag");
1516

1617
router.post("/", authorizeAndAuthenticate([ROLES.SUPERUSER], [Services.CRON_JOB_HANDLER]), users.markUnverified);
1718
router.post("/update-in-discord", authenticate, authorizeRoles([SUPERUSER]), users.setInDiscordScript);
@@ -36,6 +37,7 @@ router.patch(
3637
router.get("/:username", users.getUser);
3738
router.get("/:userId/intro", authenticate, authorizeRoles([SUPERUSER]), users.getUserIntro);
3839
router.put("/self/intro", authenticate, userValidator.validateJoinData, users.addUserIntro);
40+
router.put("/:userId/intro", devFlagMiddleware, authenticate, userValidator.validateJoinData, users.addUserIntro);
3941
router.get("/:id/skills", users.getUserSkills);
4042
router.get("/:id/badges", getUserBadges);
4143
router.patch(

test/integration/users.test.js

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1579,6 +1579,105 @@ describe("Users", function () {
15791579
});
15801580
});
15811581

1582+
describe("PUT /users/:userId/intro", function () {
1583+
let userStatusData;
1584+
1585+
beforeEach(async function () {
1586+
await userStatusModel.updateUserStatus(userId, userStatusDataAfterSignup);
1587+
const updateStatus = await userStatusModel.updateUserStatus(userId, userStatusDataAfterFillingJoinSection);
1588+
userStatusData = (await firestore.collection("usersStatus").doc(updateStatus.id).get()).data();
1589+
});
1590+
1591+
it("should return 409 if the data already present", function (done) {
1592+
addJoinData(joinData(userId)[3]);
1593+
chai
1594+
.request(app)
1595+
.put(`/users/${userId}/intro?dev=true`)
1596+
.set("Cookie", `${cookieName}=${jwt}`)
1597+
.send(joinData(userId)[3])
1598+
.end((err, res) => {
1599+
if (err) {
1600+
return done(err);
1601+
}
1602+
expect(res).to.have.status(409);
1603+
expect(res.body).to.be.a("object");
1604+
expect(res.body.message).to.equal("User data is already present!");
1605+
return done();
1606+
});
1607+
});
1608+
1609+
it("Should store the info in db", function (done) {
1610+
chai
1611+
.request(app)
1612+
.put(`/users/${userId}/intro?dev=true`)
1613+
.set("Cookie", `${cookieName}=${jwt}`)
1614+
.send(joinData()[2])
1615+
.end((err, res) => {
1616+
if (err) {
1617+
return done(err);
1618+
}
1619+
expect(res).to.have.status(201);
1620+
expect(res.body).to.be.a("object");
1621+
expect(res.body.message).to.equal("User join data and newstatus data added and updated successfully");
1622+
expect(userStatusData).to.have.own.property("currentStatus");
1623+
expect(userStatusData).to.have.own.property("monthlyHours");
1624+
expect(userStatusData.currentStatus.state).to.equal("ONBOARDING");
1625+
expect(userStatusData.monthlyHours.committed).to.equal(40);
1626+
return done();
1627+
});
1628+
});
1629+
1630+
it("Should return 401 for unauthorized request", function (done) {
1631+
chai
1632+
.request(app)
1633+
.put(`/users/${userId}/intro?dev=true`)
1634+
.set("Cookie", `${cookieName}=""`)
1635+
.send(joinData()[2])
1636+
.end((err, res) => {
1637+
if (err) {
1638+
return done(err);
1639+
}
1640+
expect(res).to.have.status(401);
1641+
expect(res.body).to.be.a("object");
1642+
return done();
1643+
});
1644+
});
1645+
1646+
it("Should return 400 for invalid Data", function (done) {
1647+
chai
1648+
.request(app)
1649+
.put(`/users/${userId}/intro?dev=true`)
1650+
.set("Cookie", `${cookieName}=${jwt}`)
1651+
.send(joinData()[1])
1652+
.end((err, res) => {
1653+
if (err) {
1654+
return done(err);
1655+
}
1656+
expect(res).to.have.status(400);
1657+
expect(res.body).to.be.a("object");
1658+
expect(res.body.message).to.be.equal('"firstName" is required');
1659+
return done();
1660+
});
1661+
});
1662+
1663+
it("Should return 403 for Unauthorized access", function (done) {
1664+
chai
1665+
.request(app)
1666+
.put(`/users/${userId}/intro?dev=true`)
1667+
.set("Cookie", `${cookieName}=${jwt}`)
1668+
.send(joinData()[1])
1669+
.end((err, res) => {
1670+
if (err) {
1671+
return done(err);
1672+
}
1673+
expect(res).to.have.status(400);
1674+
expect(res.body).to.be.a("object");
1675+
expect(res.body.message).to.be.equal('"firstName" is required');
1676+
return done();
1677+
});
1678+
});
1679+
});
1680+
15821681
describe("PATCH /users/rejectDiff", function () {
15831682
let profileDiffsId;
15841683

0 commit comments

Comments
 (0)