From b917db52daf6b029171256c3e63e6c236501d331 Mon Sep 17 00:00:00 2001 From: subnub Date: Sun, 22 Dec 2024 20:22:27 -0500 Subject: [PATCH] fixed env variables and removed unneeded files --- backend/config/example-env | 1 + backend/enviroment/get-env-variables.ts | 9 +- package.json | 2 +- src/config/example-env | 1 + tests/.DS_Store | Bin 6148 -> 0 bytes tests/db/utils/fileUtils/index.test.js | 1128 ------------------ tests/db/utils/folderUtils/index.test.js | 460 ------- tests/express-routers/file.test.js | 728 ----------- tests/express-routers/folder.test.js | 396 ------ tests/express-routers/user.test.js | 504 -------- tests/fixtures/createFile.js | 32 - tests/fixtures/createUser.js | 33 - tests/fixtures/createUser2.js | 36 - tests/fixtures/createUserDbType.js | 35 - tests/fixtures/createUserNotEmailVerified.js | 33 - tests/fixtures/loginUser.js | 14 - tests/fixtures/media/check.svg | 23 - tests/fixtures/media/error.png | Bin 13059 -> 0 bytes tests/fixtures/media/folder.png | Bin 2481 -> 0 bytes tests/services/FileService/index.test.js | 748 ------------ tests/services/FolderService/index.test.js | 620 ---------- tests/services/UserService/index.test.js | 136 --- tests/setupTests.js | 10 - webUI/index.html | 37 - webUI/src/index.js | 26 - webUI/src/styles.css | 79 -- webUISetup/index.html | 296 ----- webUISetup/src/index.js | 247 ---- webUISetup/src/styles.css | 233 ---- 29 files changed, 7 insertions(+), 5860 deletions(-) create mode 100644 backend/config/example-env create mode 100644 src/config/example-env delete mode 100644 tests/.DS_Store delete mode 100644 tests/db/utils/fileUtils/index.test.js delete mode 100644 tests/db/utils/folderUtils/index.test.js delete mode 100644 tests/express-routers/file.test.js delete mode 100644 tests/express-routers/folder.test.js delete mode 100644 tests/express-routers/user.test.js delete mode 100644 tests/fixtures/createFile.js delete mode 100644 tests/fixtures/createUser.js delete mode 100644 tests/fixtures/createUser2.js delete mode 100644 tests/fixtures/createUserDbType.js delete mode 100644 tests/fixtures/createUserNotEmailVerified.js delete mode 100644 tests/fixtures/loginUser.js delete mode 100644 tests/fixtures/media/check.svg delete mode 100644 tests/fixtures/media/error.png delete mode 100644 tests/fixtures/media/folder.png delete mode 100644 tests/services/FileService/index.test.js delete mode 100644 tests/services/FolderService/index.test.js delete mode 100644 tests/services/UserService/index.test.js delete mode 100644 tests/setupTests.js delete mode 100644 webUI/index.html delete mode 100644 webUI/src/index.js delete mode 100644 webUI/src/styles.css delete mode 100644 webUISetup/index.html delete mode 100644 webUISetup/src/index.js delete mode 100644 webUISetup/src/styles.css diff --git a/backend/config/example-env b/backend/config/example-env new file mode 100644 index 0000000..f000c44 --- /dev/null +++ b/backend/config/example-env @@ -0,0 +1 @@ +// TODO: Add example env file diff --git a/backend/enviroment/get-env-variables.ts b/backend/enviroment/get-env-variables.ts index cf073ed..a7bd924 100644 --- a/backend/enviroment/get-env-variables.ts +++ b/backend/enviroment/get-env-variables.ts @@ -1,17 +1,16 @@ import path from "path"; const getEnvVariables = () => { - const configPath = path.join(__dirname, "..", "..", "config"); + const configPath = path.join(__dirname, "..", "..", "backend", "config"); const processType = process.env.NODE_ENV; - console.log("123process", processType); if (processType === "production" || processType === undefined) { - require("dotenv").config({ path: configPath + "/prod.env" }); + require("dotenv").config({ path: configPath + "/.env.production" }); } else if (processType === "development") { - require("dotenv").config({ path: configPath + "/dev.env" }); + require("dotenv").config({ path: configPath + "/.env.development" }); } else if (processType === "test") { - require("dotenv").config({ path: configPath + "/test.env" }); + require("dotenv").config({ path: configPath + "/.env.test" }); } }; diff --git a/package.json b/package.json index a55b564..26e333f 100755 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "vite-test": "vite", "dev-test": "concurrently \"vite\" \"nodemon server.js\"", "dev-hot": "concurrently \"vite\" \"tsc -w -p ./backend/tsconfig.json\" \"npm run dev:backend\"", - "dev:backend": "nodemon dist/server/server-start.js", + "dev:backend": "NODE_ENV=development nodemon dist/server/server-start.js", "vite-build": "vite build", "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'" }, diff --git a/src/config/example-env b/src/config/example-env new file mode 100644 index 0000000..593bf41 --- /dev/null +++ b/src/config/example-env @@ -0,0 +1 @@ +VITE_BACKEND_URL=http://localhost:5173/api \ No newline at end of file diff --git a/tests/.DS_Store b/tests/.DS_Store deleted file mode 100644 index 875920184847896d573134fcaec366611dc675b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z-O8ZYp9ALOtfEN*+Vs$T#qH zoY~zLOY2DxEHg0s&CcxXGT(;XEMtt@W52~%jWH%b5laR%D+J@HOH$GvL@wv>S(gPY zWf>^Re_#Ojt_r&~gnbLxxBc@b>ClT358@x*FbdPG+5F_Ca%E$4ONgqd?o{ubK{9bN zHyfw6JG#N%rJD^rZFiF-n%k~-6$X=DZSO3JGdGNbkxUN#0EXONhq0eb>|`AKshr1A z0U-=w^lJ4yZ#5fcyLB{enEA;G*oW=o>C_PQgVyOq|KaI5f0@3%DZ)8?i&Azq&fp!4 zm9;)Pqc}?9dx+0+XE}t#05L!etRn;ZtP|VoSRBKm zi17*{3fTCTKr}U48ViLG0pThYP^EJH#Na9&{H7jfX)F|~bjIb%FpplD>lX@_tApQ^ z!x^^}QcDaF1B(olRkw!s|M}1F|HUNg5d*})S~0*Y9j9YMN&0SGDh}^j6SNPCg5wH> m^As@TRSaYCD&7Z`0)7(>Kucqx5Ii9CBOqy@h8Xx$2EG7#S5v$I diff --git a/tests/db/utils/fileUtils/index.test.js b/tests/db/utils/fileUtils/index.test.js deleted file mode 100644 index 5c0302e..0000000 --- a/tests/db/utils/fileUtils/index.test.js +++ /dev/null @@ -1,1128 +0,0 @@ -import User from "../../../../dist/models/user"; -import mongoose from "../../../../dist/db/mongoose"; -const conn = mongoose.connection; -const createUser = require("../../../fixtures/createUser"); -const createUser2 = require("../../../fixtures/createUser2"); -const path = require("path"); -const createFile = require("../../../fixtures/createFile"); -import UtilsFile from "../../../../dist/db/utils/fileUtils/index"; -const ObjectID = require('mongodb').ObjectID -const jwt = require("jsonwebtoken"); -const utilsFile = new UtilsFile(); - -let user; -let file; - -process.env.KEY = "1234"; - - -const waitForDatabase = () => { - - return new Promise((resolve, reject) => { - - if (conn.readyState !== 1) { - - conn.once("open", () => { - - resolve(); - - }) - - } else { - - resolve(); - } - - }) -} - -beforeEach(async(done) => { - - await waitForDatabase(); - - const {user: gotUser} = await createUser(); - user = gotUser; - - const filename = "bunny.mp4"; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: user._id, - parent: "/", - parentList: "/" - } - - file = await createFile(filename, filepath, metadata, user); - - done(); -}) - -afterEach( async(done) => { - - let bucket = new mongoose.mongo.GridFSBucket(conn.db); - - await User.deleteMany({}); - - const allFiles = await conn.db.collection("fs.files").find({}).toArray(); - - for (let i = 0; i < allFiles.length; i++) { - - const currentFileID = allFiles[i]._id; - await bucket.delete(ObjectID(currentFileID)); - } - - done(); - -}) - - -test("When giving fileID, should return public file", async() => { - - const fileID = file._id; - const tempToken = file.metadata.link; - - const recievedFile = await utilsFile.getPublicInfo(fileID, tempToken); - - expect(recievedFile._id).toEqual(fileID); - -}) - -test("When giving wrong fileID, should not return public file", async() => { - - const wrongFileID = "123456789012"; - - const recievedFile = await utilsFile.getFileInfo(wrongFileID); - - expect(recievedFile).toBe(null); -}) - -test("When giving the wrong tempToken, should not return public file", async() => { - - const fileID = file._id; - const wrongTempToken = "1234" - - const recievedFile = await utilsFile.getPublicInfo(fileID, wrongTempToken); - - expect(recievedFile).toBe(null); -}) - -test("When giving fileID and userID, should remove public file link", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - - - - await utilsFile.removeLink(fileID, userID); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - - expect(updatedFile.metadata.linkType).toBe(undefined); -}) - -test("When giving the wrong fileID, should not remove public link", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - const wrongFileID = "123456789012"; - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - - - - await utilsFile.removeLink(wrongFileID, userID); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - - expect(updatedFile.metadata.linkType).toEqual("public") -}) - -test("When giving the wrong userID, should not remove public link", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - const wrongUserID = "123456789012"; - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - - - - await utilsFile.removeLink(fileID, wrongUserID); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - - expect(updatedFile.metadata.linkType).toEqual("public") -}) - -test("When giving fileID, should remove one time public link", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "one", "metadata.link": token}}) - - - - await utilsFile.removeOneTimePublicLink(fileID); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - - expect(updatedFile.metadata.linkType).toBe(undefined); -}) - -test("When giving the wrong fileID, should not remove one time public link", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - const wrongFileID = "123456789012"; - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "one", "metadata.link": token}}) - - await utilsFile.removeOneTimePublicLink(wrongFileID); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - - expect(updatedFile.metadata.linkType).toBe("one"); -}) - -test("When giving fileID, userID, and token, should make file public", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - - - await utilsFile.makePublic(fileID, userID, token); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.metadata.linkType).toBe("public") -}) - -test("When giving wrong fileID, should not make file public", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - const wrongFileID = "123456789012"; - - - await utilsFile.makePublic(wrongFileID, userID, token); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.metadata.linkType).toBe(undefined) -}) - -test("When giving wrong userID, should not make file public", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const wrongUserID = "123456789012"; - - - await utilsFile.makePublic(fileID, wrongUserID, token); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.metadata.linkType).toBe(undefined) -}) - -test("When giving fileID, userID, and token, should make one time public link", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - - - await utilsFile.makeOneTimePublic(fileID, userID, token); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.metadata.linkType).toBe("one") -}) - -test("When giving wrong fileID, should not make one time public link", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const userID = user._id; - const wrongFileID = "123456789012"; - - - await utilsFile.makeOneTimePublic(wrongFileID, userID, token); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.metadata.linkType).toBe(undefined) -}) - -test("When giving wrong userID, should not make one time public link", async() => { - - const token = jwt.sign({_id: user._id}, process.env.PASSWORD) - const fileID = file._id; - const wrongUserID = "123456789012"; - - - await utilsFile.makeOneTimePublic(fileID, wrongUserID, token); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.metadata.linkType).toBe(undefined) -}) - -test("When giving fileID and userID, should return file", async() => { - - const fileID = file._id; - const userID = user._id; - - const recievedFile = await utilsFile.getFileInfo(fileID, userID); - - - expect(recievedFile._id).toEqual(fileID); -}) - -test("When giving wrong fileID, should not return file", async() => { - - const userID = user._id; - const wrongFileID = "123456789012"; - - const recievedFile = await utilsFile.getFileInfo(wrongFileID, userID); - - expect(recievedFile).toEqual(null); -}) - -test("When giving wrong userID, should not return file", async() => { - - const fileID = file._id; - const wrongUserID = "123456789012"; - - const recievedFile = await utilsFile.getFileInfo(fileID, wrongUserID); - - expect(recievedFile).toEqual(null); -}) - -test("When giving userID, should return quicklist", async() => { - - const userID = user._id; - - const recievedList = await utilsFile.getQuickList(userID); - - expect(recievedList.length).toBe(1); -}) - -test("When giving wrong userID, should not return quicklist", async() => { - - const wrongUserID = "123456789012"; - - const recievedList = await utilsFile.getQuickList(wrongUserID); - - expect(recievedList.length).toBe(0); -}) - -test("When giving default query object, should return a filtered file list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - const fileTwo = await createFile("apple.mp4", filepath, metadata, user); - const fileThree = await createFile("coconut.mp4", filepath, metadata, user); - const fileFour = await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - const fileFive = await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": userID, - "metadata.parent": "/", - } - - const defaultSortBy = {uploadDate: -1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 50); - - - - expect(recievedList.length).toBe(3); - expect(recievedList[0]._id).toEqual(fileThree._id); - expect(recievedList[1]._id).toEqual(fileTwo._id); - expect(recievedList[2]._id).toEqual(file._id); - expect(recievedList.includes(fileFour)).toBe(false); - expect(recievedList.includes(fileFive)).toBe(false); -}) - -test("When giving owner, should return filtered list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - await createFile("apple.mp4", filepath, metadata, user); - await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - const fileFive = await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": "1234", - "metadata.parent": "/", - } - - const defaultSortBy = {uploadDate: -1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 50); - - - expect(recievedList.length).toBe(1); - expect(recievedList[0]._id).toEqual(fileFive._id); -}) - -test("When giving parent, should return a filtered file list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - await createFile("apple.mp4", filepath, metadata, user); - await createFile("coconut.mp4", filepath, metadata, user); - const fileFour = await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": userID, - "metadata.parent": "1234", - } - - const defaultSortBy = {uploadDate: -1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 50); - - - - expect(recievedList.length).toBe(1); - expect(recievedList[0]._id).toEqual(fileFour._id); -}) - -test("When giving limit, should return filitered list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - await createFile("apple.mp4", filepath, metadata, user); - const fileThree = await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": userID, - "metadata.parent": "/", - } - - const defaultSortBy = {uploadDate: -1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 1); - - - - expect(recievedList.length).toBe(1); - expect(recievedList[0]._id).toEqual(fileThree._id); -}) - -test("When giving ascending upload date, should return filtered list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - const fileTwo = await createFile("apple.mp4", filepath, metadata, user); - const fileThree = await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": userID, - "metadata.parent": "/", - } - - const defaultSortBy = {uploadDate: 1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 50); - - - - expect(recievedList.length).toBe(3); - expect(recievedList[0]._id).toEqual(file._id); - expect(recievedList[1]._id).toEqual(fileTwo._id); - expect(recievedList[2]._id).toEqual(fileThree._id); -}) - -test("When giving decending filename, should return filtered list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - const fileTwo = await createFile("apple.mp4", filepath, metadata, user); - const fileThree = await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": userID, - "metadata.parent": "/", - } - - - const defaultSortBy = {filename: -1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 50); - - - - expect(recievedList.length).toBe(3); - expect(recievedList[0]._id).toEqual(fileThree._id); - expect(recievedList[1]._id).toEqual(file._id); - expect(recievedList[2]._id).toEqual(fileTwo._id); -}) - -test("When giving ascending filename, should return filtered list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - const fileTwo = await createFile("apple.mp4", filepath, metadata, user); - const fileThree = await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": userID, - "metadata.parent": "/", - } - - - const defaultSortBy = {filename: 1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 50); - - - - expect(recievedList.length).toBe(3); - expect(recievedList[0]._id).toEqual(fileTwo._id); - expect(recievedList[1]._id).toEqual(file._id); - expect(recievedList[2]._id).toEqual(fileThree._id); -}) - -test("When giving start at with default values, should return filtered list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - const fileTwo = await createFile("apple.mp4", filepath, metadata, user); - const fileThree = await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": userID, - "metadata.parent": "/", - "uploadDate": {$lt: new Date(fileThree.uploadDate)} - } - - const defaultSortBy = {uploadDate: -1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 50); - - - - expect(recievedList.length).toBe(2); - expect(recievedList[0]._id).toEqual(fileTwo._id); - expect(recievedList[1]._id).toEqual(file._id); -}) - -test("When giving start at with ascending data, should return filtered list", async() => { - - const userID = user._id; - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - const fileTwo = await createFile("apple.mp4", filepath, metadata, user); - const fileThree = await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - - const queryObj = { - "metadata.owner": userID, - "metadata.parent": "/", - "uploadDate": {$gt: new Date(fileTwo.uploadDate)} - } - - const defaultSortBy = {uploadDate: 1} - - - - const recievedList = await utilsFile.getList(queryObj, defaultSortBy, 50); - - - - expect(recievedList.length).toBe(1); - expect(recievedList[0]._id).toEqual(fileThree._id); -}) - -// test("When giving user and temp token, should remove temp token", async() => { - -// const token = jwt.sign({_id: user._id}, process.env.PASSWORD, {expiresIn: 2}); -// user.tempTokens = user.tempTokens.concat({token}) -// await user.save(); - - -// const recievedUser = await utilsFile.removeTempToken(user, token); -// await recievedUser.save(); -// const updatedUser = await User.findById(user._id); - - -// expect(updatedUser.tempTokens.length).toBe(0); -// }) - -// test("When giving the wrong temp token, should not remove temp token", async() => { - -// const token = jwt.sign({_id: user._id}, process.env.PASSWORD, {expiresIn: 2}); -// user.tempTokens = user.tempTokens.concat({token}) -// await user.save(); - - -// const recievedUser = await utilsFile.removeTempToken(user, "1234"); -// await recievedUser.save(); -// const updatedUser = await User.findById(user._id); - - -// expect(updatedUser.tempTokens.length).toBe(1); -// expect(updatedUser.tempTokens[0].token._id).toBe(token._id) -// }) - -// test("When giving fileID and userID, should remove transcoded video", async() => { - -// const fileID = file._id; -// const userID = user._id; -// await await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, -// {"$set": {"metadata.transcoded": true}}) - -// await utilsFile.removeTranscodeVideo(fileID, userID); -// const updatedFile = await conn.db.collection("fs.files") -// .findOne({_id: fileID}); - - -// expect(updatedFile.metadata.transcoded).toBe(undefined); -// }) - -// test("When giving wrong fileID, should not remove transcoded video", async() => { - -// const fileID = file._id; -// const userID = user._id; -// const wrongFileID = "123456789012"; -// await await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, -// {"$set": {"metadata.transcoded": true}}) - -// await utilsFile.removeTranscodeVideo(wrongFileID, userID); -// const updatedFile = await conn.db.collection("fs.files") -// .findOne({_id: fileID}); - - -// expect(updatedFile.metadata.transcoded).toBe(true); -// }) - -// test("When giving the wrong userID, should not remove transcoded video", async() => { - -// const fileID = file._id; -// const userID = user._id; -// const wrongUserID = "123456789012"; -// await await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, -// {"$set": {"metadata.transcoded": true}}) - -// await utilsFile.removeTranscodeVideo(fileID, wrongUserID); -// const updatedFile = await conn.db.collection("fs.files") -// .findOne({_id: fileID}); - - -// expect(updatedFile.metadata.transcoded).toBe(true); -// }) - -test("When giving userID and search query, should return file list", async() => { - - const userID = user._id; - let search = "apple"; - search = new RegExp(search, 'i') - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - const fileTwo = await createFile("apple.mp4", filepath, metadata, user); - await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - const recievedList = await utilsFile.getFileSearchList(userID, fileTwo.filename); - - - expect(recievedList.length).toBe(1); - expect(recievedList[0]._id).toEqual(fileTwo._id); -}) - -test("When giving wrong userID, should not return search list", async() => { - - const userID = user._id; - const wrongUserID = "123456789012" - let search = "apple"; - search = new RegExp(search, 'i') - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - const fileTwo = await createFile("apple.mp4", filepath, metadata, user); - await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - const recievedList = await utilsFile.getFileSearchList(wrongUserID, fileTwo.filename); - - - expect(recievedList.length).toBe(0); -}) - -test("When giving fileID, userID, and title, should rename file", async() => { - - const userID = user._id; - const fileID = file._id; - const newName = "fin.mp4"; - - await utilsFile.renameFile(fileID, userID, newName); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.filename).toBe(newName); -}) - -test("When giving wrong fileID, should not rename file", async() => { - - const userID = user._id; - const fileID = file._id; - const wrongFileID = "123456789012" - const newName = "fin.mp4"; - - await utilsFile.renameFile(wrongFileID, userID, newName); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.filename).toBe(file.filename); -}) - -test("When giving the wrong userID, should not rename file", async() => { - - const fileID = file._id; - const wrongUserID = "123456789012" - const newName = "fin.mp4"; - - await utilsFile.renameFile(fileID, wrongUserID, newName); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.filename).toBe(file.filename); -}) - -test("When giving userID and parent string, should return file list by parent", async() => { - - const userID = user._id; - - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - await createFile("apple.mp4", filepath, metadata, user); - await createFile("coconut.mp4", filepath, metadata, user); - const fileFour = await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - const recievedList = await utilsFile.getFileListByParent(userID, fileFour.metadata.parentList) - - - expect(recievedList.length).toBe(1); - expect(recievedList[0]._id).toEqual(fileFour._id); -}) - -test("When giving the wrong userID, should not return file list by parent", async() => { - - const userID = user._id; - const wrongUserID = "123456789012" - - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - await createFile("apple.mp4", filepath, metadata, user); - await createFile("coconut.mp4", filepath, metadata, user); - const fileFour = await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - const recievedList = await utilsFile.getFileListByParent(wrongUserID, fileFour.metadata.parentList) - - - expect(recievedList.length).toBe(0); -}) - -test("When giving the userID, should return file list by owner", async() => { - - const userID = user._id; - - const {user: user2} = await createUser2(); - - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: user2._id, - parent: "/", - parentList:"/,1234" - } - - await createFile("apple.mp4", filepath, metadata, user); - await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - const fileFive = await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - const recievedList = await utilsFile.getFileListByOwner(fileFive.metadata.owner); - - - expect(recievedList.length).toBe(1); - expect(recievedList[0]._id).toEqual(fileFive._id); -}) - -test("When giving the wrong userID, should not return file list by owner", async() => { - - const userID = user._id; - const wrongUserID = "123456789012" - - const filepath = path.join(__dirname, "../../../fixtures/media/check.svg") - const metadata = { - owner: userID, - parent: "/", - parentList: "/" - } - - const metadataDifferentParent = { - owner: userID, - parent: "1234", - parentList:"/,1234" - } - - const metadataDifferentOwner = { - owner: "1234", - parent: "/", - parentList:"/,1234" - } - - await createFile("apple.mp4", filepath, metadata, user); - await createFile("coconut.mp4", filepath, metadata, user); - await createFile("dinnerbone.mp4", filepath, metadataDifferentParent, user); - await createFile("elephant.mp4", filepath, metadataDifferentOwner, user); - const recievedList = await utilsFile.getFileListByOwner(wrongUserID); - - - expect(recievedList.length).toBe(0); -}) - -test("When giving fileID, userID, parent, and parentList, should move file", async() => { - - const fileID = file._id; - const userID = user._id; - const parent = "1234"; - const parentList = ["/", "1234"].toString(); - - - await utilsFile.moveFile(fileID, userID, parent, parentList); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - - expect(updatedFile.metadata.parent).toBe(parent); - expect(updatedFile.metadata.parentList).toBe(parentList); -}) - -test("When giving wrong userID for move file, should not remove file", async() => { - - const fileID = file._id; - const wrongUserID = "123456789012"; - const parent = "1234"; - const parentList = ["/", "1234"].toString(); - - await utilsFile.moveFile(fileID, wrongUserID, parent, parentList); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); - - expect(updatedFile.metadata.parent).toBe(file.metadata.parent); - expect(updatedFile.metadata.parentList).toBe(file.metadata.parentList); -}) - diff --git a/tests/db/utils/folderUtils/index.test.js b/tests/db/utils/folderUtils/index.test.js deleted file mode 100644 index 420a23c..0000000 --- a/tests/db/utils/folderUtils/index.test.js +++ /dev/null @@ -1,460 +0,0 @@ -import User from "../../../../dist/models/user"; -import mongoose from "../../../../dist/db/mongoose"; -import UtilsFolder from "../../../../dist/db/utils/folderUtils"; -import Folder from "../../../../dist/models/folder" -const conn = mongoose.connection; -const createUser = require("../../../fixtures/createUser"); -const utilsFolder = new UtilsFolder(); - - -let user; -let folder; - -process.env.KEY = "1234"; - -const waitForDatabase = () => { - - return new Promise((resolve, reject) => { - - if (conn.readyState !== 1) { - - conn.once("open", () => { - - resolve(); - - }) - - } else { - - resolve(); - } - - }) -} - -beforeEach(async(done) => { - - await waitForDatabase(); - - const {user: gotUser} = await createUser(); - user = gotUser; - - const folderData = { - name: "bunny", - owner: user._id, - parent: "/", - parentList: ["/"] - } - - - folder = new Folder(folderData); - await folder.save(); - - done(); - - // if (conn.readyState === 0) { - - // conn.once("open", async() => { - - // //user = await createUser(); - // const {user: gotUser} = await createUser(); - // user = gotUser; - - // const folderData = { - // name: "bunny", - // owner: user._id, - // parent: "/", - // parentList: ["/"] - // } - - - // folder = new Folder(folderData); - // await folder.save(); - - // done(); - - - // }) - - // } else { - - // //user = await createUser(); - // const {user: gotUser} = await createUser(); - // user = gotUser; - - // const folderData = { - // name: "bunny", - // owner: user._id, - // parent: "/", - // parentList: ["/"] - // } - - - // folder = new Folder(folderData); - // await folder.save(); - - // done(); - // } - -}) - -afterEach( async(done) => { - - await User.deleteMany({}); - await Folder.deleteMany({}); - - done(); - -}) - -test("When giving userID, and search query, should return a searched filtered folder list", async() => { - - const userID = user._id; - let search = "coco"; - search = new RegExp(search, 'i') - - const folderTwo = await new Folder({ - name: "coconut", - owner: userID, - parent: "/", - parentList: ["/"] - }) - - const folderThree = await new Folder({ - name: "dinnerbone", - owner: userID, - parent: "1234", - parentList: ["/", "1234"] - }) - - const folderFour = await new Folder({ - name: "cocoelephant", - owner: "1234", - parent: "/", - parentList: ["/"] - }) - - await folderTwo.save(); - await folderThree.save(); - await folderFour.save(); - - - - const recievedFolderList = await utilsFolder.getFolderSearchList(userID, search); - - - expect(recievedFolderList.length).toBe(1); - expect(recievedFolderList[0]._id).toEqual(folderTwo._id) -}) - -test("When giving the wrong userID, should not return search query", async() => { - - const userID = user._id; - const wrongUserID = "123456789012" - let search = "coco"; - search = new RegExp(search, 'i') - - const folderTwo = await new Folder({ - name: "coconut", - owner: userID, - parent: "/", - parentList: ["/"] - }) - - const folderThree = await new Folder({ - name: "dinnerbone", - owner: userID, - parent: "1234", - parentList: ["/", "1234"] - }) - - const folderFour = await new Folder({ - name: "cocoelephant", - owner: "1234", - parent: "/", - parentList: ["/"] - }) - - await folderTwo.save(); - await folderThree.save(); - await folderFour.save(); - - - - const recievedFolderList = await utilsFolder.getFolderSearchList(wrongUserID, search); - - - expect(recievedFolderList.length).toBe(0); -}) - -test("When giving folderID and userID, should return folder info", async() => { - - const folderID = folder._id; - const userID = user._id; - - - const recievedFolder = await utilsFolder.getFolderInfo(folderID, userID); - - - expect(recievedFolder._id).toEqual(folderID); -}) - -test("When giving the wrong folderID, should not return folder info", async() => { - - const wrongFolderID = "123456789012"; - const userID = user._id; - - - const recievedFolder = await utilsFolder.getFolderInfo(wrongFolderID, userID); - - - expect(recievedFolder).toBe(null); -}) - - -test("When giving the wrong userID, should not return folder info", async() => { - - const folderID = folder._id; - const wrongUserID = "123456789012" - - - const recievedFolder = await utilsFolder.getFolderInfo(folderID, wrongUserID); - - - expect(recievedFolder).toBe(null); -}) - -test("When giving userID, parent, and sortby, should return filtered folder list by parent", async() => { - - const userID = user._id; - const parent = "1234"; - const sortBy = {createdAt: -1} - - const folderTwo = await new Folder({ - name: "coconut", - owner: userID, - parent: "/", - parentList: ["/"] - }) - - const folderThree = await new Folder({ - name: "dinnerbone", - owner: userID, - parent: "1234", - parentList: ["/", "1234"] - }) - - const folderFour = await new Folder({ - name: "cocoelephant", - owner: "1234", - parent: "/", - parentList: ["/"] - }) - - await folderTwo.save(); - await folderThree.save(); - await folderFour.save(); - - - - const recievedFolderList = await utilsFolder.getFolderListByParent(userID, parent, sortBy); - - - expect(recievedFolderList.length).toBe(1); - expect(recievedFolderList[0]._id).toEqual(folderThree._id); -}) - -test("When giving the wrong userID, should not return folder list filtered by parent", async() => { - - const userID = user._id; - const parent = "1234"; - const sortBy = {createdAt: -1} - const wrongUserID = "123456789012" - - - const folderTwo = await new Folder({ - name: "coconut", - owner: userID, - parent: "/", - parentList: ["/"] - }) - - const folderThree = await new Folder({ - name: "dinnerbone", - owner: userID, - parent: "1234", - parentList: ["/", "1234"] - }) - - const folderFour = await new Folder({ - name: "cocoelephant", - owner: "1234", - parent: "/", - parentList: ["/"] - }) - - await folderTwo.save(); - await folderThree.save(); - await folderFour.save(); - - - - const recievedFolderList = await utilsFolder.getFolderListByParent(wrongUserID, parent, sortBy); - - - expect(recievedFolderList.length).toBe(0) -}) - -test("When giving userID, search query, and sort by, should return folder list by search (no limit)" , async() => { - - const userID = user._id; - let search = "coco"; - search = new RegExp(search, 'i') - - const folderTwo = await new Folder({ - name: "coconut", - owner: userID, - parent: "/", - parentList: ["/"] - }) - - const folderThree = await new Folder({ - name: "dinnerbone", - owner: userID, - parent: "1234", - parentList: ["/", "1234"] - }) - - const folderFour = await new Folder({ - name: "cocoelephant", - owner: "1234", - parent: "/", - parentList: ["/"] - }) - - await folderTwo.save(); - await folderThree.save(); - await folderFour.save(); - - - - const recievedFolderList = await utilsFolder.getFolderListBySearch(userID, search); - - - expect(recievedFolderList.length).toBe(1); - expect(recievedFolderList[0]._id).toEqual(folderTwo._id) - -}) - -test("When giving wrong userID, should not return folder list by search (no limit)", async() => { - - const userID = user._id; - let search = "coco"; - search = new RegExp(search, 'i') - const wrongUserID = "123456789012" - - const folderTwo = await new Folder({ - name: "coconut", - owner: userID, - parent: "/", - parentList: ["/"] - }) - - const folderThree = await new Folder({ - name: "dinnerbone", - owner: userID, - parent: "1234", - parentList: ["/", "1234"] - }) - - const folderFour = await new Folder({ - name: "cocoelephant", - owner: "1234", - parent: "/", - parentList: ["/"] - }) - - await folderTwo.save(); - await folderThree.save(); - await folderFour.save(); - - - - const recievedFolderList = await utilsFolder.getFolderListBySearch(wrongUserID, search); - - - expect(recievedFolderList.length).toBe(0); -}) - -test("When giving folderID, userID, and title, should rename folder", async() => { - - const folderID = folder._id; - const userID = user._id; - const newName = "almonds"; - - - await utilsFolder.renameFolder(folderID, userID, newName); - const updatedFolder = await Folder.findById(folderID); - - - expect(updatedFolder.name).toBe(newName); -}) - -test("When giving wrong folderID, should not rename folder", async() => { - - const folderID = folder._id; - const userID = user._id; - const newName = "almonds"; - const wrongFolderID = "123456789012" - - - await utilsFolder.renameFolder(wrongFolderID, userID, newName); - const updatedFolder = await Folder.findById(folderID); - - - expect(updatedFolder.name).toBe(folder.name); -}) - -test("When giving the wrong userID, should not rename folder", async() => { - - const folderID = folder._id; - const wrongUserID = "123456789012"; - const newName = "almonds"; - - - await utilsFolder.renameFolder(folderID, wrongUserID, newName); - const updatedFolder = await Folder.findById(folderID); - - - expect(updatedFolder.name).toBe(folder.name); -}) - -test("When giving folderID, userID, parent, and parentList, should move folder", async() => { - - const folderID = folder._id; - const userID = user._id; - const parent = "1234"; - const parentList = ["/", "1234"]; - - - await utilsFolder.moveFolder(folderID, userID, parent, parentList); - const updatedFolder = await Folder.findById(folderID); - - expect(updatedFolder.parentList.length).toBe(2); - expect(updatedFolder.parent).toBe(parent); -}) - -test("When giving the wrong userID for folder move, should not move folder", async() => { - - const folderID = folder._id; - const wrongUserID = "123456789012"; - const parent = "1234"; - const parentList = ["/", "1234"]; - - await utilsFolder.moveFolder(folderID, wrongUserID, parent, parentList); - const updatedFolder = await Folder.findById(folderID); - - expect(updatedFolder.parentList.length).toBe(1); - expect(updatedFolder.parent).toBe(folder.parent); -}) - diff --git a/tests/express-routers/file.test.js b/tests/express-routers/file.test.js deleted file mode 100644 index 9f5ec33..0000000 --- a/tests/express-routers/file.test.js +++ /dev/null @@ -1,728 +0,0 @@ -import User from "../../dist/models/user"; -import mongoose from "../../dist/db/mongoose"; -const conn = mongoose.connection; -const createUser = require("../fixtures/createUser"); -const createUser2 = require("../fixtures/createUser2"); -const createFile = require("../fixtures/createFile"); -const crypto = require("crypto"); -const path = require("path"); -import env from "../../dist/enviroment/env"; -import createThumbnail from "../../dist/services/ChunkService/utils/createThumbailAny"; -const request = require("supertest"); -const jwt = require("jsonwebtoken"); -const ObjectID = require('mongodb').ObjectID -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 Thumbnail = require("../../dist/models/thumbnail"); - -const {server, serverHttps} = servers; - -const app = server; - -let user; -let user2; -let userData; -let userData2; -let file; - -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) => { - - await waitForDatabase(); - - const initVect = crypto.randomBytes(16); - - const {user: gotUser, userData: gotUserData} = await createUser(); - user = gotUser; - userData = gotUserData; - - const {user: gotUser2, userData: gotUserData2} = await createUser2(); - user2 = gotUser2; - userData2 = gotUserData2; - - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../fixtures/media/folder.png") - const metadata = { - owner: user._id, - parent: "/", - parentList: "/", - "IV": initVect, - // filePath: filepath - } - - file = await createFile(filename, filepath, metadata, user); - - done(); - -}) - -afterEach(async(done) => { - - console.log("After each") - - //const gfs = Grid(conn.db, mongoose.mongo); - let bucket = new mongoose.mongo.GridFSBucket(conn.db); - - await User.deleteMany({}); - - await Thumbnail.deleteMany({}); - - const allFiles = await conn.db.collection("fs.files").find({}).toArray(); - - for (let i = 0; i < allFiles.length; i++) { - - const currentFileID = allFiles[i]._id; - await bucket.delete(ObjectID(currentFileID)); - } - - done(); -}) - -test("When giving ID, should send thumbnail data", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const thumbnailFile = await createThumbnail(file, file.filename, user); - const thumbnailID = thumbnailFile.metadata.thumbnailID; - - const response = await appSession - .get(`/file-service/thumbnail/${thumbnailID}`) - .send() - .expect(200); - - expect(response.body.length).not.toBe(0); -}) - -test("When giving no authorization for thumbnail data, should return error", async() => { - - const thumbnailFile = await createThumbnail(file, file.filename, user); - const thumbnailID = thumbnailFile.metadata.thumbnailID; - - const response = await request(app) - .get(`/file-service/thumbnail/${thumbnailID}`) - .send() - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When giving wrong auth data for thumbnail, should return 403 error", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const thumbnailFile = await createThumbnail(file, file.filename, user); - const thumbnailID = thumbnailFile.metadata.thumbnailID; - - const appSession2 = session(app); - await loginUser(appSession2, userData2); - - const response = await appSession2 - .get(`/file-service/thumbnail/${thumbnailID}`) - .send() - .expect(403); - - expect(response.body).toEqual({}); -}) - -test("When not email verified should not get thumbnail data, and return 401", async() => { - - const appSession = session(app); - - const {userData: userData3, user: user3} = await createUserNotEmailVerified(); - await loginUser(appSession, userData3); - - const thumbnailFile = await createThumbnail(file, file.filename, user3); - const thumbnailID = thumbnailFile.metadata.thumbnailID; - - const response = await appSession - .get(`/file-service/thumbnail/${thumbnailID}`) - .send() - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When not email verified but email verification disabled should get thumbnail data", 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 thumbnailFile = await createThumbnail(file2, file2.filename, user3); - const thumbnailID = thumbnailFile.metadata.thumbnailID; - - const response = await appSession - .get(`/file-service/thumbnail/${thumbnailID}`) - .send() - .expect(200); - - expect(response.body.length).not.toBe(0); - - env.disableEmailVerification = undefined; -}) - -test("When trying to create thumbnail from others users file should not return thumbnail", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData2); - - const thumbnailFile = await createThumbnail(file, file.filename, user2); - const thumbnailID = thumbnailFile.metadata.thumbnailID; - - expect(thumbnailID).toEqual(undefined) -}) -// // Needs Work, cannot phrase binary data? - -// // test("When giving public ID, should return public file download", async() => { - -// // const userID = user._id; -// // const fileID = file._id.toString(); -// // const token = jwt.sign({_id: userID.toString()}, env.password); -// // await conn.db.collection("fs.files") -// // .findOneAndUpdate({"_id": ObjectID(fileID), -// // "metadata.owner": userID}, -// // {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - -// // const response = await request(app) -// // .get(`/file-service/public/download/${fileID}`) -// // .parse(binaryPhraser) -// // .buffer() -// // .end(); - - -// // //expect(response.body._id).toEqual(fileID); - -// // // console.log("public", token.token); - -// // // const url = "/file-service/public/download/" + fileID; -// // // console.log("url", url); -// // // const response = await request(app).get(url) -// // // .set("Authorization", `Bearer ${userToken}`) -// // // .set('content-type', 'application/octet-stream') -// // // .send() -// // // .expect(203) - -// // // const writeStream = temp.createWriteStream(); - -// // //response.pipe(writeStream); -// // }) - -test("When giving public id, should return public info", async() => { - - const userID = user._id; - const fileID = file._id.toString(); - const token = jwt.sign({_id: userID.toString()}, env.password).toString(); - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - - const response = await request(app) - .get(`/file-service/public/info/${fileID}/${token}`) - .send() - .expect(200); - - expect(response.body._id).toEqual(fileID); -}) - -test("When giving ID for non public file, should return 404 error", async() => { - - const userID = user._id; - const fileID = file._id.toString(); - const token = jwt.sign({_id: userID.toString()}, env.password).toString(); - const response = await request(app) - .get(`/file-service/public/info/${fileID}/${token}`) - .send() - .expect(404); - - expect(response.data).toBe(undefined); -}) - -test("When giving fileID, should return file info", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const fileID = file._id; - - const response = await appSession - .get(`/file-service/info/${fileID}`) - .send() - .expect(200); - - expect(response.body._id).toEqual(fileID.toString()); -}) - -test("When not authorized for file info, should return 401 error", async() => { - - const fileID = file._id; - - const response = await request(app) - .get(`/file-service/info/${fileID}`) - .send() - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When giving wrong auth token for file info, should return 404 error", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData2); - - const fileID = file._id; - - const response = await appSession - .get(`/file-service/info/${fileID}`) - .send() - .expect(404); - - 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; - const fileID = file._id.toString(); - const token = jwt.sign({_id: userID.toString()}, env.password).toString(); - const wrongToken = "12345" - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - - const response = await request(app) - .get(`/file-service/public/info/${fileID}/${wrongToken}`) - .send() - .expect(404); - - expect(response.body).toEqual({}); -}) - -test("When giving authorization, should get user quicklist", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const response = await appSession - .get(`/file-service/quick-list`) - .send() - .expect(200); - - expect(response.body.length).toBe(1); -}) - -test("When giving no authoization for quicklist, should return 401 error", async() => { - - const response = await request(app) - .get(`/file-service/quick-list`) - .send() - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When giving default query, should return file list", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const response = await appSession - .get(`/file-service/list`) - .send({}) - .expect(200); - - expect(response.body.length).toBe(1); -}) - -test("When giving no authoization for file list, should return 401 error", async() => { - - const response = await request(app) - .get(`/file-service/list`) - .send({}) - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When giving wrong auth for list, should return empty list", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData2); - - const response = await appSession - .get(`/file-service/list`) - .send({}) - .expect(200); - - expect(response.body.length).toBe(0); -}) - -test("When authorized should get video cookie", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - await appSession - .get(`/file-service/list`) - .send("/file-service/download/access-token-stream-video") - .expect(200); -}) - -test("When not authorized should not get video token and return 401 error", async() => { - - await request(app) - .get(`/file-service/list`) - .send("/file-service/download/access-token-stream-video") - .expect(401); -}) - -test("When authorized should return suggested list", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - await appSession - .get(`/file-service/suggested-list`) - .send() - .expect(200); -}) - -test("When not authorized should not return suggested list", async() => { - - const response =await request(app) - .get(`/file-service/suggested-list`) - .send() - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When giving fileID and title, should rename file", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const fileID = file._id; - - await appSession - .patch(`/file-service/rename`) - .send({ - id: fileID, - title: "new name" - }) - .expect(200); -}) - -test("When not authoized for rename file, should return 401 error", async() => { - - const fileID = file._id; - - await request(app) - .patch(`/file-service/rename`) - .send({ - id: fileID, - title: "new name" - }) - .expect(401); -}) - -test("When giving wrong authorization token for rename file, should return 404 error", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData2); - - const fileID = file._id; - - await appSession - .patch(`/file-service/rename`) - .send({ - id: fileID, - title: "new name" - }) - .expect(404); -}) - -test("When giving fileID and parent, should move file", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const fileID = file._id; - const userID = user._id; - - const folder = new Folder({ - owner: userID, - name: "folder", - parent: "/", - parentList: ["/"] - }) - - await folder.save(); - - const folderID = folder._id; - - await appSession - .patch(`/file-service/move`) - .send({ - id: fileID, - parent: folderID - }) - .expect(200); -}) - -test("When not authorized should not move file and return 401", async() => { - - const appSession = session(app); - - const fileID = file._id; - const userID = user._id; - - const folder = new Folder({ - owner: userID, - name: "folder", - parent: "/", - parentList: ["/"] - }) - - await folder.save(); - - const folderID = folder._id; - - await appSession - .patch(`/file-service/move`) - .send({ - id: fileID, - parent: folderID - }) - .expect(401); -}) - -test("When giving wrong authorization should not move file and return 404", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData2); - - const fileID = file._id; - const userID = user._id; - - const folder = new Folder({ - owner: userID, - name: "folder", - parent: "/", - parentList: ["/"] - }) - - await folder.save(); - - const folderID = folder._id; - - await appSession - .patch(`/file-service/move`) - .send({ - id: fileID, - parent: folderID - }) - .expect(404); - -}) - -test("When giving a parentID that does not exist, should return 404 error", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const fileID = file._id; - - await appSession - .patch(`/file-service/move`) - .send({ - id: fileID, - parent: "123456789012" - }) - .expect(404); -}) - -test("When giving fileID should remove file", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const fileID = file._id; - - await appSession - .delete(`/file-service/remove`) - .send({ - id: fileID, - }) - .expect(200); -}) - -test("When giving fileID that does not exist for remove file, should return 404 error", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const fileID = "123456789012"; - - await appSession - .delete(`/file-service/remove`) - .send({ - id: fileID, - }) - .expect(404); -}) - -test("When not authorized should not remove file and return 401", async() => { - - const appSession = session(app); - - const fileID = file._id; - - await appSession - .delete(`/file-service/remove`) - .send({ - id: fileID, - }) - .expect(401); -}) - -test("When giving wrong authorization should not remove file and return 404", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData2); - - const fileID = file._id; - - await appSession - .delete(`/file-service/remove`) - .send({ - id: fileID, - }) - .expect(404); -}) \ No newline at end of file diff --git a/tests/express-routers/folder.test.js b/tests/express-routers/folder.test.js deleted file mode 100644 index 7792235..0000000 --- a/tests/express-routers/folder.test.js +++ /dev/null @@ -1,396 +0,0 @@ -import User from "../../dist/models/user"; -import mongoose from "../../dist/db/mongoose"; -const conn = mongoose.connection; -const createUser = require("../fixtures/createUser"); -const createUser2 = require("../fixtures/createUser2"); -const createFile = require("../fixtures/createFile"); -const crypto = require("crypto"); -const path = require("path"); -import env from "../../dist/enviroment/env"; -const request = require("supertest"); -const jwt = require("jsonwebtoken"); -const ObjectID = require('mongodb').ObjectID -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 user2; -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) => { - - await waitForDatabase(); - - const {user: gotUser, userData: gotUserData} = await createUser(); - user = gotUser; - userData = gotUserData; - - 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) => { - - let bucket = new mongoose.mongo.GridFSBucket(conn.db); - - await User.deleteMany({}); - await Folder.deleteMany({}); - - const allFiles = await conn.db.collection("fs.files").find({}).toArray(); - - for (let i = 0; i < allFiles.length; i++) { - - const currentFileID = allFiles[i]._id; - await bucket.delete(ObjectID(currentFileID)); - } - - done(); -}) - -test("When giving folderID, should return folder info", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const folderID = folder._id; - - await appSession - .get(`/folder-service/info/${folderID}`) - .send() - .expect(200); -}) - -test("When not authorized for folder info, should return 401 error", async() => { - - const folderID = folder._id; - - await request(app) - .get(`/folder-service/info/${folderID}`) - .send() - .expect(401); -}) - -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 appSession - .get(`/folder-service/info/${folderID}`) - .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 appSession - .get(`/folder-service/subfolder-list?id=${folderID}`) - .send() - .expect(200); -}) - -test("When giving no folderID for subfolder list, should return 404 error", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - await appSession - .get(`/folder-service/subfolder-list`) - .send() - .expect(404); -}) - -test("When giving no authorization for subfolder list, should return 401 error", async() => { - - const folderID = folder._id; - - await request(app) - .get(`/folder-service/subfolder-list?id=${folderID}`) - .send() - .expect(401); -}) - -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 appSession - .get(`/folder-service/subfolder-list?id=${folderID}`) - .send() - .expect(404); - -}) - -test("When giving default query, should return folder list", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const query = {} - - await appSession - .get(`/folder-service/list?query=${query}`) - .send() - .expect(200); -}) - -test("When giving no authorization for folder list, should return 401 error", async() => { - - const query = {} - - await request(app) - .get(`/folder-service/list?query=${query}`) - .send() - .expect(401); -}) - -test("When giving ID and parent, should move folder", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const folderData = { - name: "bunny", - parent: "/", - owner: user._id, - parentList: ["/"] - } - - const folder2 = new Folder(folderData); - await folder2.save(); - const parentID = folder2._id; - - const folderID = folder._id; - - await appSession - .patch(`/folder-service/move`) - .send({ - id: folderID, - parent: parentID - }) - .expect(200); -}) - -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: "/", - owner: user._id, - parentList: ["/"] - } - - const folder2 = new Folder(folderData); - await folder2.save(); - const parentID = folder2._id; - - await appSession - .patch(`/folder-service/move`) - .send({ - id: "1234", - parent: parentID - }) - .expect(500); - -}) - -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 appSession - .patch(`/folder-service/move`) - .send({ - id: folderID, - parent: "1234" - }) - .expect(500); -}) - -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 appSession - .patch(`/folder-service/rename`) - .send({ - id: folderID, - title - }) - .expect(200); -}) - -test("When giving not authorization for rename folder, should return 401 error", async() => { - - const folderID = folder._id; - const title = "new name"; - - await request(app) - .patch(`/folder-service/rename`) - .send({ - id: folderID, - title - }) - .expect(401); -}) - -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 appSession - .patch(`/folder-service/rename`) - .send({ - id: wrongFolderID, - title - }) - .expect(404); - -}) \ No newline at end of file diff --git a/tests/express-routers/user.test.js b/tests/express-routers/user.test.js deleted file mode 100644 index fd103e5..0000000 --- a/tests/express-routers/user.test.js +++ /dev/null @@ -1,504 +0,0 @@ -import User from "../../dist/models/user"; -import mongoose from "../../dist/db/mongoose"; -const conn = mongoose.connection; -const createUser = require("../fixtures/createUser"); -import servers from "../../dist/server/server"; -const request = require("supertest"); -import env from "../../dist/enviroment/env"; -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 userData; - -const waitForDatabase = () => { - - return new Promise((resolve, reject) => { - - if (conn.readyState !== 1) { - - conn.once("open", () => { - - resolve(); - - }) - - } else { - - resolve(); - } - - }) -} - -beforeEach(async(done) => { - - await waitForDatabase(); - - const {user: gotUser, userData: gotUserData} = await createUser(); - user = gotUser; - userData = gotUserData; - - done(); - // if (conn.readyState === 0) { - - // // user = await createUser(); - // // userToken = user.tokens[0].token; - // const {user: gotUser, token: gotToken} = await createUser(); - // user = gotUser; - // userToken = gotToken; - - // done() - - // } else { - - // // user = await createUser(); - // // userToken = user.tokens[0].token; - // const {user: gotUser, token: gotToken} = await createUser(); - // user = gotUser; - // userToken = gotToken; - - // done(); - // } -}) - -afterEach(async(done) => { - - await User.deleteMany({}); - done(); -}) - -test("When authorized, should return user, with no sensitive data", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const response = await appSession - .get(`/user-service/user`) - .send() - .expect(200); - - expect(response.body.password).toEqual(undefined); - expect(response.body.privateKey).toEqual(undefined); - expect(response.body.publicKey).toEqual(undefined); - expect(response.body.tokens).toEqual(undefined); - expect(response.body.tempTokens).toEqual(undefined); - expect(response.body.email).not.toEqual(undefined); -}) - -test("When not authorized should return 401 for user", async() => { - - const response = await request(app) - .get(`/user-service/user`) - .send() - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When giving credentials, should login user, and not return sensitive info", async() => { - - const response = await request(app) - .post(`/user-service/login`) - .send({ - email: user.email, - password: "12345678" - }) - .expect(200); - - expect(response.body.user.password).toEqual(undefined); - expect(response.body.user.privateKey).toEqual(undefined); - expect(response.body.user.publicKey).toEqual(undefined); - expect(response.body.user.tokens).toEqual(undefined); - expect(response.body.user.tempTokens).toEqual(undefined); -}) - -test("When giving wrong creditentials, should return 500 error", async() => { - - const response = await request(app) - .post(`/user-service/login`) - .send({ - email: user.email, - password: "1454524" - }) - .expect(500); - - expect(response.body).toEqual({}); -}) - -test("When authorized should logout user", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - await appSession - .post(`/user-service/logout`) - .send() - .expect(200); -}) - -test("When not authorized for logout, should return 401 error", async() => { - - const response = await request(app) - .post(`/user-service/logout`) - .send() - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When authoized should logout all sessions of a user", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - await appSession - .post(`/user-service/logout-all`) - .send() - .expect(200); -}) - -test("When not authorized for logout all, should return 401 error", async() => { - - const response = await request(app) - .post(`/user-service/logout-all`) - .send() - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When giving user data, should create account without returning sensitive data", async() => { - - const response = await request(app) - .post(`/user-service/create`) - .send({ - email: "test55@gmail.com", - password: "12345678" - }) - .expect(201); - - expect(response.body.password).toEqual(undefined); - expect(response.body.privateKey).toEqual(undefined); - expect(response.body.publicKey).toEqual(undefined); - expect(response.body.tokens).toEqual(undefined); - expect(response.body.tempTokens).toEqual(undefined); -}) - -test("When env variable is set to block accounts, should return 401 error", async() => { - - env.createAcctBlocked = true; - - await request(app) - .post(`/user-service/create`) - .send({ - email: "test55@gmail.com", - password: "12345678" - }) - .expect(401); - - env.createAcctBlocked = false; -}) - -test("When giving old password, and new password, should change password", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const oldPassword = "12345678"; - const newPassword = "987654321"; - - await appSession - .post(`/user-service/change-password`) - .send({ - oldPassword, - newPassword - }) - .expect(200); - - await request(app) - .post(`/user-service/login`) - .send({ - email: user.email, - password: oldPassword - }) - .expect(500); - - await request(app) - .post(`/user-service/login`) - .send({ - email: user.email, - password: newPassword - }) - .expect(200); -}) - -test("When giving wrong old password for change password, should return 500 error", async() => { - - const appSession = session(app); - await loginUser(appSession, userData); - - const wrongOldPassword = "12342345"; - const newPassword = "987654321"; - - await appSession - .post(`/user-service/change-password`) - .send({ - wrongOldPassword, - newPassword - }) - .expect(500); -}) - -test("When not authorized for change password, should return 401 error", async() => { - - const oldPassword = "12345678"; - const newPassword = "987654321"; - - const response = await request(app) - .post(`/user-service/change-password`) - .send({ - oldPassword, - newPassword - }) - .expect(401); - - expect(response.body).toEqual({}); -}) - -test("When not email verified should not change password", async() => { - - const appSession = session(app); - - const {userData: userData2} = await createUserNotEmailVerified() - await loginUser(appSession, userData2); - - const oldPassword = "12345678"; - const newPassword = "987654321"; - - await appSession - .post(`/user-service/change-password`) - .send({ - oldPassword, - newPassword - }) - .expect(401); -}) - -test("When not email verified, but email verification disabled, should change password", async() => { - - env.disableEmailVerification = true; - - const appSession = session(app); - - const {userData: userData2} = await createUserNotEmailVerified(); - await loginUser(appSession, userData2); - - const oldPassword = "12345678"; - const newPassword = "987654321"; - - await appSession - .post(`/user-service/change-password`) - .send({ - oldPassword, - newPassword - }) - .expect(200); - - await request(app) - .post(`/user-service/login`) - .send({ - email: userData2.email, - password: oldPassword - }) - .expect(500); - - await request(app) - .post(`/user-service/login`) - .send({ - email: userData2.email, - password: newPassword - }) - .expect(200); - - env.disableEmailVerification = undefined; -}) - -test("When not giving email, should not create user", async() => { - - await request(app) - .post(`/user-service/create`) - .send({ - email: "", - password: "12345678" - }) - .expect(500); -}) - -test("When giving not a valid email, should not create user", async() => { - - await request(app) - .post(`/user-service/create`) - .send({ - email: "imnotvalid", - password: "12345678" - }) - .expect(500); -}) - -test("When not giving long enouph password, should not create user", async() => { - - await request(app) - .post(`/user-service/create`) - .send({ - email: "test12341@email.com", - password: "123" - }) - .expect(500); -}) - -test("When giving duplicate email, should not create user", async() => { - - await request(app) - .post(`/user-service/create`) - .send({ - email: "test55@gmail.com", - password: "12345678" - }) - .expect(201); - - - await request(app) - .post(`/user-service/create`) - .send({ - email: "test55@gmail.com", - password: "12345678" - }) - .expect(500); -}) - -test("When authenticated should get refresh token", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - await appSession.post("/user-service/get-token").send().expect(201); -}) - -test("When authenticated should get detailed user", async() => { - - const appSession = session(app); - - await loginUser(appSession, userData); - - const response = await appSession.get("/user-service/user-detailed").send().expect(200); - - const responseData = response.body; - const email = responseData.email; - const username = responseData.username; - const password = responseData.password; - const emailVerified = responseData.emailVerified; - const tokens = responseData.tokens; - const publicKey = responseData.publicKey; - const privateKey = responseData.privateKey; - - expect(email).toEqual(userData.email); - expect(username).toEqual(userData.username); - expect(password).toEqual(undefined); - expect(emailVerified).toEqual(true); - expect(tokens).toEqual(undefined); - expect(publicKey).toEqual(undefined); - expect(privateKey).toEqual(undefined) -}) - -test("When not authenticated should not get detailed user", async() => { - - await request(app).get("/user-service/user-detailed").send().expect(401); -}) - -test("When not email verified should not get detailed user", async() => { - - const appSession = session(app); - - const {userData: userData2} = await createUserNotEmailVerified(); - await loginUser(appSession, userData2); - - await request(app).get("/user-service/user-detailed").send().expect(401); -}) - -test("When not email verified but email verification disabled should get detailed user", async() => { - - env.disableEmailVerification = true; - - const appSession = session(app); - - const {userData: userData2} = await createUserNotEmailVerified(); - await loginUser(appSession, userData2); - - const response = await appSession.get("/user-service/user-detailed").send().expect(200); - - const responseData = response.body; - const email = responseData.email; - const username = responseData.username; - const password = responseData.password; - const emailVerified = responseData.emailVerified; - const tokens = responseData.tokens; - const publicKey = responseData.publicKey; - const privateKey = responseData.privateKey; - - expect(email).toEqual(userData2.email); - expect(username).toEqual(userData2.username); - expect(password).toEqual(undefined); - expect(emailVerified).toEqual(false); - expect(tokens).toEqual(undefined); - expect(publicKey).toEqual(undefined); - expect(privateKey).toEqual(undefined) - - env.disableEmailVerification = undefined; -}) - -test("When giving existing email should send password reset email", async() => { - - await request(app).post("/user-service/send-password-reset").send({email: userData.email}).expect(200); -}) - -test("When giving not existing email should return 404", async() => { - - await request(app).post("/user-service/send-password-reset").send({email: "idontexist@void.com"}).expect(404); -}) - -test("When autheniticated should set users name", async() => { - - const appSession = session(app); - await loginUser(appSession, userData); - - await appSession.patch("/user-service/add-name").send({name: "testname"}).expect(200); -}) - -test("When giving a not valid name length should not set users name", async() => { - - const appSession = session(app); - await loginUser(appSession, userData); - - await appSession.patch("/user-service/add-name").send({name: ""}).expect(403); -}) - -test("When not giving name should not set users name", async() => { - - const appSession = session(app); - await loginUser(appSession, userData); - - await appSession.patch("/user-service/add-name").send().expect(403); -}) - diff --git a/tests/fixtures/createFile.js b/tests/fixtures/createFile.js deleted file mode 100644 index efc9d67..0000000 --- a/tests/fixtures/createFile.js +++ /dev/null @@ -1,32 +0,0 @@ -import mongoose from "../../dist/db/mongoose"; -const conn = mongoose.connection; -const crypto = require("crypto"); -const fs = require("fs"); - -const createFile = (filename, filepath, metadata, user) => { - return new Promise((resolve, reject) => { - - const password = user.getEncryptionKey(); //process.env.KEY; - - const initVect = metadata.IV || crypto.randomBytes(16); - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); - - const fileReadStream = fs.createReadStream(filepath); - - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - - const uploadStream = bucket.openUploadStream(filename, {metadata}); - - fileReadStream.pipe(cipher).pipe(uploadStream).on("finish", (file) => { - - resolve(file); - }); - }) -} - -module.exports = createFile; \ No newline at end of file diff --git a/tests/fixtures/createUser.js b/tests/fixtures/createUser.js deleted file mode 100644 index 118a033..0000000 --- a/tests/fixtures/createUser.js +++ /dev/null @@ -1,33 +0,0 @@ -const jwt = require("jsonwebtoken"); -import mongoose from "../../dist/db/mongoose"; -import User from "../../dist/models/user"; -import env from "../../dist/enviroment/env"; - -const createUser = async() => { - - env.key = "1234"; - env.password = "1234"; - process.env.KEY = "1234"; - process.env.PASSWORD = "1234"; - - const userID = new mongoose.Types.ObjectId(); - const userData = { - _id: userID, - name: "Test User", - email: "test2@test.com", - password: "12345678", - emailVerified: true, - tokens: [] - } - - let user = new User(userData); - await user.save(); - - await user.generateEncryptionKeys(); - - await user.generateAuthToken("192.168.0.1"); - - return {user, userData}; -} - -module.exports = createUser; \ No newline at end of file diff --git a/tests/fixtures/createUser2.js b/tests/fixtures/createUser2.js deleted file mode 100644 index 86f917c..0000000 --- a/tests/fixtures/createUser2.js +++ /dev/null @@ -1,36 +0,0 @@ -const jwt = require("jsonwebtoken"); -import mongoose from "../../dist/db/mongoose"; -import User from "../../dist/models/user"; -import env from "../../dist/enviroment/env"; - -const createUser2 = async() => { - - env.key = "1234"; - env.password = "1234"; - process.env.KEY = "1234"; - process.env.PASSWORD = "1234"; - - const userID = new mongoose.Types.ObjectId(); - const userData = { - _id: userID, - name: "Test User", - email: "test3@test.com", - password: "123456789", - emailVerified: true, - } - - let user = new User(userData); - await user.save(); - - await user.generateEncryptionKeys(); - - const token = await user.generateAuthToken(); - - user.emailVerified = true; - - await user.save(); - - return {user, userData}; -} - -module.exports = createUser2; \ No newline at end of file diff --git a/tests/fixtures/createUserDbType.js b/tests/fixtures/createUserDbType.js deleted file mode 100644 index c96a07f..0000000 --- a/tests/fixtures/createUserDbType.js +++ /dev/null @@ -1,35 +0,0 @@ -const jwt = require("jsonwebtoken"); -import mongoose from "../../dist/db/mongoose"; -import User from "../../dist/models/user"; -import env from "../../dist/enviroment/env"; - -const createUser = async(s3Enabled = false, googleDriveEnabled = false) => { - - env.key = "1234"; - env.password = "1234"; - process.env.KEY = "1234"; - process.env.PASSWORD = "1234"; - - const userID = new mongoose.Types.ObjectId(); - const userData = { - _id: userID, - name: "Test User", - email: "test9@test.com", - password: "12345678", - emailVerified: true, - tokens: [], - s3Enabled, - googleDriveEnabled - } - - let user = new User(userData); - await user.save(); - - await user.generateEncryptionKeys(); - - await user.generateAuthToken("192.168.0.1"); - - return {user, userData}; -} - -module.exports = createUser; \ No newline at end of file diff --git a/tests/fixtures/createUserNotEmailVerified.js b/tests/fixtures/createUserNotEmailVerified.js deleted file mode 100644 index c4a1efc..0000000 --- a/tests/fixtures/createUserNotEmailVerified.js +++ /dev/null @@ -1,33 +0,0 @@ -const jwt = require("jsonwebtoken"); -import mongoose from "../../dist/db/mongoose"; -import User from "../../dist/models/user"; -import env from "../../dist/enviroment/env"; - -const createUser = async() => { - - env.key = "1234"; - env.password = "1234"; - process.env.KEY = "1234"; - process.env.PASSWORD = "1234"; - - const userID = new mongoose.Types.ObjectId(); - const userData = { - _id: userID, - name: "Test User", - email: "test23@test.com", - password: "12345678", - emailVerified: false, - tokens: [] - } - - let user = new User(userData); - await user.save(); - - await user.generateEncryptionKeys(); - - await user.generateAuthToken("192.168.0.1"); - - return {user, userData}; -} - -module.exports = createUser; \ No newline at end of file diff --git a/tests/fixtures/loginUser.js b/tests/fixtures/loginUser.js deleted file mode 100644 index 78fd8b6..0000000 --- a/tests/fixtures/loginUser.js +++ /dev/null @@ -1,14 +0,0 @@ -import mongoose from "../../dist/db/mongoose"; -import User from "../../dist/models/user"; -import env from "../../dist/enviroment/env"; -const request = require("supertest"); - -const loginUser = async(appSession, userData) => { - - const response = await appSession.post("/user-service/login") - .send({email: userData.email, password: userData.password}).expect(200); - - return response.body; -} - -module.exports = loginUser; \ No newline at end of file diff --git a/tests/fixtures/media/check.svg b/tests/fixtures/media/check.svg deleted file mode 100644 index 36017ae..0000000 --- a/tests/fixtures/media/check.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - -Created by potrace 1.15, written by Peter Selinger 2001-2017 - - - - - diff --git a/tests/fixtures/media/error.png b/tests/fixtures/media/error.png deleted file mode 100644 index e9ef1650079060b69f020ed818a6aeb576565fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13059 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 diff --git a/tests/fixtures/media/folder.png b/tests/fixtures/media/folder.png deleted file mode 100644 index 3d49f454432fa9fc83ad74b3a052ee3af7094f9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2481 zcmbVO3s4hh9uEisQLc1Av`E`Eh?N^Q`^bAGO*Ih+H4rhakExw(b~mtNl3kNkf+7-n zQF}<`avD+55y4ldV{x=SUj?Sq(%N26kDddzw%A_puI(uxm2;*@xo;svd#63;GW+wFSBezv5nfWhSJe8!?RGHp8y1IMj#=-+vV{Qe!Xm*mjGjN8IeKb5Mhm8 zwoo((t*}@jBj;rxm0S%|m{J94baG6sQ0jEK5RPJ61l1y#0>;#Y5+!gPiu`22nwNGG zrKbFdEilu|$_0TZ5Tv4_LSCVebKWup)9G{wiX%7<0|e}=^a!LM_V}_U8BC0i^0K_Z zavn%zBpuv3K`#SJCtPszQCg2L5+)EZ#82`FCPzh=#(^{y#qsOBu5sfug)lD0&3FVK zz+zD>U(N}fubg`bb@cPk41myDEKwT|)Z%tWP56Yx>wz1QfIJZGvsLm8Qp)(abzX{D zydKER620LGqn9BC&THd1*JPrslae8$QA~^unr|T~)+73nbKfq;L<)>vCZ-NXl`w|e z#MG$?1q!AFicUZ+9L+i_qfi};VK5G$7@<@VxDrNH_n@F|Xi^~mCzz%PC+BsOz-!h` zmN5wLDU(6bSQ19g#d(2Ypboo#-E1^ky_}PEfe$85fC@;~13b(gS8A~kW{*!GJrrX$ z>17}|a+akDEv8T?aZ(Gb)CvWxbdnC(p>aB3ngo$SRg}_+t0woGIBK0(0^VYK(*#hmwMIj7|e<6tq@FIW=lpOHHzscv)~DN!R_XqAD6N>NJ#t zVbtKXXhc7;>GGX1vIfV++%PcGdv3s;CL>}gWk6i!D`X4Qy z6T+hUA6B*hxBf_gsB+R%#(-Xn$V872u`5la2l>y;jeonZgH6IgTNH=Uehenjj?Q=h zwHNg3*g!&1BAN1%*|gB+Z@Rg+qa<}{W~X8KXJ0nQwqUvEP9D=Xeq=}24vrl(wEm{K zIpsMhH$PQcF*apPlAfAS-}UYFnqT2h9L<G4aU8^fEMW~G^8&hB{Ie60c5+UE)_U?nXZsWsF8^v~iRq`xie*$+dCU1z#V zw!F`K<2t`SHET&ovi;WO*+pSV-mo+@5A9E$Yv~*UBdEb2GZtT;mYLBSFrF~^n`Ehc zxqT?kpP#iTxGgTzl^f299n9SK@#8tB&|CHO?|1hN)#Z}pr>{AV&5!%+^ej5i-BI{z zyp&yh2wHv6GObQ`r~vySxIx8+~|DKJwh)!`S0Opl%Y6wZ?_Go48;@jd*7WVeZfBhB+WOQ@)px!*0|GI_b7#0_^uWg>>U3vg%r};!qnI(= zW0=`raHHw-j?aaZ*HbTbR_6xe{?<7=CBD6@w9xwYg_xywd3aH6=`E=#u%l{6OXxY* z4;N<-ouBqa%M2qndTQWKkHHYod#rUAnyQbl-LJ=PjAizcJEy9z>Jv0C>|U+jW8e8? uhts$z_|+M{mE<83WJzkcrz7;e9C<=g7o!>@>cs?3XvO(z!FYyS { - - return new Promise((resolve, reject) => { - - if (conn.readyState !== 1) { - - conn.once("open", () => { - - resolve(); - - }) - - } else { - - resolve(); - } - - }) -} - -beforeEach(async(done) => { - - await waitForDatabase(); - - const initVect = crypto.randomBytes(16); - - // user = await createUser(); - const {user: gotUser} = await createUser(); - user = gotUser; - - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user._id, - parent: "/", - parentList: "/", - "IV": initVect - } - - file = await createFile(filename, filepath, metadata, user); - - done(); - - // if (conn.readyState === 0) { - - // conn.once("open", async() => { - - // const initVect = crypto.randomBytes(16); - - // // user = await createUser(); - // const {user: gotUser} = await createUser(); - // user = gotUser; - - // const filename = "bunny.png"; - // const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - // const metadata = { - // owner: user._id, - // parent: "/", - // parentList: "/", - // "IV": initVect - // } - - // file = await createFile(filename, filepath, metadata, user); - - // done(); - // }) - // } else { - - // const initVect = crypto.randomBytes(16); - // //user = await createUser(); - // const {user: gotUser} = await createUser(); - // user = gotUser; - - // const filename = "bunny.png"; - // const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - // const metadata = { - // owner: user._id, - // parent: "/", - // parentList: "/", - // "IV": initVect - // } - - // file = await createFile(filename, filepath, metadata, user); - - // done(); - // } -}) - - -afterEach( async(done) => { - - //const gfs = Grid(conn.db, mongoose.mongo); - let bucket = new mongoose.mongo.GridFSBucket(conn.db); - - await User.deleteMany({}); - await Folder.deleteMany({}); - - const allFiles = await conn.db.collection("fs.files").find({}).toArray(); - - for (let i = 0; i < allFiles.length; i++) { - - const currentFileID = allFiles[i]._id; - await bucket.delete(ObjectID(currentFileID)); - } - - done(); - -}) - -// test("When giving user, and thumbnail id, should get thumbnail" , async() => { - -// const thumbnailFile = await createThumbnail(file, file.filename, user); -// const thumbnailID = thumbnailFile.metadata.thumbnailID; - - -// const recievedThumbnail = await fileService.getThumbnail(user, thumbnailID); - - -// expect(recievedThumbnail.buffer.length).not.toBe(0); -// }) - -// test("When giving the wrong user for thumbnail, should throw not authorized error", async() => { - -// const thumbnailFile = await createThumbnail(file, file.filename, user); -// const thumbnailID = thumbnailFile.metadata.thumbnailID; -// const wrongUser = { -// _id: "123456789012" -// } - -// await expect(fileService.getThumbnail(wrongUser, thumbnailID)).rejects.toThrow(); -// }) - -test("When giving file, should remove one time link", async() => { - - await fileService.removePublicOneTimeLink(file); -}) - -test("When giving userID, and fileID, should remove public link", async() => { - - const userID = user._id; - const fileID = file._id; - - await fileService.removeLink(userID, fileID); -}) - -test("When giving the wrong userID to remove public link, should throw not found error", async() => { - - const wrongUserID = "123456789012"; - const fileID = file._id; - - await expect(fileService.removeLink(wrongUserID, fileID)).rejects.toThrow(); -}) - -test("When giving user, and fileID, should make file public and return token", async() => { - - const fileID = file._id; - - const recievedToken = await fileService.makePublic(user._id, fileID); - - expect(recievedToken.length).not.toBe(0); -}) - -test("When giving the wrong user to make file public, should throw not found error", async() => { - - const wrongUser = { - _id: "123456789012" - } - const fileID = file._id; - - await expect(fileService.makePublic(wrongUser, fileID)).rejects.toThrow(); -}) - -test("When giving fileID, should return file info if public", async() => { - - const userID = user._id; - const fileID = file._id; - const token = jwt.sign({_id: userID.toString()}, env.password); - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - - - const receivedFile = await fileService.getPublicInfo(fileID, token); - - expect(receivedFile).not.toBe(null); - expect(receivedFile).not.toBe(undefined); -}) - -test("When giving fileID of a file thats not public, should throw not found error", async() => { - - const fileID = file._id; - - await expect(fileService.getPublicInfo(fileID)).rejects.toThrow(); -}) - -test("When giving wrong tempToken for public file, should throw not found error", async() => { - - const userID = user._id; - const fileID = file._id; - const token = jwt.sign({_id: userID.toString()}, env.password); - const wrongTempToken = "12345"; - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - - await expect(fileService.getPublicInfo(fileID, wrongTempToken)).rejects.toThrow(); -}) - -test("When giving userID and fileID, should make one time public link", async() => { - - const userID = user._id; - const fileID = file._id; - - await fileService.makeOneTimePublic(userID, fileID); -}) - -test("When giving wrong userID for one time public link, should throw not found error", async() => { - - const wrongUserID = "123456789012"; - const fileID = file._id; - - await expect(fileService.makeOneTimePublic(wrongUserID, fileID)).rejects.toThrow(); -}) - -test("When giving userID and fileID, should return file info", async() => { - - const userID = user._id; - const fileID = file._id; - - const receivedFile = await fileService.getFileInfo(userID, fileID); - - expect(receivedFile).not.toBe(null); - expect(receivedFile).not.toBe(undefined); -}) - -test("When giving the wrong userID for file info, should throw not found error", async() => { - - const wrongUserID = "123456789012"; - const fileID = file._id; - - await expect(fileService.getFileInfo(wrongUserID, fileID)).rejects.toThrow(); -}) - -test("When giving userID, should return quicklist", async() => { - - const userID = user._id; - - const receivedQuickList = await fileService.getQuickList(userID); - - expect(receivedQuickList.length).toBe(1); -}) - -test("When giving wrong userID for quicklist, should return list with 0 length", async() => { - - const wrongUserID = "123456789012"; - - const receivedQuickList = await fileService.getQuickList(wrongUserID); - - expect(receivedQuickList.length).toBe(0); -}) - -test("When giving userID, and default query, should get file list", async() => { - - const userID = user._id; - - const receivedFileList = await fileService.getList(userID, {}); - - expect(receivedFileList.length).toBe(1); -}) - -test("When giving wrong userID for file list, should return list with 0 length", async() => { - - const wrongUserID = "123456789012"; - - const receivedList = await fileService.getList(wrongUserID, {}); - - expect(receivedList.length).toBe(0); -}) - -// test("When giving user, should create download token", async() => { - -// const recievedToken = await fileService.getDownloadToken(user); - -// expect(recievedToken.length).not.toBe(0); -// }) - -// test("When giving user and cookie, should create video download token", async() => { - -// const recievedToken = await fileService.getDownloadTokenVideo(user, {}); - -// expect(recievedToken.length).not.toBe(0); -// }) - -// test("When giving user and tempToken, should remove temp token", async() => { - -// const tempToken = await user.generateTempAuthToken(); - -// await fileService.removeTempToken(user, tempToken); -// }) - -test("When giving userID and search query, should return suggested list", async() => { - - const userID = user._id; - const search = "bunn"; - - const {fileList} = await fileService.getSuggestedList(userID, search); - - expect(fileList.length).toBe(1); -}) - -test("When giving wrong userID for suggested list, should return list with length of 0", async() => { - - const wrongUserID = "123456789012"; - const search = "bunn"; - - const {fileList} = await fileService.getSuggestedList(wrongUserID, search); - - expect(fileList.length).toBe(0); -}) - -test("When giving userID, fileID, and title, should rename file", async() => { - - const userID = user._id; - const fileID = file._id; - const title = "new name"; - - await fileService.renameFile(userID, fileID, title); -}) - -test("When giving the wrong userID for rename file, should throw not found error", async() => { - - const wrongUserID = "123456789012"; - const fileID = file._id; - const title = "new name"; - - await expect(fileService.renameFile(wrongUserID, fileID, title)).rejects.toThrow(); -}) - -test("When giving the userID, fileID, and parentID should move file", async() => { - - const userID = user._id; - const fileID = file._id; - const folder = new Folder({ - owner: user._id, - parent: "/", - parentList: ["/"], - name: "folder" - }); - - await folder.save(); - - await fileService.moveFile(userID, fileID, folder._id) -}) - -test("When giving the wrong userID for move file should throw a not found error", async() => { - - const wrongUserID = "123456789012"; - const fileID = file._id; - const folder = new Folder({ - owner: user._id, - parent: "/", - parentList: ["/"], - name: "folder" - }); - - await folder.save(); - - await expect(fileService.moveFile(wrongUserID, fileID, folder._id)).rejects.toThrow(); -}) - -test("When giving an non existing folderID for file move, should throw not found error", async() => { - - const userID = user._id; - const fileID = file._id; - const wrongFolderID = "123456789012"; - - await expect(fileService.moveFile(userID, fileID, wrongFolderID)).rejects.toThrow(); -}) - -test("When giving user with personal data enabled, should return personal file when getting file list", async() => { - - const initVect = crypto.randomBytes(16); - - const {userData, user: user2} = await createUserDbType(true); - - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true, - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - - const receivedFileList = await fileService.getList(user2, {}); - - expect(receivedFileList.length).toBe(2); - expect(receivedFileList[0].metadata.personalFile).toBe(undefined); - expect(receivedFileList[1].metadata.personalFile).toBe(true); -}) - -test("When user no longer has personal file enabled, should no longer show personal file", async() => { - - const initVect = crypto.randomBytes(16); - - const {userData, user: user2} = await createUserDbType(); - - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true, - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - - const receivedFileList = await fileService.getList(user2, {}); - - expect(receivedFileList.length).toBe(1); - expect(receivedFileList[0].metadata.personalFile).toBe(undefined); -}) - -test("When user no longer has personal file enabled, and there is only personal files should return empty list", async() => { - - const initVect = crypto.randomBytes(16); - - const {userData, user: user2} = await createUserDbType(); - - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true, - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - - const receivedFileList = await fileService.getList(user2, {}); - - expect(receivedFileList.length).toBe(0); -}) - -test("When personal file enabled should return quicklist with personal file", async() => { - - const initVect = crypto.randomBytes(16); - - const {userData, user: user2} = await createUserDbType(true); - - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true, - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - - const receivedQuickList = await fileService.getQuickList(user2); - - expect(receivedQuickList.length).toBe(2); - expect(receivedQuickList[0].metadata.personalFile).toBe(undefined); - expect(receivedQuickList[1].metadata.personalFile).toBe(true); -}) - -test("When personal file is no longer enabled, should return quicklist without personal file", async() => { - - const initVect = crypto.randomBytes(16); - - const {userData, user: user2} = await createUserDbType(); - - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true, - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - - const receivedQuickList = await fileService.getQuickList(user2); - - expect(receivedQuickList.length).toBe(1); - expect(receivedQuickList[0].metadata.personalFile).toBe(undefined); - -}) - -test("When personal file is no longer enabled, and there are only files that are personal should return empty quicklist", async() => { - - const initVect = crypto.randomBytes(16); - - const {userData, user: user2} = await createUserDbType(); - - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true, - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - - const receivedQuickList = await fileService.getQuickList(user2); - - expect(receivedQuickList.length).toBe(0); - -}) - -test("When giving search query should get searched list", async() => { - - const {user: user2} = await createUser2() - - const initVect = crypto.randomBytes(16); - - const filename = "bunny.png"; - const filename2 = "dog.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata, user2); - const file4 = await createFile(filename2, filepath, metadata, user2); - - const receivedFileList = await fileService.getList(user2, {search: "bunny"}) - - expect(receivedFileList.length).toBe(2); - expect(receivedFileList[0].filename).toBe(filename); - expect(receivedFileList[1].filename).toBe(filename); - -}) - -test("When giving search query and having personal file should searched list with personal file", async() => { - - const {user: user2} = await createUserDbType(true) - - const initVect = crypto.randomBytes(16); - - const filename = "bunny.png"; - const filename2 = "dog.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - const file4 = await createFile(filename2, filepath, metadata, user2); - - const receivedFileList = await fileService.getList(user2, {search: "bunny"}) - - expect(receivedFileList.length).toBe(2); - expect(receivedFileList[0].filename).toBe(filename); - expect(receivedFileList[1].filename).toBe(filename); - expect(receivedFileList[0].metadata.personalFile).toBe(true) -}) - -test("When giving search with user that has personal file disabled, should return empty list if all files are personal", async() => { - - const {user: user2} = await createUserDbType() - - const initVect = crypto.randomBytes(16); - - const filename = "bunny.png"; - const filename2 = "dog.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - const file4 = await createFile(filename2, filepath, metadata, user2); - - const receivedFileList = await fileService.getList(user2, {search: "bunny"}) - - expect(receivedFileList.length).toBe(0); -}) - -test("When giving search query with user that has disabled personal file should return list without personal file", async() => { - - const {user: user2} = await createUser2() - - const initVect = crypto.randomBytes(16); - - const filename = "bunny.png"; - const filename2 = "dog.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - } - - const metadata2 = { - owner: user2._id, - parent: "/", - parentList: "/", - "IV": initVect, - personalFile: true - } - - const file2 = await createFile(filename, filepath, metadata, user2); - const file3 = await createFile(filename, filepath, metadata2, user2); - const file4 = await createFile(filename2, filepath, metadata, user2); - - const receivedFileList = await fileService.getList(user2, {search: "bunny"}) - - expect(receivedFileList.length).toBe(1); - expect(receivedFileList[0].filename).toBe(filename); - expect(receivedFileList[0].metadata.personalFile).toBe(undefined) - -}) -// test("When giving userID, and fileID, should remove file", async() => { - -// const userID = user._id; -// const fileID = file._id; - -// await fileService.deleteFile(userID, fileID); -// }) - -// test("When giving the wrong userID for delete file, should throw not found error", async() => { - -// const wrongUserID = "123456789012"; -// const fileID = file._id; - -// await expect(fileService.deleteFile(wrongUserID, fileID)).rejects.toThrow(); -// }) \ No newline at end of file diff --git a/tests/services/FolderService/index.test.js b/tests/services/FolderService/index.test.js deleted file mode 100644 index dfefef8..0000000 --- a/tests/services/FolderService/index.test.js +++ /dev/null @@ -1,620 +0,0 @@ -import User from "../../../dist/models/user"; -const createUser = require("../../fixtures/createUser"); -import Folder from "../../../dist/models/folder"; -import mongoose from "../../../dist/db/mongoose" -const conn = mongoose.connection; -const crypto = require("crypto"); -const createFile = require("../../fixtures/createFile"); -const path = require("path"); -const ObjectID = require('mongodb').ObjectID -import FolderService from "../../../dist/services/FolderService" -const folderService = new FolderService(); -const createUserDbType = require("../../fixtures/createUserDbType"); -const createUser2 = require("../../fixtures/createUser2"); - -let user; -let folder; - -const waitForDatabase = () => { - - return new Promise((resolve, reject) => { - - if (conn.readyState !== 1) { - - conn.once("open", () => { - - resolve(); - - }) - - } else { - - resolve(); - } - - }) -} - -beforeEach(async(done) => { - - await waitForDatabase(); - - const {user: gotUser} = await createUser(); - user = gotUser; - - const folderData = { - name: "bunny", - parent: "/", - owner: user._id, - parentList: ["/"] - } - - folder = new Folder(folderData); - await folder.save(); - - done(); - - // if (conn.readyState === 0) { - - // conn.once("open", async() => { - - // const {user: gotUser} = await createUser(); - // user = gotUser; - - // const folderData = { - // name: "bunny", - // parent: "/", - // owner: user._id, - // parentList: ["/"] - // } - - // folder = new Folder(folderData); - // await folder.save(); - - // done(); - // }) - - // } else { - - // // user = await createUser(); - // const {user: gotUser} = await createUser(); - // user = gotUser; - - // const folderData = { - // name: "bunny", - // parent: "/", - // owner: user._id, - // parentList: ["/"] - // } - - // folder = new Folder(folderData); - // await folder.save(); - - // done(); - // } - -}) - -afterEach(async(done) => { - - let bucket = new mongoose.mongo.GridFSBucket(conn.db); - - await User.deleteMany({}); - await Folder.deleteMany({}); - - // const gfs = Grid(conn.db, mongoose.mongo); - - const allFiles = await conn.db.collection("fs.files").find({}).toArray(); - - for (let i = 0; i < allFiles.length; i++) { - - const currentFileID = allFiles[i]._id; - await bucket.delete(ObjectID(currentFileID)); - } - - done(); -}) - -test("When giving userID and folderID, should return folder info" , async() => { - - const userID = user._id; - const folderID = folder._id; - - const receivedFolder = await folderService.getFolderInfo(userID, folderID); - - expect(receivedFolder._id).toEqual(folderID); -}) - -test("When giving the wrong userID for folder info, should return not found error", async() => { - - const wrongUserID = "123456789012"; - const folderID = folder._id; - - await expect(folderService.getFolderInfo(wrongUserID, folderID)).rejects.toThrow(); -}) - -test("When giving userID and folderID, should return subfolder list", async() => { - - const userID = user._id; - const folderID = folder._id; - - const {folderNameList, folderIDList} = await folderService.getFolderSublist(userID, folderID); - - expect(folderNameList.length).toBe(2); - expect(folderIDList.length).toBe(2); -}) - -test("When giving the wrong userID for subfolder list, should throw not found error", async() => { - - const wrongUserID = "123456789012"; - const folderID = folder._id; - - await expect(folderService.getFolderSublist(wrongUserID, folderID)).rejects.toThrow(); -}) - -test("When giving userID and query with default values, should return folder list", async() => { - - const userID = user._id; - - - const receivedFolderList = await folderService.getFolderList(userID, {}); - - - expect(receivedFolderList.length).toBe(1); -}) - -test("When giving wrong userID for folder list, should return empty list", async() => { - - const wrongUserID = "123456789012"; - - - const receivedFolderList = await folderService.getFolderList(wrongUserID, {}); - - - expect(receivedFolderList.length).toBe(0); -}) - -test("When giving userID, folderID, and title, should rename folder", async() => { - - const userID = user._id; - const folderID = folder._id; - const title = "coconot"; - - await folderService.renameFolder(userID, folderID, title); - const updatedFolder = await Folder.findById(folderID); - - expect(updatedFolder.name).toBe(title); -}) - -test("When giving wrong userID for rename folder, should throw not found error", async() => { - - const wrongUserID = "123456789012"; - const folderID = folder._id; - const title = "coconot"; - - - await expect(folderService.renameFolder(wrongUserID, folderID, title)).rejects.toThrow(); -}) - -test("When giving userID, folderID, and parentID, should move folder", async() => { - - const newFolder = new Folder({ - name: "new folder", - owner: user._id, - parent: "1234", - parentList: ["/", "1234"]  - }) - - await newFolder.save(); - - const userID = user._id; - const folderID = folder._id; - const parentID = newFolder._id; - - - await folderService.moveFolder(userID, folderID, parentID); - const updatedFolder = await Folder.findById(folderID); - - - expect(updatedFolder.parent.toString()).toBe(parentID.toString()); -}) - -test("When giving the wrong userID for move folder, should throw new found error", async() => { - - const newFolder = new Folder({ - name: "new folder", - owner: user._id, - parent: "1234", - parentList: ["/", "1234"]  - }) - - await newFolder.save(); - - const wrongUserID = "123456789012"; - const folderID = folder._id; - const parentID = newFolder._id; - - await expect(folderService.moveFolder(wrongUserID, folderID, parentID)).rejects.toThrow() -}) - -test("When giving a parentID that does not exist for move folder, should throw not found error", async() => { - - const userID = user._id; - const folderID = folder._id; - const wrongParentID = "123456789012"; - - await expect(folderService.moveFolder(userID, folderID, wrongParentID)).rejects.toThrow() -}) - -test("When giving userID, folderID, and parentID, for folder with subitems, should move all items", async() => { - - const userID = user._id; - - const folderOne = new Folder({ - name: "new folder", - owner: user._id, - parent: "/", - parentList: ["/"]  - }) - - const folderID = folderOne._id; - - await folderOne.save(); - - const folderTwo = new Folder({ - name: "new folder 2", - owner: user._id, - parent: folderOne._id, - parentList: ["/", folderOne._id.toString()]  - }) - - await folderTwo.save(); - - const folderThree = new Folder({ - name: "new folder3 ", - owner: user._id, - parent: folderTwo._id, - parentList: ["/", folderOne._id.toString(), folderTwo._id.toString()]  - }) - - await folderThree.save(); - - const folderFour = new Folder({ - name: "new folder 4", - owner: user._id, - parent: "/", - parentList: ["/"]  - }) - - const parentID = folderFour._id; - - await folderFour.save(); - - process.env.KEY = "1234"; - - const initVect = crypto.randomBytes(16); - const filename = "bunny.png"; - const filepath = path.join(__dirname, "../../fixtures/media/check.svg") - const metadata = { - owner: user._id, - parent: folderOne._id.toString(), - parentList: "/,"+folderOne._id.toString(), - "IV": initVect - } - - const fileOne = await createFile(filename, filepath, metadata, user); - - const metadataTwo = { - owner: user._id, - parent: folderTwo._id.toString(), - parentList: "/,"+folderTwo._id.toString(), - "IV": initVect - } - - const fileTwo = await createFile(filename, filepath, metadataTwo, user); - - const metadataThree = { - owner: user._id, - parent: folderThree._id.toString(), - parentList: "/,"+folderThree._id.toString(), - "IV": initVect - } - - const fileThree = await createFile(filename, filepath, metadataThree, user); - - - - await folderService.moveFolder(userID, folderID, parentID); - const updatedFolderOne = await Folder.findById(folderOne._id); - const updatedFolderTwo = await Folder.findById(folderTwo._id); - const updatedFolderThree = await Folder.findById(folderThree._id); - - - - expect(updatedFolderOne.parent.toString()).toBe(parentID.toString()); - expect(updatedFolderOne.parentList[0].toString()).toBe("/"); - expect(updatedFolderOne.parentList[1].toString()).toBe(parentID.toString()); - expect(updatedFolderOne.parentList.length).toBe(2); - - expect(updatedFolderTwo.parentList[0].toString()).toBe("/"); - expect(updatedFolderTwo.parentList[1].toString()).toBe(parentID.toString()); - expect(updatedFolderTwo.parentList[2].toString()).toBe(folderOne._id.toString()); - expect(updatedFolderTwo.parentList.length).toBe(3); - - expect(updatedFolderThree.parentList[0].toString()).toBe("/"); - expect(updatedFolderThree.parentList[1].toString()).toBe(parentID.toString()); - expect(updatedFolderThree.parentList[2].toString()).toBe(folderOne._id.toString()); - expect(updatedFolderThree.parentList[3].toString()).toBe(folderTwo._id.toString()); - expect(updatedFolderThree.parentList.length).toBe(4); -}) - -test("When searching for folder should return list of searched items", async() => { - - const {user: user2} = await createUser2(); - - const folderData2 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"] - } - - - const folderData3 = { - name: "dog", - parent: "/", - owner: user2._id, - parentList: ["/"] - } - - - const folder2 = new Folder(folderData2); - const folder3 = new Folder(folderData2); - const folder4 = new Folder(folderData3); - - await folder2.save(); - await folder3.save(); - await folder4.save(); - - const folderList = await folderService.getFolderList(user2, {search: "bunny"}) - - expect(folderList.length).toBe(2); -}) - -test("When searching for list with personal folders should return list with personal folders", async() => { - - const {user: user2} = await createUserDbType(true); - - const folderData2 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - - const folderData3 = { - name: "dog", - parent: "/", - owner: user2._id, - parentList: ["/"] - } - - - const folder2 = new Folder(folderData2); - const folder3 = new Folder(folderData2); - const folder4 = new Folder(folderData3); - - await folder2.save(); - await folder3.save(); - await folder4.save(); - - const folderList = await folderService.getFolderList(user2, {search: "bunny"}) - - expect(folderList.length).toBe(2); -}) - -test("When user no longer has personal folders enabled, should return list with no personal folders when searching", async() => { - - const {user: user2} = await createUserDbType(); - - const folderData2 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - const folderData4 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - } - - - const folderData3 = { - name: "dog", - parent: "/", - owner: user2._id, - parentList: ["/"] - } - - - const folder2 = new Folder(folderData2); - const folder3 = new Folder(folderData4); - const folder4 = new Folder(folderData3); - - await folder2.save(); - await folder3.save(); - await folder4.save(); - - const folderList = await folderService.getFolderList(user2, {search: "bunny"}) - - expect(folderList.length).toBe(1); - -}) - -test("When user no longer has personal folders enabled, and only has personal folders should return empty list when searching", async() => { - - const {user: user2} = await createUserDbType(); - - const folderData2 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - const folderData4 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - - const folderData3 = { - name: "dog", - parent: "/", - owner: user2._id, - parentList: ["/"] - } - - - const folder2 = new Folder(folderData2); - const folder3 = new Folder(folderData4); - const folder4 = new Folder(folderData3); - - await folder2.save(); - await folder3.save(); - await folder4.save(); - - const folderList = await folderService.getFolderList(user2, {search: "bunny"}) - - expect(folderList.length).toBe(0); -}) - -test("When user has personal folder enabled should get folder list with personal folder", async() => { - - const {user: user2} = await createUserDbType(true); - - const folderData2 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - - const folderData3 = { - name: "dog", - parent: "/", - owner: user2._id, - parentList: ["/"] - } - - - const folder2 = new Folder(folderData2); - const folder3 = new Folder(folderData2); - const folder4 = new Folder(folderData3); - - await folder2.save(); - await folder3.save(); - await folder4.save(); - - const folderList = await folderService.getFolderList(user2, {}) - - expect(folderList.length).toBe(3); - -}) - -test("When user no longer has personal folders enabled should return list without personal folders", async() => { - - const {user: user2} = await createUserDbType(); - - const folderData2 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - const folderData4 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - } - - - const folderData3 = { - name: "dog", - parent: "/", - owner: user2._id, - parentList: ["/"] - } - - - const folder2 = new Folder(folderData2); - const folder3 = new Folder(folderData4); - const folder4 = new Folder(folderData3); - - await folder2.save(); - await folder3.save(); - await folder4.save(); - - const folderList = await folderService.getFolderList(user2, {}) - - expect(folderList.length).toBe(2); -}) - -test("When user no longer has personal folders enabled, and there are only personal folders should return empty list", async() => { - - const {user: user2} = await createUserDbType(); - - const folderData2 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - const folderData4 = { - name: "bunny", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - - const folderData3 = { - name: "dog", - parent: "/", - owner: user2._id, - parentList: ["/"], - personalFolder: true - } - - - const folder2 = new Folder(folderData2); - const folder3 = new Folder(folderData4); - const folder4 = new Folder(folderData3); - - await folder2.save(); - await folder3.save(); - await folder4.save(); - - const folderList = await folderService.getFolderList(user2, {}) - - expect(folderList.length).toBe(0); - -}) \ No newline at end of file diff --git a/tests/services/UserService/index.test.js b/tests/services/UserService/index.test.js deleted file mode 100644 index f6b44b3..0000000 --- a/tests/services/UserService/index.test.js +++ /dev/null @@ -1,136 +0,0 @@ -import User from "../../../dist/models/user"; -import mongoose from "../../../dist/db/mongoose"; -const conn = mongoose.connection; -const createUser = require("../../fixtures/createUser"); -import UserService from "../../../dist/services/UserService"; -const userService = new UserService(); - -let user; - - -const waitForDatabase = () => { - - return new Promise((resolve, reject) => { - - if (conn.readyState !== 1) { - - conn.once("open", () => { - - resolve(); - - }) - - } else { - - resolve(); - } - - }) -} - -beforeEach(async(done) => { - - await waitForDatabase(); - // user = await createUser(); - const {user: gotUser} = await createUser(); - user = gotUser; - done(); - -}) - -afterEach(async(done) => { - - await User.deleteMany({}); - done(); -}) - -test("When giving email and password for login, should return user and token", async() => { - - const email = user.email; - const password = "12345678"; - - const userData = { - email, - password - } - - const {user: receivedUser} = await userService.login(userData); - - expect(receivedUser._id.toString()).toBe(user._id.toString()); -}) - -test("When giving wrong password for login, throw error", async() => { - - const email = user.email; - const password = "87654321"; - - const userData = { - email, - password - } - - await expect(userService.login(userData)).rejects.toThrow(); -}) - -test("When giving user should logout and not throw error", async() => { - - await userService.logout(user); -}) - -test("When giving user, should logout all, show 0 tokens, and not throw error", async() => { - - const userID = user._id; - - await userService.logoutAll(user); - const updatedUser = await User.findById(userID); - - expect(updatedUser.tokens.length).toBe(0); -}) - -test("When giving user data, should create new user", async() => { - - const userData = { - name: "Test User", - email: "test3@test.com", - password: "12345678", - } - - const {user: createdUser} = await userService.create(userData); - - expect(createdUser.email).toBe(userData.email); -}) - -test("When creating user with duplicate email, should throw an error", async() => { - - const userData = { - name: "Test User", - email: "test2@test.com", - password: "12345678", - } - - await expect(userService.create(userData)).rejects.toThrow(); -}) - -test("When giving user, token, old password, and new password. Should change password", async() => { - - const oldPassword = "12345678"; - const newPassword = "87654321"; - - await userService.changePassword(user, oldPassword, newPassword); -}) - -test("When giving wrong old password for change password, should throw an error", async() => { - - const wrongOldPassword = "1649560569"; - const newPassword = "87654321"; - - await expect(userService.changePassword(user._id, wrongOldPassword, newPassword)).rejects.toThrow(); -}) - -test("When giving new password with insufficent length, should throw an error", async() => { - - const oldPassword = "12345678"; - const newPassword = "8765"; - - await expect(userService.changePassword(user._id, oldPassword, newPassword)).rejects.toThrow(); -}) \ No newline at end of file diff --git a/tests/setupTests.js b/tests/setupTests.js deleted file mode 100644 index da3b4db..0000000 --- a/tests/setupTests.js +++ /dev/null @@ -1,10 +0,0 @@ -// import Enzyme from "enzyme" -// import Adapter from "enzyme-adapter-react-16" -// import DotEnv from "dotenv" -// import "babel-polyfill"; - -// Enzyme.configure({ -// adapter: new Adapter() -// }) - -// DotEnv.config({path: ".env.test"}) diff --git a/webUI/index.html b/webUI/index.html deleted file mode 100644 index 5fdc166..0000000 --- a/webUI/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - myDrive - - - - - - - - - - - -
- -
- -

Enter Encryption Password

-
- - -
- -
- -
- - - - - \ No newline at end of file diff --git a/webUI/src/index.js b/webUI/src/index.js deleted file mode 100644 index d6d48fe..0000000 --- a/webUI/src/index.js +++ /dev/null @@ -1,26 +0,0 @@ -import axios from "axios"; - -const formElement = document.getElementById("form-submit") -const inputElement = document.getElementById("input-password"); -const mainDiv = document.getElementById("main-div") - -formElement.addEventListener("submit", async (e) => { - - e.preventDefault(); - - const port = process.env.PORT || "3000"; - const fullURL = `http://localhost:${port}`; - - const value = inputElement.value; - - const data = {password: value} - - axios.post("/submit", data).then(() => { - - inputElement.value = ""; - mainDiv.style.display = "none"; - - }).catch((err) => { - console.log("Error", err); - }); -}) \ No newline at end of file diff --git a/webUI/src/styles.css b/webUI/src/styles.css deleted file mode 100644 index c07cad8..0000000 --- a/webUI/src/styles.css +++ /dev/null @@ -1,79 +0,0 @@ -* { - margin: 0; - padding: 0; -} - -html { - font-size: 62.5%; -} - -#main-div { - height: 100vh; - width: 100vw; - /* background: blue; */ - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -#box-div { - height: 30%; - width: 90%; - /* background: purple; */ - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-around; - border: .5px; - border-style: groove; -} - -@media (min-width:600px) { - #box-div { - - height: 30%; - width: 400px; - /* background: purple; */ - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-around; - border: .5px; - border-style: groove; - } - } - -#input-password { - border: 1px solid #cacccd; - border-radius: 2px; - height: 43px; - font-size: 1.8rem; - font-weight: 300; - padding: 1.2rem; - margin: 0 0 1.2rem 0; - width: -webkit-fill-available; - margin-top: -17px; -} - -#submit-button { - color: #fff; - background: #3c85ed; - font-size: 1.8rem; - padding: 1.2rem; - border: none; - display: inline-block; - text-decoration: none; - line-height: 1; - border-radius: 2px; -} - -#title { - margin: 0 0 3rem 0; - line-height: 1; - font-family: Arial,Helvetica,sans-serif; - font-weight: 500; - color: #666; - font-size: 2em; - margin-top: 24px; -} \ No newline at end of file diff --git a/webUISetup/index.html b/webUISetup/index.html deleted file mode 100644 index 3a0b2cc..0000000 --- a/webUISetup/index.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - myDrive - - - - - - - - - - - -
- -
- -
-

Setup

-
- -
-
-

Use Docker With myDrive?

-
-
- -
-
- -
-
-

Include MongoDB In The Docker Image? (Select No If You're Using MongoDB Atlas)

-
-
- -
-
- -
-
-

Enter MongoDB URL

-
-
-
- -
-
-
- -
-
-

Enter MongoDB URL

-
-
-
- -
-
-
- -
-
- -
-
-

Use WebUI For Encryption Key (Recommended, Selecting No Will Require You To Enter An Encryption Key Now, Which Is Less Secure)

-
-
- -
-
-
- -
-
-
- -
-
-

Use default ports? (http port: 3000, https port: 8080

-
-
- -
-
- -
-
-

Enter ports

-
-
-
- - -
-
-
- -
-
-

Enter The Client URL/IP Address (Must Be A Valid Link and Must Start With "http://" or "https://", Include Port With IP Address If Needed, Do Not End The URL In a Slash "/")

-
-
-
- -
-
-

Error: URL Cannot End In a Slash ("/")

-

Error: URL Must Start With "http://" or "https://"

-
- -
-
-

Pick A Database To Store File Chunks

-
-
- -
-
- -
-
-

Enter The FileSyem Path

-
-
-
- -
-
-
- - -
-
-

Enter The S3 ID

-
-
-
- -
-
-
-

Enter The S3 Key

-
-
-
- -
-
-
-

Enter The S3 Bucket

-
-
-
- -
-
-
- - - -
-
-

Enter Access Token Secret

-
-
-
- -
-
-
- -
-
-

Enter Refresh Token Secret

-
-
-
- -
-
-
- -
-
-

Enter Cookie Secret

-
-
-
- -
-
-
- -
-
-

Use Secure Cookies? (You Can Only Use Secure Cookies If You Are Using HTTPS/SSL, Do Not Select This Option If You Do Not Have HTTPS or else Cookies/Logging in Will Not Work At All. This is Highly Recommended if You Have HTTPS/SSL)

-
-
- -
-
- -
-
-

Use SendGrid To Send Emails? (For Account Email Verification And Password Resets)

-
-
- -
-
- -
-
-

Enter A SendGrid API Key

-
-
-
- -
-
-
- -
-
-

Enter Email Address, This Will Be The Email Address For Sending Email Verifications, And Password Resets.

-
-
-
- -
-
-
- -
-
-

Use SSL? (Will Require SSL Certificate certificate.crt, certificate.ca-bundle, And certificate.key At Root Of The Project. If You Are Hosting On a Service That Already Provides HTTPS/SSL Select No)

-
-
- -
-
- -
- -
- -
- -
- - - - - \ No newline at end of file diff --git a/webUISetup/src/index.js b/webUISetup/src/index.js deleted file mode 100644 index 9c0d0fc..0000000 --- a/webUISetup/src/index.js +++ /dev/null @@ -1,247 +0,0 @@ -import Swal from "sweetalert2"; -import axios from "axios"; - -const dockerSelection = document.getElementById("docker-select"); -const dockerHidden = document.getElementById("docker-hidden") -const dockerSelectionMongoURL = document.getElementById("docker-select-mongoURL") -const dockerHiddenMongoURL = document.getElementById("docker-hidden-mongoURL") -const mainMongoURLWrapper = document.getElementById("mongoURL-wrapper") -const encryptionSelect = document.getElementById("encryption-select"); -const encryptionInput = document.getElementById("encryption-input") -const dbSelect = document.getElementById("db-select") -const fsWrapper = document.getElementById("filesystem-wrapper"); -const s3Wrapper = document.getElementById("s3-wrapper"); -const saveButton = document.getElementById("save-button") -const clientInput = document.getElementById("client-input") -const mongoURLInput = document.getElementById("mongoURL-input"); -const mongoURLInputDocker = document.getElementById("mongoURL-input-docker"); -const s3IDInput = document.getElementById("s3-id-input"); -const s3KeyInput = document.getElementById("s3-key-input"); -const s3BucketInput = document.getElementById("s3-bucket-input"); -const fsInput = document.getElementById("fs-input"); -const SSLSelect = document.getElementById("ssl-select"); -const sendGridInput = document.getElementById("sendgrid-input"); -const sendGridInputEmail = document.getElementById("sendgrid-input-email"); -// const stripeEmailWrapper = document.getElementById('stripe-wrapper-email'); -const sendGridSelect = document.getElementById("sendgrid-select") -const sendGridWrapper = document.getElementById("sendgrid-wrapper"); -const sendGridWrapper2 = document.getElementById("sendgrid-wrapper2"); -const clientInvalidInputText = document.getElementById("client-input-invalid-text"); -const clientInvalidInputText2 = document.getElementById("client-input-invalid-text2"); - -const accessTokenInput = document.getElementById("access-token-input"); -const refreshTokenInput = document.getElementById("refresh-token-input") -const cookieInput = document.getElementById("cookie-input"); -const secureCookieSelect = document.getElementById("secure-cookie-select"); -const mongoDefaultButton = document.getElementById("mongo-default-button"); -const portsSelect = document.getElementById("port-select"); -const httpPortInput = document.getElementById("http-port-input"); -const httpsPortInput = document.getElementById("https-port-input"); -const portsWrappers = document.getElementById("ports-wrapper"); -const customPortsWrapper = document.getElementById("section-wrapper-ports"); -//const stripeInputEmail = document.getElementById('stripe-input-email'); - -dockerSelection.addEventListener("change", (e) => { - - const docker = dockerSelection.value === "yes"; - - if (docker) { - dockerHidden.className = "section-wrapper" - mainMongoURLWrapper.className = "docker-hidden"; - customPortsWrapper.className = "docker-hidden" - portsWrappers.className = "docker-hidden"; - } else { - dockerHidden.className = "docker-hidden" - mainMongoURLWrapper.className = "section-wrapper" - dockerHiddenMongoURL.className = "docker-hidden" - customPortsWrapper.className = "section-wrapper"; - } -}) - -dockerSelectionMongoURL.addEventListener("change", () => { - - const includeMongoDB = dockerSelectionMongoURL.value === "yes"; - - if (!includeMongoDB) { - dockerHiddenMongoURL.className = "section-wrapper" - } else { - dockerHiddenMongoURL.className = "docker-hidden" - } -}) - -encryptionSelect.addEventListener("change", () => { - - const useWebUIForEncryption = encryptionSelect.value === "yes"; - - if (!useWebUIForEncryption) { - encryptionInput.disabled = false; - encryptionInput.className = "mongo-input" - } else { - encryptionInput.disabled = true; - encryptionInput.className = "encryption-key-input" - } - -}) - -dbSelect.addEventListener("change", () => { - - console.log("db select on change") - - const storageType = dbSelect.value; - - if (storageType === "s3") { - - s3Wrapper.className = "section-wrapper" - fsWrapper.className = "docker-hidden"; - - } else if (storageType === "fs") { - - s3Wrapper.className = "docker-hidden"; - fsWrapper.className = "section-wrapper"; - - } else { - - s3Wrapper.className = "docker-hidden"; - fsWrapper.className = "docker-hidden"; - } -}) - -sendGridSelect.addEventListener("change", () => { - - //section-wrapper - - const sendGridEnabled = sendGridSelect.value === "yes"; - - if (sendGridEnabled) { - - sendGridWrapper.className = 'section-wrapper' - sendGridWrapper2.className = 'section-wrapper' - - } else { - - sendGridWrapper.classList = "docker-hidden"; - sendGridWrapper2.classList = "docker-hidden"; - } -}) - -clientInput.addEventListener("input", () => { - - const value = clientInput.value; - - if (value && value.length !== 0) { - - const lastCharacter = value[value.length - 1]; - - if (lastCharacter === "/") { - - clientInput.className = "mongo-input input-invalid" - clientInvalidInputText.className = "invalid-input-text" - - } else { - - clientInput.className = "mongo-input"; - clientInvalidInputText.className = "invalid-input-text-hidden" - } - - } else { - clientInput.className = "mongo-input" - clientInvalidInputText.className = "invalid-input-text-hidden" - } - - if (value && value.length >= 8 || value && value.length >= 7) { - - const firstChactersHttp = value.substring(0, 7); - const firstChactersHttps = value.substring(0, 8); - - if (firstChactersHttps !== "https://" && firstChactersHttp !== "http://") { - clientInput.className = "mongo-input input-invalid" - clientInvalidInputText2.className = "invalid-input-text" - } else { - clientInvalidInputText2.className = "invalid-input-text-hidden" - } - } -}) - -mongoDefaultButton.addEventListener("click", () => { - - mongoURLInput.value = "mongodb://localhost:27017/mydrive-db" -}) - -portsSelect.addEventListener("change", () => { - - const value = portsSelect.value === "no"; - - if (value) { - portsWrappers.className = "section-wrapper" - } else { - portsWrappers.className = "docker-hidden"; - } -}) - -saveButton.addEventListener("click", () => { - - let clientObj = {} - let serverObj = {} - - // Client - clientObj.REMOTE_URL = clientInput.value; - clientObj.DISABLE_STORAGE = true; - //if (dbSelect.value !== "fs") clientObj.DISABLE_STORAGE = true; - - // Server - - portsSelect.value === "no" ? serverObj.HTTP_PORT = httpPortInput.value : serverObj.HTTP_PORT = 3000; - portsSelect.value === "no" ? serverObj.HTTPS_PORT = httpsPortInput.value : serverObj.HTTPS_PORT = 8080; - if (dockerSelection.value === "yes") serverObj.HTTP_PORT = 3000; - if (dockerSelection.value === "yes") serverObj.HTTPS_PORT = 8080; - serverObj.NODE_ENV = "production"; - serverObj.MONGODB_URL = dockerSelection.value !== "yes" ? mongoURLInput.value : - dockerSelectionMongoURL.value !== "yes" ? mongoURLInputDocker.value : "mongodb://mongo:27017/mydrive" - if (encryptionSelect.value !== "yes") serverObj.KEY = encryptionInput.value; - if (dockerSelection.value === "yes") serverObj.DOCKER = true; - if (SSLSelect.value === "yes") serverObj.SSL = true; - if (secureCookieSelect.value === "yes") serverObj.SECURE_COOKIES = true; - if (sendGridSelect.value === "no") serverObj.DISABLE_EMAIL_VERIFICATION = true; - if (sendGridSelect.value === "yes") serverObj.SENDGRID_KEY = sendGridInput.value; - if (sendGridSelect.value === "yes") serverObj.SENDGRID_EMAIL = sendGridInputEmail.value - serverObj.DB_TYPE = dbSelect.value; - serverObj.REMOTE_URL = clientInput.value; - serverObj.PASSWORD_ACCESS = accessTokenInput.value; - serverObj.PASSWORD_REFRESH = refreshTokenInput.value; - serverObj.PASSWORD_COOKIE = cookieInput.value; - - if (dbSelect.value === "s3") { - - serverObj.S3_ID = s3IDInput.value; - serverObj.S3_KEY = s3KeyInput.value; - serverObj.S3_BUCKET = s3BucketInput.value; - - } else if (dbSelect.value === "fs") { - - serverObj.FS_DIRECTORY = fsInput.value; - serverObj.ROOT = fsInput.value; - } - - const data = { - clientObj, - serverObj - } - - axios.post("/submit", data).then((result) => { - console.log("Submitted"); - - Swal.fire( - 'Environment Variables Created', - 'The Environment Variables were successfully created.', - 'success' - ) - - }).catch((err) => { - console.log("Axios Err", err); - Swal.fire({ - icon: 'error', - title: 'Error', - text: 'Error Creating Enviroment Variables, please check the logs.', - }) - }) -}) diff --git a/webUISetup/src/styles.css b/webUISetup/src/styles.css deleted file mode 100644 index 563b29e..0000000 --- a/webUISetup/src/styles.css +++ /dev/null @@ -1,233 +0,0 @@ -* { - margin: 0; - padding: 0; -} - -html { - font-size: 62.5%; -} - -#main-div { - /* height: 100vh; - width: 100vw; */ - /* background: blue; */ - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - margin: 10px; -} - -#box-div { - height: 30%; - width: 90%; - /* background: purple; */ - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-around; - border: .5px; - border-style: groove; -} - -@media (min-width:600px) { - #box-div { - width: 70%; - /* background: purple; */ - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-around; - border: .5px; - border-style: groove; - border-radius: 11px; - height: fit-content; - } - } - -#input-password { - border: 1px solid #cacccd; - border-radius: 2px; - height: 43px; - font-size: 1.8rem; - font-weight: 300; - padding: 1.2rem; - margin: 0 0 1.2rem 0; - width: -webkit-fill-available; - margin-top: -17px; -} - -#submit-button { - color: #fff; - background: #3c85ed; - font-size: 1.8rem; - padding: 1.2rem; - border: none; - display: inline-block; - text-decoration: none; - line-height: 1; - border-radius: 2px; -} - -#title { - font-size: 58px; - font-family: sans-serif; - margin-top: 10px; - margin-bottom: 6px; -} - -#docker-text { - color: #373737; - /* margin-right: 2px; */ - /* margin-top: 25px; */ - /* margin-left: 4px; */ - /* text-overflow: ellipsis; */ - /* white-space: nowrap; */ - /* overflow: hidden; */ - /* width: 77%; */ - /* max-width: 50vw; */ - font-weight: 300; - /* text-transform: capitalize; */ - font-size: 17px; - text-align: center; - max-width: 78%; -} - -.docker-select { - background: none; - border: none; - -moz-appearance: none; - -webkit-appearance: none; - color: #5f6368; - font-size: 18px; - outline: none; - font-weight: 500; - padding-left: 3px; - padding-right: 4px; - margin-top: 19px; -} - -#docker-select__wrapper { - display: flex; - flex-direction: row; - justify-content: center; -} - -.mongo-input { - border: 1px solid #f1f3f4; - /* height: 50px; */ - font-size: 15px; - font-weight: 300; - /* padding: 7px; */ - /* margin: 10px 0 10px 0; */ - /* width: 100%; */ - /* margin: 3px; */ - height: 32px; - padding-left: 8px; - border-radius: 3px; - background: #f1f3f4; - width: 286px; -} - -.input-invalid { - border: 1px solid red; - outline: 1px solid red; -} - -.invalid-input-text { - text-align: center; - font-size: 17px; - margin-top: 5px; - color: red; -} - -.invalid-input-text-hidden { - display: none; -} - -.encryption-key-input { - border: 1px solid #f1f3f4; - /* height: 50px; */ - font-size: 15px; - font-weight: 300; - /* padding: 7px; */ - /* margin: 10px 0 10px 0; */ - /* width: 100%; */ - /* margin: 3px; */ - height: 32px; - padding-left: 8px; - border-radius: 3px; - background: #f1f3f4; - width: 286px; - opacity: 0.7; -} - -#mongo-form { - margin-top: 13px; -} - -#db-form { - margin-top: 13px; - margin-bottom: 13px; -} - -.section-wrapper { - margin-top: 29px; - width: 100%; - border-bottom: 1px solid #dadce0; - /* margin-bottom: -3px; */ - padding-bottom: 24px; -} - -#docker-text__wrapper { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; -} - -.docker-hidden { - display: none; -} - -.button-wrapper { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - margin: 30px; -} - -.button-wrapper-mongo { - - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - margin: 30px; - margin-bottom: 0px; -} - -.button { - color: #fff; - background: #3c85ed; - font-size: 1.8rem; - padding: 1.2rem; - border: none; - display: inline-block; - text-decoration: none; - line-height: 1; - border-radius: 2px; -} - -.button-mongo { - color: #fff; - background: #3c85ed; - font-size: 16px; - padding: 9px; - border: none; - display: inline-block; - text-decoration: none; - line-height: 1; - border-radius: 2px; -} \ No newline at end of file