From 54046eced656fa19f59ff1b7c63c7fcfbecf3918 Mon Sep 17 00:00:00 2001 From: kyle hoell Date: Sun, 6 Dec 2020 12:32:22 -0500 Subject: [PATCH] added epress folder routes test, also fixed issue with it saying home files when searching --- src/components/Dataform/DataForm.js | 2 +- tests/express-routers/file.test.js | 65 +++++ .../{folder.testtt.js => folder.test.js} | 240 ++++++++++++------ 3 files changed, 224 insertions(+), 83 deletions(-) rename tests/express-routers/{folder.testtt.js => folder.test.js} (58%) diff --git a/src/components/Dataform/DataForm.js b/src/components/Dataform/DataForm.js index ed4b46f..ab159ec 100644 --- a/src/components/Dataform/DataForm.js +++ b/src/components/Dataform/DataForm.js @@ -43,7 +43,7 @@ const DataForm = (props) => ( {props.parent === "/" ? (
-

Home Files

+

{props.search !== "" ? "Files" : "Home Files"}

  • diff --git a/tests/express-routers/file.test.js b/tests/express-routers/file.test.js index 4c30901..9f5ec33 100644 --- a/tests/express-routers/file.test.js +++ b/tests/express-routers/file.test.js @@ -18,6 +18,7 @@ const binaryPhraser = require("superagent-binary-parser"); const session = require("supertest-session"); const loginUser = require("../fixtures/loginUser"); const createUserNotEmailVerified = require("../fixtures/createUserNotEmailVerified"); +const Thumbnail = require("../../dist/models/thumbnail"); const {server, serverHttps} = servers; @@ -92,6 +93,8 @@ afterEach(async(done) => { await User.deleteMany({}); + await Thumbnail.deleteMany({}); + const allFiles = await conn.db.collection("fs.files").find({}).toArray(); for (let i = 0; i < allFiles.length; i++) { @@ -327,6 +330,68 @@ test("When giving wrong auth token for file info, should return 404 error", asyn expect(response.body).toEqual({}); }) +test("When not email verified should not get file info, and should return 401", async() => { + + const appSession = session(app); + + const {userData: userData3, user: user3} = await createUserNotEmailVerified(); + await loginUser(appSession, userData3); + + const initVect = crypto.randomBytes(16); + const filename = "bunny.png"; + const filepath = path.join(__dirname, "../fixtures/media/folder.png") + const metadata = { + owner: user3._id, + parent: "/", + parentList: "/", + "IV": initVect, + } + + const file2 = await createFile(filename, filepath, metadata, user3); + + const fileID = file2._id; + + const response = await appSession + .get(`/file-service/info/${fileID}`) + .send() + .expect(401); + + expect(response.body).toEqual({}) +}) + +test("When not email verified but email verification disabled should return file info", async() => { + + env.disableEmailVerification = true; + + const appSession = session(app); + + const {userData: userData3, user: user3} = await createUserNotEmailVerified(); + await loginUser(appSession, userData3); + + const initVect = crypto.randomBytes(16); + const filename = "bunny.png"; + const filepath = path.join(__dirname, "../fixtures/media/folder.png") + const metadata = { + owner: user3._id, + parent: "/", + parentList: "/", + "IV": initVect, + } + + const file2 = await createFile(filename, filepath, metadata, user3); + + const fileID = file2._id; + + const response = await appSession + .get(`/file-service/info/${fileID}`) + .send() + .expect(200); + + expect(response.body._id).toEqual(fileID.toString()); + + env.disableEmailVerification = undefined; +}) + test("When giving the wrong tempToken for public file info, should return 404 error", async() => { const userID = user._id; diff --git a/tests/express-routers/folder.testtt.js b/tests/express-routers/folder.test.js similarity index 58% rename from tests/express-routers/folder.testtt.js rename to tests/express-routers/folder.test.js index 4ad85e2..7792235 100644 --- a/tests/express-routers/folder.testtt.js +++ b/tests/express-routers/folder.test.js @@ -14,86 +14,131 @@ import servers from "../../dist/server/server"; import Folder from "../../dist/models/folder"; const temp = require("temp").track(); const binaryPhraser = require("superagent-binary-parser"); +const session = require("supertest-session"); +const loginUser = require("../fixtures/loginUser"); +const createUserNotEmailVerified = require("../fixtures/createUserNotEmailVerified"); + const {server, serverHttps} = servers; const app = server; let user; -let userToken; let user2; -let userToken2; +let userData; +let userData2; let file; let folder; process.env.KEY = "1234"; env.key = "1234"; +const waitForDatabase = () => { + + return new Promise((resolve, reject) => { + + if (conn.readyState !== 1) { + + conn.once("open", () => { + + resolve(); + + }) + + } else { + + resolve(); + } + + }) +} beforeEach(async(done) => { - if (conn.readyState === 0) { + await waitForDatabase(); - conn.on("open", async() => { - - // user = await createUser(); - // userToken = user.tokens[0].token; - - // user2 = await createUser2(); - // userToken2 = user2.tokens[0].token; - - const {user: gotUser, token: gotToken} = await createUser(); - user = gotUser; - userToken = gotToken; - - const {user: gotUser2, token: gotToken2} = await createUser2(); - user2 = gotUser2; - userToken2 = gotToken2; - - const folderData = { - name: "bunny", - parent: "/", - owner: user._id, - parentList: ["/"] - } - - folder = new Folder(folderData); - await folder.save(); - - done(); - - }) - - } else { - - // user = await createUser(); - // userToken = user.tokens[0].token; + const {user: gotUser, userData: gotUserData} = await createUser(); + user = gotUser; + userData = gotUserData; - // user2 = await createUser2(); - // userToken2 = user2.tokens[0].token; - const {user: gotUser, token: gotToken} = await createUser(); - user = gotUser; - userToken = gotToken; - - const {user: gotUser2, token: gotToken2} = await createUser2(); - user2 = gotUser2; - userToken2 = gotToken2; - - - const folderData = { - name: "bunny", - parent: "/", - owner: user._id, - parentList: ["/"] - } - - folder = new Folder(folderData); - await folder.save(); - - done(); - + const {user: gotUser2, userData: gotUserData2} = await createUser2(); + user2 = gotUser2; + userData2 = gotUserData2; + const folderData = { + name: "bunny", + parent: "/", + owner: user._id, + parentList: ["/"] } + + folder = new Folder(folderData); + await folder.save(); + + done(); + + // if (conn.readyState === 0) { + + // conn.on("open", async() => { + + // // user = await createUser(); + // // userToken = user.tokens[0].token; + + // // user2 = await createUser2(); + // // userToken2 = user2.tokens[0].token; + + // const {user: gotUser, token: gotToken} = await createUser(); + // user = gotUser; + // userToken = gotToken; + + // const {user: gotUser2, token: gotToken2} = await createUser2(); + // user2 = gotUser2; + // userToken2 = gotToken2; + + // const folderData = { + // name: "bunny", + // parent: "/", + // owner: user._id, + // parentList: ["/"] + // } + + // folder = new Folder(folderData); + // await folder.save(); + + // done(); + + // }) + + // } else { + + // // user = await createUser(); + // // userToken = user.tokens[0].token; + + // // user2 = await createUser2(); + // // userToken2 = user2.tokens[0].token; + // const {user: gotUser, token: gotToken} = await createUser(); + // user = gotUser; + // userToken = gotToken; + + // const {user: gotUser2, token: gotToken2} = await createUser2(); + // user2 = gotUser2; + // userToken2 = gotToken2; + + + // const folderData = { + // name: "bunny", + // parent: "/", + // owner: user._id, + // parentList: ["/"] + // } + + // folder = new Folder(folderData); + // await folder.save(); + + // done(); + + + // } }) afterEach(async(done) => { @@ -116,11 +161,14 @@ afterEach(async(done) => { test("When giving folderID, should return folder info", async() => { + const appSession = session(app); + + await loginUser(appSession, userData); + const folderID = folder._id; - await request(app) + await appSession .get(`/folder-service/info/${folderID}`) - .set("Authorization", `Bearer ${userToken}`) .send() .expect(200); }) @@ -137,31 +185,40 @@ test("When not authorized for folder info, should return 401 error", async() => test("When giving wrong authorization for folder info, should return 404 error", async() => { + const appSession = session(app); + + await loginUser(appSession, userData2); + const folderID = folder._id; - await request(app) + await appSession .get(`/folder-service/info/${folderID}`) - .set("Authorization", `Bearer ${userToken2}`) .send() .expect(404); }) test("When giving folderID, should return subfolder list", async() => { + const appSession = session(app); + + await loginUser(appSession, userData); + const folderID = folder._id; - await request(app) + await appSession .get(`/folder-service/subfolder-list?id=${folderID}`) - .set("Authorization", `Bearer ${userToken}`) .send() .expect(200); }) test("When giving no folderID for subfolder list, should return 404 error", async() => { - await request(app) + const appSession = session(app); + + await loginUser(appSession, userData); + + await appSession .get(`/folder-service/subfolder-list`) - .set("Authorization", `Bearer ${userToken}`) .send() .expect(404); }) @@ -178,12 +235,14 @@ test("When giving no authorization for subfolder list, should return 401 error", test("When giving wrong authorization for subfolder list, should return 404 error", async() => { + const appSession = session(app); + + await loginUser(appSession, userData2); const folderID = folder._id; - await request(app) + await appSession .get(`/folder-service/subfolder-list?id=${folderID}`) - .set("Authorization", `Bearer ${userToken2}`) .send() .expect(404); @@ -191,11 +250,14 @@ test("When giving wrong authorization for subfolder list, should return 404 erro test("When giving default query, should return folder list", async() => { + const appSession = session(app); + + await loginUser(appSession, userData); + const query = {} - await request(app) + await appSession .get(`/folder-service/list?query=${query}`) - .set("Authorization", `Bearer ${userToken}`) .send() .expect(200); }) @@ -212,6 +274,10 @@ test("When giving no authorization for folder list, should return 401 error", as test("When giving ID and parent, should move folder", async() => { + const appSession = session(app); + + await loginUser(appSession, userData); + const folderData = { name: "bunny", parent: "/", @@ -225,9 +291,8 @@ test("When giving ID and parent, should move folder", async() => { const folderID = folder._id; - await request(app) + await appSession .patch(`/folder-service/move`) - .set("Authorization", `Bearer ${userToken}`) .send({ id: folderID, parent: parentID @@ -237,6 +302,10 @@ test("When giving ID and parent, should move folder", async() => { test("When giving a folder id that does not exist for move folder, should return 500 error", async() => { + const appSession = session(app); + + await loginUser(appSession, userData); + const folderData = { name: "bunny", parent: "/", @@ -248,9 +317,8 @@ test("When giving a folder id that does not exist for move folder, should return await folder2.save(); const parentID = folder2._id; - await request(app) + await appSession .patch(`/folder-service/move`) - .set("Authorization", `Bearer ${userToken}`) .send({ id: "1234", parent: parentID @@ -261,11 +329,14 @@ test("When giving a folder id that does not exist for move folder, should return test("When giving parent id that does not exist for move folder, should return 500 error", async() => { + const appSession = session(app); + + await loginUser(appSession, userData); + const folderID = folder._id; - await request(app) + await appSession .patch(`/folder-service/move`) - .set("Authorization", `Bearer ${userToken}`) .send({ id: folderID, parent: "1234" @@ -275,12 +346,15 @@ test("When giving parent id that does not exist for move folder, should return 5 test("When giving folder id and title, should rename folder", async() => { + const appSession = session(app); + + await loginUser(appSession, userData); + const folderID = folder._id; const title = "new name"; - await request(app) + await appSession .patch(`/folder-service/rename`) - .set("Authorization", `Bearer ${userToken}`) .send({ id: folderID, title @@ -304,13 +378,15 @@ test("When giving not authorization for rename folder, should return 401 error", test("When giving id for folder that does not exist for rename, should return 404 error", async() => { + const appSession = session(app); + + await loginUser(appSession, userData); const wrongFolderID = "123456789012"; const title = "new name"; - await request(app) + await appSession .patch(`/folder-service/rename`) - .set("Authorization", `Bearer ${userToken}`) .send({ id: wrongFolderID, title