From adaf3cb4422d8373bb122908d0953806358eb4b1 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Mon, 24 Apr 2023 20:54:58 +0530 Subject: [PATCH 01/21] fixingdoc_duplication --- controllers/auth.js | 1 + models/users.js | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/controllers/auth.js b/controllers/auth.js index b2f48cf67..7624095b8 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -27,6 +27,7 @@ const githubAuth = (req, res, next) => { tokens: { githubAccessToken: accessToken, }, + github_user_id: user.id, }; const { userId, incompleteUserDetails } = await users.addOrUpdate(userData); diff --git a/models/users.js b/models/users.js index 6b60a9545..6dea3e402 100644 --- a/models/users.js +++ b/models/users.js @@ -39,7 +39,7 @@ const addOrUpdate = async (userData, userId = null) => { } // userId is null, Add or Update user - const user = await userModel.where("github_id", "==", userData.github_id).limit(1).get(); + const user = await userModel.where("github_user_id", "==", userData.github_user_id).limit(1).get(); if (!user.empty) { await userModel.doc(user.docs[0].id).set(userData, { merge: true }); @@ -74,7 +74,6 @@ const addJoinData = async (userData) => { throw err; } }; - const getJoinData = async (userId) => { try { const userData = []; @@ -92,6 +91,8 @@ const getJoinData = async (userId) => { } }; + + /** * Fetches users with the given skill * From 8d8232cef7913956ddb892596ca1acf883d91c78 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Mon, 24 Apr 2023 21:40:25 +0530 Subject: [PATCH 02/21] fixed linting error --- models/users.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/users.js b/models/users.js index 6dea3e402..0e4ba4d62 100644 --- a/models/users.js +++ b/models/users.js @@ -40,6 +40,7 @@ const addOrUpdate = async (userData, userId = null) => { // userId is null, Add or Update user const user = await userModel.where("github_user_id", "==", userData.github_user_id).limit(1).get(); + if (!user.empty) { await userModel.doc(user.docs[0].id).set(userData, { merge: true }); @@ -91,8 +92,6 @@ const getJoinData = async (userId) => { } }; - - /** * Fetches users with the given skill * From e88520be858f7ea88195b859b3903d6e1d2262ce Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Wed, 26 Apr 2023 22:11:16 +0530 Subject: [PATCH 03/21] tests added for github_user_id --- test/unit/models/users.test.js | 57 ++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/test/unit/models/users.test.js b/test/unit/models/users.test.js index 728f267c9..71a818750 100644 --- a/test/unit/models/users.test.js +++ b/test/unit/models/users.test.js @@ -87,5 +87,62 @@ describe("users", function () { expect(user.last_name).to.equal(userData.last_name); expect(userExists).to.equal(true); }); + + it("should add the github_user_id to the user collection", async function () { + const userData = userDataArray[0]; + userData.github_user_id = "123456789"; + + const { isNewUser, userId } = await users.addOrUpdate(userData); + + const data = (await userModel.doc(userId).get()).data(); + + expect(data.github_user_id).to.equal(userData.github_user_id); + expect(isNewUser).to.equal(true); + }); + + it("should update the github_user_id in the user collection", async function () { + const userData = userDataArray[0]; + userData.github_user_id = "123456789"; + + // Add the user the first time + const { userId } = await users.addOrUpdate(userData); + + // Update the user with same data and new github_user_id + userData.github_user_id = "987654321"; + await users.addOrUpdate(userData, userId); + + const data = (await userModel.doc(userId).get()).data(); + + expect(data.github_user_id).to.equal(userData.github_user_id); + }); + + it("should be a string", async function () { + const userData = { ...userDataArray[0], github_id: 123 }; + + try { + await users.addOrUpdate(userData); + } catch (error) { + expect(error.message).to.equal("Validation error: github_id must be a string"); + } + }); + + it("should have a maximum length of 50 characters", async function () { + const userData = { ...userDataArray[0], github_id: "a".repeat(51) }; + + try { + await users.addOrUpdate(userData); + } catch (error) { + expect(error.message).to.equal("Validation error: github_id exceeds maximum length of 50 characters"); + } + }); + + it("should be stored correctly in the database", async function () { + const userData = { ...userDataArray[0], github_id: "my_github_id" }; + + const { userId } = await users.addOrUpdate(userData); + const data = (await userModel.doc(userId).get()).data(); + + expect(data.github_id).to.equal("my_github_id"); + }); }); }); From 2e0838bc42686317879e4f2c75f2b5d378ab4732 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Tue, 25 Apr 2023 21:47:10 +0530 Subject: [PATCH 04/21] tests added for github_user_id --- firestore-private-key.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 firestore-private-key.json diff --git a/firestore-private-key.json b/firestore-private-key.json new file mode 100644 index 000000000..e19e24d65 --- /dev/null +++ b/firestore-private-key.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "rds-backend-e4d70", + "private_key_id": "ab12b0974d48c8f2b24b9558c8073006d0636795", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCg8ZMNa7WFdzag\ndToNWua8N2rp/gbiODk0UGxW5ZLrDzkyPavNXsT6mys9VCIZPqbxN/KVbgwaL4Ec\nsMG8NbYf/KYI4y5F+tTWbn78Gz7zO608p6iT8v7oSOrFglIKlGtOsg0DoNJqT6lB\nK7RScJXY8kbnG9X1fl3db36jMhwZWb6Xcw9OVpqedZBPTbVarqmuzNffSr5wAFzH\nlDl0vaA9nLPT0c1LtGgdOM9tuEdtbpivAF7N+wcq+9R3OsngqQmz7Afq1pFnhYPV\nIjMjM5Pr6IPwWsrZtyRAz+5jDCFLJJbeCTWz9LrL+NR1Y/4kfT9x4kqULXkNE4Qt\nVVPPIobNAgMBAAECggEAL68DK5HC6TUl2SqCNZy+Cfu9UHBz56hSwn4layV/fuc2\nwfzlnuY6JCm/CN+ZbrNSUNuLotxE96klbrOr4rBjMlzvcGimuBMV5iY8t0L3Rqdi\nrzrZRmRTQ8z+yd/PoNTSajF0i6OlU9wgQG/LcDVtICa//Q8RODflZYr4ES/yhUvJ\n0FgnthKDnDXIB9snm7JudKEY8BKPAnIaNJzGN1f05kZ7cenw0K9sKJQj9CRtxu6z\n6xfbosllOKTrpFYzYLCNuboXkeAS161xXai++1OCy/rIxKGGi1q5gdncuc+CvVvr\nrQBqvMp5Xz+1OIXrzLHSbaameQH7xI5eWdzgrjFHvQKBgQDexw7hYtpl9MCFIuCu\ndPRbHPkhlWM0zDnMqgWx/OEU6etB5nXRN+Xglgcp+qIhMM2c/KgEIapgLS5s061U\nb9vEf0jnGgwCos2HMu41CU1GydAX7c19I5W2lqfagEKwfe0vrK+ZLPHf1rQwRH/W\nK9diQAOCM9hiYBktDDAzOmer0wKBgQC48eSiLR0f41gJy0FGdgDXTa7henFMsEXc\nuFqqD/QdVxpUezsRJp4eXrNwXaFt+yzvzp2CcRPVOnLJA9A6WZXMZNrNOjfBBGUs\n8Ir5a3brJA1dFHBw1gh45z9yJRnU1TKJoZmjUIfeqqFwi4FV25g61jmYPq4SkXk9\nnWC9V3Z+3wKBgQCUY1jpDdRVVyqpQ6sO6T4eNnVHRl83OtVBGvsCLGOsb4dRdPWD\nL02CQ8xvzM8TdpNufuhXICmBOHcU7AYnGP70qqffr3zSgKiP5n++efysKx7d4Xsf\nYIWHgmA57Xb+YlKLj+XDDKnro/KPuADCop8rhWIQ5wG5vTLny5eLd9q4GwKBgQCl\nd65yNuDG5fWflZ2KOAualiMwEweJcHChAMQFQY7MLWEeUr7PInj3fQ0YLH1A1Cgp\nSfd8fEUdUlTeai4D9qDipR1p3nuBkrge0/vTGgXkbXYTYDUVjzk3StZl/rG0zSaR\nIuc9ydA2NP2JnxcRRQ5XHdGb2ACQFl2d9c9WuAkJiwKBgDMvLPoKgr8n+pB68jNv\nCVTDfeWnp2aX/Y8c/VvNh5szKLMInbg3yA5kaZVnnA4Ep/jD8Z/mmbSPVehkxPuY\nRzL9M2w1XbiC7t/7Gb4JMP72y5MXvAiknmKwlT6j+WWhnCbFDYUK4UAWl/hyHbA3\nmAaioGCn/E4crBaq6mxxTIIo\n-----END PRIVATE KEY-----\n", + "client_email": "firebase-adminsdk-l2sbr@rds-backend-e4d70.iam.gserviceaccount.com", + "client_id": "114492391114468816666", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-l2sbr%40rds-backend-e4d70.iam.gserviceaccount.com" +} From fcac418fec9e62d16ec1af57f940657aaff0be0a Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Sat, 29 Apr 2023 14:19:48 +0530 Subject: [PATCH 05/21] added migration route --- controllers/users.js | 24 ++++++++++++++++++++++++ routes/users.js | 3 +++ test/unit/models/users.test.js | 4 ++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/controllers/users.js b/controllers/users.js index 88f31ac60..b0d4e6c73 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -1,3 +1,5 @@ +const axios = require("axios"); +const firestore = require("../utils/firestore"); const chaincodeQuery = require("../models/chaincodes"); const userQuery = require("../models/users"); const profileDiffsQuery = require("../models/profileDiffs"); @@ -462,6 +464,27 @@ const filterUsers = async (req, res) => { } }; +const migrate = async (req, res) => { + try { + // Fetch user data from GitHub API for each document in the users collection + const usersSnapshot = await firestore.collection("users").get(); + for (const userDoc of usersSnapshot.docs) { + const username = userDoc.data().github_id; + const response = await axios.get(`https://api.github.com/users/${username}`); + const githubUserId = response.data.id; + + // Update the user document with the GitHub user ID + await userDoc.ref.update({ + github_user_id: githubUserId, + }); + } + + return res.send("Documents updated successfully"); + } catch (error) { + return res.status(500).send("Internal server error"); + } +}; + module.exports = { verifyUser, generateChaincode, @@ -481,4 +504,5 @@ module.exports = { addDefaultArchivedRole, getUserSkills, filterUsers, + migrate, }; diff --git a/routes/users.js b/routes/users.js index 02b11c475..29f6716a6 100644 --- a/routes/users.js +++ b/routes/users.js @@ -29,4 +29,7 @@ router.patch("/rejectDiff", authenticate, authorizeRoles([SUPERUSER]), users.rej router.patch("/:userId", authenticate, authorizeRoles([SUPERUSER]), users.updateUser); router.get("/suggestedUsers/:skillId", authenticate, authorizeRoles([SUPERUSER]), users.getSuggestedUsers); +// WARNING!! - One time Script/Route to do migration. +router.patch("/api/migrate", users.migrate); + module.exports = router; diff --git a/test/unit/models/users.test.js b/test/unit/models/users.test.js index 71a818750..c8c1bcce3 100644 --- a/test/unit/models/users.test.js +++ b/test/unit/models/users.test.js @@ -126,8 +126,8 @@ describe("users", function () { } }); - it("should have a maximum length of 50 characters", async function () { - const userData = { ...userDataArray[0], github_id: "a".repeat(51) }; + it("should have a maximum length of 9 characters", async function () { + const userData = { ...userDataArray[0], github_user_id: "a".repeat(9) }; try { await users.addOrUpdate(userData); From a45e5c897058a9916e591c5b3281f23019daa01d Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Sat, 29 Apr 2023 14:45:39 +0530 Subject: [PATCH 06/21] updated the add or update function --- models/users.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/models/users.js b/models/users.js index 0e4ba4d62..5e323f66b 100644 --- a/models/users.js +++ b/models/users.js @@ -40,7 +40,7 @@ const addOrUpdate = async (userData, userId = null) => { // userId is null, Add or Update user const user = await userModel.where("github_user_id", "==", userData.github_user_id).limit(1).get(); - + const user1 = await userModel.where("github_id", "==", userData.github_id).limit(1).get(); if (!user.empty) { await userModel.doc(user.docs[0].id).set(userData, { merge: true }); @@ -49,6 +49,14 @@ const addOrUpdate = async (userData, userId = null) => { userId: user.docs[0].id, incompleteUserDetails: user.docs[0].data().incompleteUserDetails, }; + } else if (!user1.empty) { + await userModel.doc(user1.docs[0].id).set(userData, { merge: true }); + + return { + isNewUser: false, + userId: user1.docs[0].id, + incompleteUserDetails: user1.docs[0].data().incompleteUserDetails, + }; } // Add new user @@ -66,7 +74,6 @@ const addOrUpdate = async (userData, userId = null) => { throw err; } }; - const addJoinData = async (userData) => { try { await joinModel.add(userData); From 63cf7d04d3dad4cef95d8a486ca1d6a380b94ee8 Mon Sep 17 00:00:00 2001 From: Yash Sinha <71075101+iamYashSinha@users.noreply.github.com> Date: Sat, 29 Apr 2023 23:59:53 +0530 Subject: [PATCH 07/21] Delete firestore-private-key.json --- firestore-private-key.json | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 firestore-private-key.json diff --git a/firestore-private-key.json b/firestore-private-key.json deleted file mode 100644 index e19e24d65..000000000 --- a/firestore-private-key.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "service_account", - "project_id": "rds-backend-e4d70", - "private_key_id": "ab12b0974d48c8f2b24b9558c8073006d0636795", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCg8ZMNa7WFdzag\ndToNWua8N2rp/gbiODk0UGxW5ZLrDzkyPavNXsT6mys9VCIZPqbxN/KVbgwaL4Ec\nsMG8NbYf/KYI4y5F+tTWbn78Gz7zO608p6iT8v7oSOrFglIKlGtOsg0DoNJqT6lB\nK7RScJXY8kbnG9X1fl3db36jMhwZWb6Xcw9OVpqedZBPTbVarqmuzNffSr5wAFzH\nlDl0vaA9nLPT0c1LtGgdOM9tuEdtbpivAF7N+wcq+9R3OsngqQmz7Afq1pFnhYPV\nIjMjM5Pr6IPwWsrZtyRAz+5jDCFLJJbeCTWz9LrL+NR1Y/4kfT9x4kqULXkNE4Qt\nVVPPIobNAgMBAAECggEAL68DK5HC6TUl2SqCNZy+Cfu9UHBz56hSwn4layV/fuc2\nwfzlnuY6JCm/CN+ZbrNSUNuLotxE96klbrOr4rBjMlzvcGimuBMV5iY8t0L3Rqdi\nrzrZRmRTQ8z+yd/PoNTSajF0i6OlU9wgQG/LcDVtICa//Q8RODflZYr4ES/yhUvJ\n0FgnthKDnDXIB9snm7JudKEY8BKPAnIaNJzGN1f05kZ7cenw0K9sKJQj9CRtxu6z\n6xfbosllOKTrpFYzYLCNuboXkeAS161xXai++1OCy/rIxKGGi1q5gdncuc+CvVvr\nrQBqvMp5Xz+1OIXrzLHSbaameQH7xI5eWdzgrjFHvQKBgQDexw7hYtpl9MCFIuCu\ndPRbHPkhlWM0zDnMqgWx/OEU6etB5nXRN+Xglgcp+qIhMM2c/KgEIapgLS5s061U\nb9vEf0jnGgwCos2HMu41CU1GydAX7c19I5W2lqfagEKwfe0vrK+ZLPHf1rQwRH/W\nK9diQAOCM9hiYBktDDAzOmer0wKBgQC48eSiLR0f41gJy0FGdgDXTa7henFMsEXc\nuFqqD/QdVxpUezsRJp4eXrNwXaFt+yzvzp2CcRPVOnLJA9A6WZXMZNrNOjfBBGUs\n8Ir5a3brJA1dFHBw1gh45z9yJRnU1TKJoZmjUIfeqqFwi4FV25g61jmYPq4SkXk9\nnWC9V3Z+3wKBgQCUY1jpDdRVVyqpQ6sO6T4eNnVHRl83OtVBGvsCLGOsb4dRdPWD\nL02CQ8xvzM8TdpNufuhXICmBOHcU7AYnGP70qqffr3zSgKiP5n++efysKx7d4Xsf\nYIWHgmA57Xb+YlKLj+XDDKnro/KPuADCop8rhWIQ5wG5vTLny5eLd9q4GwKBgQCl\nd65yNuDG5fWflZ2KOAualiMwEweJcHChAMQFQY7MLWEeUr7PInj3fQ0YLH1A1Cgp\nSfd8fEUdUlTeai4D9qDipR1p3nuBkrge0/vTGgXkbXYTYDUVjzk3StZl/rG0zSaR\nIuc9ydA2NP2JnxcRRQ5XHdGb2ACQFl2d9c9WuAkJiwKBgDMvLPoKgr8n+pB68jNv\nCVTDfeWnp2aX/Y8c/VvNh5szKLMInbg3yA5kaZVnnA4Ep/jD8Z/mmbSPVehkxPuY\nRzL9M2w1XbiC7t/7Gb4JMP72y5MXvAiknmKwlT6j+WWhnCbFDYUK4UAWl/hyHbA3\nmAaioGCn/E4crBaq6mxxTIIo\n-----END PRIVATE KEY-----\n", - "client_email": "firebase-adminsdk-l2sbr@rds-backend-e4d70.iam.gserviceaccount.com", - "client_id": "114492391114468816666", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-l2sbr%40rds-backend-e4d70.iam.gserviceaccount.com" -} From 45b2f3b8bdc3009b9ae63de4870ce6403392777e Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Sun, 30 Apr 2023 00:01:05 +0530 Subject: [PATCH 08/21] changed to post method --- routes/users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/users.js b/routes/users.js index 29f6716a6..2ce7675bf 100644 --- a/routes/users.js +++ b/routes/users.js @@ -30,6 +30,6 @@ router.patch("/:userId", authenticate, authorizeRoles([SUPERUSER]), users.update router.get("/suggestedUsers/:skillId", authenticate, authorizeRoles([SUPERUSER]), users.getSuggestedUsers); // WARNING!! - One time Script/Route to do migration. -router.patch("/api/migrate", users.migrate); +router.post("/api/migrate", users.migrate); module.exports = router; From 9ee96fc41402599c70015af095e383b2073018e3 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Mon, 1 May 2023 16:37:28 +0530 Subject: [PATCH 09/21] resolved errors in 15 testcases --- test/fixtures/user/user.js | 9 +++++++++ test/integration/contributions.test.js | 3 +++ test/integration/tasks.test.js | 1 + 3 files changed, 13 insertions(+) diff --git a/test/fixtures/user/user.js b/test/fixtures/user/user.js index 94d9d7f9d..5f72d59f5 100644 --- a/test/fixtures/user/user.js +++ b/test/fixtures/user/user.js @@ -16,6 +16,7 @@ module.exports = () => { yoe: 0, img: "./img.png", linkedin_id: "ankurnarkhede", + github_user_id: githubUserInfo[0].id, github_id: githubUserInfo[0].username, github_display_name: githubUserInfo[0].displayName, isMember: true, @@ -41,6 +42,7 @@ module.exports = () => { last_name: "Bhandarkar", yoe: 0, img: "./img.png", + github_user_id: "23654780", github_id: "whydonti", linkedin_id: "nikhil-bhandarkar", twitter_id: "whatifi", @@ -57,6 +59,7 @@ module.exports = () => { last_name: "Gajjewar", yoe: 0, img: "./img.png", + github_user_id: "23654788", github_id: "cartmanishere", linkedin_id: "pranav-gajjewar", twitter_id: "PGajjewar", @@ -77,6 +80,7 @@ module.exports = () => { yoe: 3, img: "./img.png", linkedin_id: "sagarbajpai", + github_user_id: "23654790", github_id: "sagarbajpai", github_display_name: "Sagar Bajpai", phone: "1234567890", @@ -101,6 +105,7 @@ module.exports = () => { yoe: 10, img: "./img.png", linkedin_id: "ankushdharkar", + github_user_id: "23654700", github_id: "ankushdharkar", github_display_name: "Ankush Dharkar", phone: "1234567890", @@ -125,6 +130,7 @@ module.exports = () => { yoe: 0, img: "./img.png", linkedin_id: "ankitabannore", + github_user_id: "23654725", github_id: "Ankita2002-Fr", github_display_name: "Ankita Bannore", isMember: true, @@ -149,6 +155,7 @@ module.exports = () => { last_name: "Chaudhari", yoe: 0, img: "./img.png", + github_user_id: "23654583", github_id: "mehulkchaudhari", linkedin_id: "mehulkchaudhari", twitter_id: "mehulkchaudhari", @@ -174,6 +181,7 @@ module.exports = () => { yoe: 0, img: "./img.png", linkedin_id: "ankurnarkhede", + github_user_id: "23654236", github_id: "ankur1234", github_display_name: "ankur-xyz", phone: "1234567890", @@ -182,6 +190,7 @@ module.exports = () => { { username: "ritvik", github_id: "RitvikJamwal75", + github_user_id: "23654123", first_name: "Ritvik", yoe: 1, picture: { diff --git a/test/integration/contributions.test.js b/test/integration/contributions.test.js index 1a00d09d8..afa42ec82 100644 --- a/test/integration/contributions.test.js +++ b/test/integration/contributions.test.js @@ -23,6 +23,7 @@ describe("Contributions", function () { yoe: 0, img: "./img.png", github_id: "prakashchoudhary07", + github_user_id: "12345678", username: "prakash", }; // Adding user @@ -30,10 +31,12 @@ describe("Contributions", function () { // Creating second user user.username = "userWithNoPrs"; user.github_id = "userWithNoPrs"; + user.github_user_id = "userWithNoPrs"; await userModel.addOrUpdate(user); // Creating second user user.username = "userNoTask"; user.github_id = "userNoTask"; + user.github_user_id = "userWithNoPrs"; await userModel.addOrUpdate(user); // Creating task for user const task = { diff --git a/test/integration/tasks.test.js b/test/integration/tasks.test.js index c5ee0af89..975b09ef3 100644 --- a/test/integration/tasks.test.js +++ b/test/integration/tasks.test.js @@ -210,6 +210,7 @@ describe("Tasks", function () { const { userId: assignedUser } = await userModel.addOrUpdate({ github_id: "prakashchoudhary07", username: "user1", + github_user_id: "12345678", }); const assignedTask = [ { From 0fb5ecab5cebd16d75df000b24169ca5174018be Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Mon, 1 May 2023 19:10:35 +0530 Subject: [PATCH 10/21] fixed contribution tests error --- test/integration/contributions.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/contributions.test.js b/test/integration/contributions.test.js index afa42ec82..cb37922b9 100644 --- a/test/integration/contributions.test.js +++ b/test/integration/contributions.test.js @@ -36,7 +36,7 @@ describe("Contributions", function () { // Creating second user user.username = "userNoTask"; user.github_id = "userNoTask"; - user.github_user_id = "userWithNoPrs"; + user.github_user_id = "userNoTask"; await userModel.addOrUpdate(user); // Creating task for user const task = { From 0d60558ef7188916ccbc87d1e8762201b2144fcc Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Mon, 1 May 2023 20:08:01 +0530 Subject: [PATCH 11/21] protection on migration route --- routes/users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/users.js b/routes/users.js index 2ce7675bf..91cf63200 100644 --- a/routes/users.js +++ b/routes/users.js @@ -30,6 +30,6 @@ router.patch("/:userId", authenticate, authorizeRoles([SUPERUSER]), users.update router.get("/suggestedUsers/:skillId", authenticate, authorizeRoles([SUPERUSER]), users.getSuggestedUsers); // WARNING!! - One time Script/Route to do migration. -router.post("/api/migrate", users.migrate); +router.post("/api/migrate", authenticate, authorizeRoles([SUPERUSER]), users.migrate); module.exports = router; From 7c6d7aa003a4bcf658833f829e743e6e65dfc78e Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Tue, 2 May 2023 11:50:08 +0530 Subject: [PATCH 12/21] required changes done --- controllers/users.js | 5 +++-- models/users.js | 20 ++++++++++---------- routes/users.js | 2 +- test/unit/models/users.test.js | 14 +++++++------- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/controllers/users.js b/controllers/users.js index b0d4e6c73..45930681b 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -464,13 +464,14 @@ const filterUsers = async (req, res) => { } }; +// one time script function to perform the migration - adding github_user_id field to the document const migrate = async (req, res) => { try { // Fetch user data from GitHub API for each document in the users collection const usersSnapshot = await firestore.collection("users").get(); for (const userDoc of usersSnapshot.docs) { - const username = userDoc.data().github_id; - const response = await axios.get(`https://api.github.com/users/${username}`); + const githubUsername = userDoc.data().github_id; + const response = await axios.get(`https://api.github.com/users/${githubUsername}`); const githubUserId = response.data.id; // Update the user document with the GitHub user ID diff --git a/models/users.js b/models/users.js index 5e323f66b..e09ac5a63 100644 --- a/models/users.js +++ b/models/users.js @@ -39,23 +39,23 @@ const addOrUpdate = async (userData, userId = null) => { } // userId is null, Add or Update user - const user = await userModel.where("github_user_id", "==", userData.github_user_id).limit(1).get(); - const user1 = await userModel.where("github_id", "==", userData.github_id).limit(1).get(); - if (!user.empty) { - await userModel.doc(user.docs[0].id).set(userData, { merge: true }); + const userWithGithubUserId = await userModel.where("github_user_id", "==", userData.github_user_id).limit(1).get(); + const userWithGithubId = await userModel.where("github_id", "==", userData.github_id).limit(1).get(); + if (!userWithGithubUserId.empty) { + await userModel.doc(userWithGithubUserId.docs[0].id).set(userData, { merge: true }); return { isNewUser: false, - userId: user.docs[0].id, - incompleteUserDetails: user.docs[0].data().incompleteUserDetails, + userId: userWithGithubUserId.docs[0].id, + incompleteUserDetails: userWithGithubUserId.docs[0].data().incompleteUserDetails, }; - } else if (!user1.empty) { - await userModel.doc(user1.docs[0].id).set(userData, { merge: true }); + } else if (!userWithGithubId.empty) { + await userModel.doc(userWithGithubId.docs[0].id).set(userData, { merge: true }); return { isNewUser: false, - userId: user1.docs[0].id, - incompleteUserDetails: user1.docs[0].data().incompleteUserDetails, + userId: userWithGithubId.docs[0].id, + incompleteUserDetails: userWithGithubId.docs[0].data().incompleteUserDetails, }; } diff --git a/routes/users.js b/routes/users.js index 91cf63200..dbf5ce6a7 100644 --- a/routes/users.js +++ b/routes/users.js @@ -30,6 +30,6 @@ router.patch("/:userId", authenticate, authorizeRoles([SUPERUSER]), users.update router.get("/suggestedUsers/:skillId", authenticate, authorizeRoles([SUPERUSER]), users.getSuggestedUsers); // WARNING!! - One time Script/Route to do migration. -router.post("/api/migrate", authenticate, authorizeRoles([SUPERUSER]), users.migrate); +router.post("/users/migrate", authenticate, authorizeRoles([SUPERUSER]), users.migrate); module.exports = router; diff --git a/test/unit/models/users.test.js b/test/unit/models/users.test.js index c8c1bcce3..d5ff528b9 100644 --- a/test/unit/models/users.test.js +++ b/test/unit/models/users.test.js @@ -90,7 +90,7 @@ describe("users", function () { it("should add the github_user_id to the user collection", async function () { const userData = userDataArray[0]; - userData.github_user_id = "123456789"; + userData.github_user_id = "12345678"; const { isNewUser, userId } = await users.addOrUpdate(userData); @@ -102,13 +102,13 @@ describe("users", function () { it("should update the github_user_id in the user collection", async function () { const userData = userDataArray[0]; - userData.github_user_id = "123456789"; + userData.github_user_id = "12345678"; // Add the user the first time const { userId } = await users.addOrUpdate(userData); // Update the user with same data and new github_user_id - userData.github_user_id = "987654321"; + userData.github_user_id = "87654321"; await users.addOrUpdate(userData, userId); const data = (await userModel.doc(userId).get()).data(); @@ -116,7 +116,7 @@ describe("users", function () { expect(data.github_user_id).to.equal(userData.github_user_id); }); - it("should be a string", async function () { + it("should have a type of string", async function () { const userData = { ...userDataArray[0], github_id: 123 }; try { @@ -126,13 +126,13 @@ describe("users", function () { } }); - it("should have a maximum length of 9 characters", async function () { - const userData = { ...userDataArray[0], github_user_id: "a".repeat(9) }; + it("should have a maximum length of 8 characters", async function () { + const userData = { ...userDataArray[0], github_user_id: "a".repeat(8) }; try { await users.addOrUpdate(userData); } catch (error) { - expect(error.message).to.equal("Validation error: github_id exceeds maximum length of 50 characters"); + expect(error.message).to.equal("Validation error: github_id exceeds maximum length of 8 characters"); } }); From e1e57a966db6b03b167030c39ffe9a2adcdd0518 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Tue, 2 May 2023 12:07:01 +0530 Subject: [PATCH 13/21] typecast github_user_id field --- controllers/users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/users.js b/controllers/users.js index 45930681b..3f066856f 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -476,7 +476,7 @@ const migrate = async (req, res) => { // Update the user document with the GitHub user ID await userDoc.ref.update({ - github_user_id: githubUserId, + github_user_id: `${githubUserId}`, }); } From a481fb6d0ace079e9d9328add47c36c22a99a9cc Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Thu, 4 May 2023 19:03:47 +0530 Subject: [PATCH 14/21] added batch api calls and fixed test cases --- controllers/users.js | 51 +++++++++++++++++++++++++++++----- test/unit/models/users.test.js | 12 ++++---- 2 files changed, 50 insertions(+), 13 deletions(-) diff --git a/controllers/users.js b/controllers/users.js index 3f066856f..21a8ff1bc 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -469,17 +469,54 @@ const migrate = async (req, res) => { try { // Fetch user data from GitHub API for each document in the users collection const usersSnapshot = await firestore.collection("users").get(); - for (const userDoc of usersSnapshot.docs) { + const batchSize = Math.ceil(usersSnapshot.docs.length / 2); + const batch1 = usersSnapshot.docs.slice(0, batchSize); + const batch2 = usersSnapshot.docs.slice(batchSize); + const batchWrites = []; + + // Create batch write operations for the first batch of documents + const batch1Write = firestore.batch(); + for (const userDoc of batch1) { const githubUsername = userDoc.data().github_id; - const response = await axios.get(`https://api.github.com/users/${githubUsername}`); - const githubUserId = response.data.id; + batch1Write.update(userDoc.ref, { github_user_id: null }); + batchWrites.push( + axios + .get(`https://api.github.com/users/${githubUsername}`) + .then((response) => { + const githubUserId = response.data.id; + batch1Write.update(userDoc.ref, { github_user_id: `${githubUserId}` }); + }) + .catch((error) => { + res.send(error); + }) + ); + } - // Update the user document with the GitHub user ID - await userDoc.ref.update({ - github_user_id: `${githubUserId}`, - }); + // Create batch write operations for the second batch of documents + const batch2Write = firestore.batch(); + for (const userDoc of batch2) { + const githubUsername = userDoc.data().github_id; + batch2Write.update(userDoc.ref, { github_user_id: null }); + batchWrites.push( + axios + .get(`https://api.github.com/users/${githubUsername}`) + .then((response) => { + const githubUserId = response.data.id; + batch2Write.update(userDoc.ref, { github_user_id: `${githubUserId}` }); + }) + .catch((error) => { + res.send(error); + }) + ); } + // Execute both batch writes in parallel + await Promise.all(batchWrites); + + // Commit both batch writes to update the Firestore documents + await batch1Write.commit(); + await batch2Write.commit(); + return res.send("Documents updated successfully"); } catch (error) { return res.status(500).send("Internal server error"); diff --git a/test/unit/models/users.test.js b/test/unit/models/users.test.js index d5ff528b9..e7e24f72f 100644 --- a/test/unit/models/users.test.js +++ b/test/unit/models/users.test.js @@ -100,23 +100,23 @@ describe("users", function () { expect(isNewUser).to.equal(true); }); - it("should update the github_user_id in the user collection", async function () { + it("should update the github_id in the user collection", async function () { const userData = userDataArray[0]; - userData.github_user_id = "12345678"; + userData.github_user_id = "Yash Sinha"; // Add the user the first time const { userId } = await users.addOrUpdate(userData); // Update the user with same data and new github_user_id - userData.github_user_id = "87654321"; + userData.github_id = "Ankush Dharkar"; await users.addOrUpdate(userData, userId); const data = (await userModel.doc(userId).get()).data(); - expect(data.github_user_id).to.equal(userData.github_user_id); + expect(data.github_id).to.equal(userData.github_id); }); - it("should have a type of string", async function () { + it("verifies the error text message", async function () { const userData = { ...userDataArray[0], github_id: 123 }; try { @@ -127,7 +127,7 @@ describe("users", function () { }); it("should have a maximum length of 8 characters", async function () { - const userData = { ...userDataArray[0], github_user_id: "a".repeat(8) }; + const userData = { ...userDataArray[0], github_user_id: "a".repeat(9) }; try { await users.addOrUpdate(userData); From b25554d461de11c721b442b657fc490975746d21 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Fri, 5 May 2023 17:49:02 +0530 Subject: [PATCH 15/21] added dynamic batchCount for migration --- controllers/users.js | 67 +++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 44 deletions(-) diff --git a/controllers/users.js b/controllers/users.js index 21a8ff1bc..a92373258 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -468,55 +468,34 @@ const filterUsers = async (req, res) => { const migrate = async (req, res) => { try { // Fetch user data from GitHub API for each document in the users collection + // divided by 500 because firestore api guarantee that we can process in batch of 500. const usersSnapshot = await firestore.collection("users").get(); - const batchSize = Math.ceil(usersSnapshot.docs.length / 2); - const batch1 = usersSnapshot.docs.slice(0, batchSize); - const batch2 = usersSnapshot.docs.slice(batchSize); + const batchCount = Math.ceil(usersSnapshot.docs.length / 500); const batchWrites = []; - // Create batch write operations for the first batch of documents - const batch1Write = firestore.batch(); - for (const userDoc of batch1) { - const githubUsername = userDoc.data().github_id; - batch1Write.update(userDoc.ref, { github_user_id: null }); - batchWrites.push( - axios - .get(`https://api.github.com/users/${githubUsername}`) - .then((response) => { - const githubUserId = response.data.id; - batch1Write.update(userDoc.ref, { github_user_id: `${githubUserId}` }); - }) - .catch((error) => { - res.send(error); - }) - ); - } - - // Create batch write operations for the second batch of documents - const batch2Write = firestore.batch(); - for (const userDoc of batch2) { - const githubUsername = userDoc.data().github_id; - batch2Write.update(userDoc.ref, { github_user_id: null }); - batchWrites.push( - axios - .get(`https://api.github.com/users/${githubUsername}`) - .then((response) => { - const githubUserId = response.data.id; - batch2Write.update(userDoc.ref, { github_user_id: `${githubUserId}` }); - }) - .catch((error) => { - res.send(error); - }) - ); + // Create batch write operations for each batch of documents + for (let i = 0; i < batchCount; i++) { + const batchDocs = usersSnapshot.docs.slice(i * 500, (i + 1) * 500); + const batchWrite = firestore.batch(); + for (const userDoc of batchDocs) { + const githubUsername = userDoc.data().github_id; + batchWrite.update(userDoc.ref, { github_user_id: null }); + batchWrites.push( + axios + .get(`https://api.github.com/users/${githubUsername}`) + .then((response) => { + const githubUserId = response.data.id; + batchWrite.update(userDoc.ref, { github_user_id: `${githubUserId}` }); + }) + .catch((error) => { + res.send(error); + }) + ); + } + await Promise.all(batchWrites); + await batchWrite.commit(); } - // Execute both batch writes in parallel - await Promise.all(batchWrites); - - // Commit both batch writes to update the Firestore documents - await batch1Write.commit(); - await batch2Write.commit(); - return res.send("Documents updated successfully"); } catch (error) { return res.status(500).send("Internal server error"); From 75d682f1988cc913488950f1a6b7e6950905b88c Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Sat, 6 May 2023 22:54:44 +0530 Subject: [PATCH 16/21] fixed tests and batchWrites call --- controllers/users.js | 8 +++-- routes/users.js | 2 +- test/fixtures/user/migration.js | 40 ++++++++++++++++++++++ test/integration/users.test.js | 59 ++++++++++++++++++++++++++++++++- 4 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 test/fixtures/user/migration.js diff --git a/controllers/users.js b/controllers/users.js index a92373258..e1f7e2146 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -471,12 +471,11 @@ const migrate = async (req, res) => { // divided by 500 because firestore api guarantee that we can process in batch of 500. const usersSnapshot = await firestore.collection("users").get(); const batchCount = Math.ceil(usersSnapshot.docs.length / 500); - const batchWrites = []; - // Create batch write operations for each batch of documents for (let i = 0; i < batchCount; i++) { const batchDocs = usersSnapshot.docs.slice(i * 500, (i + 1) * 500); const batchWrite = firestore.batch(); + const batchWrites = []; for (const userDoc of batchDocs) { const githubUsername = userDoc.data().github_id; batchWrite.update(userDoc.ref, { github_user_id: null }); @@ -496,7 +495,10 @@ const migrate = async (req, res) => { await batchWrite.commit(); } - return res.send("Documents updated successfully"); + return res.send({ + statusCode: 201, + message: "All Users github_user_id added successfully", + }); } catch (error) { return res.status(500).send("Internal server error"); } diff --git a/routes/users.js b/routes/users.js index dbf5ce6a7..fa4acef86 100644 --- a/routes/users.js +++ b/routes/users.js @@ -30,6 +30,6 @@ router.patch("/:userId", authenticate, authorizeRoles([SUPERUSER]), users.update router.get("/suggestedUsers/:skillId", authenticate, authorizeRoles([SUPERUSER]), users.getSuggestedUsers); // WARNING!! - One time Script/Route to do migration. -router.post("/users/migrate", authenticate, authorizeRoles([SUPERUSER]), users.migrate); +router.post("/migrate", authenticate, authorizeRoles([SUPERUSER]), users.migrate); module.exports = router; diff --git a/test/fixtures/user/migration.js b/test/fixtures/user/migration.js new file mode 100644 index 000000000..039b07997 --- /dev/null +++ b/test/fixtures/user/migration.js @@ -0,0 +1,40 @@ +// Import fixtures +const githubUserInfo = require("../auth/githubUserInfo")(); + +/** + * User info for GitHub auth response + * Multiple responses can be added to the array if required + * + * @return {Object} + */ +module.exports = () => { + return [ + { + username: "ankur", + first_name: "Ankur", + last_name: "Narkhede", + yoe: 0, + img: "./img.png", + linkedin_id: "ankurnarkhede", + github_user_id: githubUserInfo[0].id, + github_id: githubUserInfo[0].username, + github_display_name: githubUserInfo[0].displayName, + isMember: true, + phone: "1234567890", + email: "abc@gmail.com", + roles: { + member: true, + }, + tokens: { + githubAccessToken: "githubAccessToken", + }, + status: "active", + profileURL: "https://abcde.com", + picture: { + publicId: "profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar", + url: "https://res.cloudinary.com/realdevsquad/image/upload/v1667685133/profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar.jpg", + }, + incompleteUserDetails: false, + }, + ]; +}; diff --git a/test/integration/users.test.js b/test/integration/users.test.js index 3104adc9c..9d951321c 100644 --- a/test/integration/users.test.js +++ b/test/integration/users.test.js @@ -1,7 +1,6 @@ const chai = require("chai"); const { expect } = chai; const chaiHttp = require("chai-http"); - const app = require("../../server"); const authService = require("../../services/authService"); const addUser = require("../utils/addUser"); @@ -9,6 +8,7 @@ const profileDiffs = require("../../models/profileDiffs"); const cleanDb = require("../utils/cleanDb"); // Import fixtures const userData = require("../fixtures/user/user")(); + const profileDiffData = require("../fixtures/profileDiffs/profileDiffs")(); const superUser = userData[4]; const searchParamValues = require("../fixtures/user/search")(); @@ -1023,4 +1023,61 @@ describe("Users", function () { }); }); }); + + describe("POST /users/migrate", function () { + beforeEach(async function () { + superUserId = await addUser(superUser); + superUserAuthToken = authService.generateAuthToken({ userId: superUserId }); + }); + + afterEach(async function () { + await cleanDb(); + }); + it("Should return 401 when user is unauthorize", function (done) { + chai + .request(app) + .post("/users/migrate") + .end((err, res) => { + if (err) { + return done(); + } + expect(res).to.have.status(401); + expect(res.body.message).to.equal("Unauthenticated User"); + return done(); + }); + }); + it("Should update the user", async function () { + const response1 = await chai + .request(app) + .post(`/users/migrate`) + .set("Cookie", `${cookieName}=${superUserAuthToken}`); + expect(response1).to.have.status(200); + expect(response1.body).to.eql({ + statusCode: 201, + message: `All Users github_user_id added successfully`, + }); + const response2 = await chai.request(app).get(`/users`).set("cookie", `${cookieName}=${superUserAuthToken}`); + expect(response2).to.have.status(200); + response2.body.users.forEach((document) => { + expect(document).to.have.property(`github_user_id`); + }); + }); + it("Should return unauthorized error when not logged in", function (done) { + chai + .request(app) + .post(`/users/migrate`) + .end((err, res) => { + if (err) { + return done(err); + } + expect(res).to.have.status(401); + expect(res.body).to.eql({ + statusCode: 401, + error: "Unauthorized", + message: "Unauthenticated User", + }); + return done(); + }); + }); + }); }); From aa0f615e245d92cdaad277fe1821455d8bca880e Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Sun, 7 May 2023 23:43:50 +0530 Subject: [PATCH 17/21] deleted migration fixtures --- test/fixtures/user/migration.js | 40 --------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 test/fixtures/user/migration.js diff --git a/test/fixtures/user/migration.js b/test/fixtures/user/migration.js deleted file mode 100644 index 039b07997..000000000 --- a/test/fixtures/user/migration.js +++ /dev/null @@ -1,40 +0,0 @@ -// Import fixtures -const githubUserInfo = require("../auth/githubUserInfo")(); - -/** - * User info for GitHub auth response - * Multiple responses can be added to the array if required - * - * @return {Object} - */ -module.exports = () => { - return [ - { - username: "ankur", - first_name: "Ankur", - last_name: "Narkhede", - yoe: 0, - img: "./img.png", - linkedin_id: "ankurnarkhede", - github_user_id: githubUserInfo[0].id, - github_id: githubUserInfo[0].username, - github_display_name: githubUserInfo[0].displayName, - isMember: true, - phone: "1234567890", - email: "abc@gmail.com", - roles: { - member: true, - }, - tokens: { - githubAccessToken: "githubAccessToken", - }, - status: "active", - profileURL: "https://abcde.com", - picture: { - publicId: "profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar", - url: "https://res.cloudinary.com/realdevsquad/image/upload/v1667685133/profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar.jpg", - }, - incompleteUserDetails: false, - }, - ]; -}; From fa249fc6cafd8014840d22d267f980f3c76bfa03 Mon Sep 17 00:00:00 2001 From: Yash Sinha <71075101+iamYashSinha@users.noreply.github.com> Date: Sun, 7 May 2023 23:45:16 +0530 Subject: [PATCH 18/21] Delete migration.js --- test/fixtures/user/migration.js | 40 --------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 test/fixtures/user/migration.js diff --git a/test/fixtures/user/migration.js b/test/fixtures/user/migration.js deleted file mode 100644 index 039b07997..000000000 --- a/test/fixtures/user/migration.js +++ /dev/null @@ -1,40 +0,0 @@ -// Import fixtures -const githubUserInfo = require("../auth/githubUserInfo")(); - -/** - * User info for GitHub auth response - * Multiple responses can be added to the array if required - * - * @return {Object} - */ -module.exports = () => { - return [ - { - username: "ankur", - first_name: "Ankur", - last_name: "Narkhede", - yoe: 0, - img: "./img.png", - linkedin_id: "ankurnarkhede", - github_user_id: githubUserInfo[0].id, - github_id: githubUserInfo[0].username, - github_display_name: githubUserInfo[0].displayName, - isMember: true, - phone: "1234567890", - email: "abc@gmail.com", - roles: { - member: true, - }, - tokens: { - githubAccessToken: "githubAccessToken", - }, - status: "active", - profileURL: "https://abcde.com", - picture: { - publicId: "profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar", - url: "https://res.cloudinary.com/realdevsquad/image/upload/v1667685133/profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar.jpg", - }, - incompleteUserDetails: false, - }, - ]; -}; From 241df6ade2111eb90a731e3688fa99ff57a5e1b1 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Mon, 8 May 2023 05:15:08 +0530 Subject: [PATCH 19/21] fixed tests and added migration fixture --- test/fixtures/user/migration.js | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 test/fixtures/user/migration.js diff --git a/test/fixtures/user/migration.js b/test/fixtures/user/migration.js new file mode 100644 index 000000000..c476f96d1 --- /dev/null +++ b/test/fixtures/user/migration.js @@ -0,0 +1,39 @@ +// Import fixtures +const githubUserInfo = require("../auth/githubUserInfo")(); + +/** + * User info for GitHub auth response + * Multiple responses can be added to the array if required + * + * @return {Object} + */ +module.exports = () => { + return [ + { + username: "ankur", + first_name: "Ankur", + last_name: "Narkhede", + yoe: 0, + img: "./img.png", + linkedin_id: "ankurnarkhede", + github_id: githubUserInfo[0].username, + github_display_name: githubUserInfo[0].displayName, + isMember: true, + phone: "1234567890", + email: "abc@gmail.com", + roles: { + member: true, + }, + tokens: { + githubAccessToken: "githubAccessToken", + }, + status: "active", + profileURL: "https://abcde.com", + picture: { + publicId: "profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar", + url: "https://res.cloudinary.com/realdevsquad/image/upload/v1667685133/profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar.jpg", + }, + incompleteUserDetails: false, + }, + ]; +}; From 7353c587e4e088c4230274a182c04f17401e0159 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Mon, 8 May 2023 05:20:12 +0530 Subject: [PATCH 20/21] fixed tests and added migration fixtures --- test/fixtures/user/migration.js | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 test/fixtures/user/migration.js diff --git a/test/fixtures/user/migration.js b/test/fixtures/user/migration.js new file mode 100644 index 000000000..77d3ea61b --- /dev/null +++ b/test/fixtures/user/migration.js @@ -0,0 +1,39 @@ +const githubUserInfo = require("../auth/githubUserInfo")(); + +/** + * User info for GitHub auth response + * Multiple responses can be added to the array if required + * + * @return {Object} + */ +module.exports = () => { + return [ + { + username: "ankur", + first_name: "Ankur", + last_name: "Narkhede", + yoe: 0, + img: "./img.png", + linkedin_id: "ankurnarkhede", + github_user_id: githubUserInfo[0].id, + github_id: githubUserInfo[0].username, + github_display_name: githubUserInfo[0].displayName, + isMember: true, + phone: "1234567890", + email: "abc@gmail.com", + roles: { + member: true, + }, + tokens: { + githubAccessToken: "githubAccessToken", + }, + status: "active", + profileURL: "https://abcde.com", + picture: { + publicId: "profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar", + url: "https://res.cloudinary.com/realdevsquad/image/upload/v1667685133/profile/mtS4DhUvNYsKqI7oCWVB/aenklfhtjldc5ytei3ar.jpg", + }, + incompleteUserDetails: false, + }, + ]; +}; From e56cd159e95b64411ce44c3f6cad18ac80eeaaa5 Mon Sep 17 00:00:00 2001 From: sinhayash9546 Date: Mon, 8 May 2023 05:25:08 +0530 Subject: [PATCH 21/21] removed github_user_id field in migration fixture --- test/fixtures/user/migration.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/fixtures/user/migration.js b/test/fixtures/user/migration.js index 77d3ea61b..fb1813b5f 100644 --- a/test/fixtures/user/migration.js +++ b/test/fixtures/user/migration.js @@ -15,7 +15,6 @@ module.exports = () => { yoe: 0, img: "./img.png", linkedin_id: "ankurnarkhede", - github_user_id: githubUserInfo[0].id, github_id: githubUserInfo[0].username, github_display_name: githubUserInfo[0].displayName, isMember: true,