added file service tests

This commit is contained in:
kyle hoell
2020-12-06 13:22:16 -05:00
parent 54046eced6
commit 54946cef9a
3 changed files with 261 additions and 54 deletions
+2 -2
View File
@@ -47,7 +47,7 @@ class MongoFileService {
makePublic = async(userID: string, fileID: string) => {
const token = await jwt.sign({_id: userID.toString()}, env.passwordAccess!);
const token = jwt.sign({_id: userID.toString()}, env.passwordAccess!);
const file = await dbUtilsFile.makePublic(fileID, userID, token);
@@ -72,7 +72,7 @@ class MongoFileService {
makeOneTimePublic = async(userID: string, fileID: string) => {
const token = await jwt.sign({_id: userID.toString()}, env.passwordAccess!);
const token = jwt.sign({_id: userID.toString()}, env.passwordAccess!);
const file = await dbUtilsFile.makeOneTimePublic(fileID, userID, token);
+35
View File
@@ -0,0 +1,35 @@
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;
@@ -12,6 +12,7 @@ const ObjectID = require('mongodb').ObjectID
import Folder from "../../../dist/models/folder";
import FileService from "../../../dist/services/FileService";
const fileService = new FileService();
const createUserDbType = require("../../fixtures/createUserDbType");
let user;
let file;
@@ -19,51 +20,92 @@ 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) => {
if (conn.readyState === 0) {
await waitForDatabase();
conn.once("open", async() => {
const initVect = crypto.randomBytes(16);
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);
// user = await createUser();
const {user: gotUser} = await createUser();
user = gotUser;
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);
const filename = "bunny.png";
const filepath = path.join(__dirname, "../../fixtures/media/check.svg")
const metadata = {
owner: user._id,
parent: "/",
parentList: "/",
"IV": initVect
}
done();
}
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();
// }
})
@@ -135,7 +177,7 @@ test("When giving user, and fileID, should make file public and return token", a
const fileID = file._id;
const recievedToken = await fileService.makePublic(user, fileID);
const recievedToken = await fileService.makePublic(user._id, fileID);
expect(recievedToken.length).not.toBe(0);
})
@@ -259,26 +301,26 @@ test("When giving wrong userID for file list, should return list with 0 length",
expect(receivedList.length).toBe(0);
})
test("When giving user, should create download token", async() => {
// test("When giving user, should create download token", async() => {
const recievedToken = await fileService.getDownloadToken(user);
// const recievedToken = await fileService.getDownloadToken(user);
expect(recievedToken.length).not.toBe(0);
})
// expect(recievedToken.length).not.toBe(0);
// })
test("When giving user and cookie, should create video download token", async() => {
// test("When giving user and cookie, should create video download token", async() => {
const recievedToken = await fileService.getDownloadTokenVideo(user, {});
// const recievedToken = await fileService.getDownloadTokenVideo(user, {});
expect(recievedToken.length).not.toBe(0);
})
// expect(recievedToken.length).not.toBe(0);
// })
test("When giving user and tempToken, should remove temp token", async() => {
// test("When giving user and tempToken, should remove temp token", async() => {
const tempToken = await user.generateTempAuthToken();
// const tempToken = await user.generateTempAuthToken();
await fileService.removeTempToken(user, tempToken);
})
// await fileService.removeTempToken(user, tempToken);
// })
test("When giving userID and search query, should return suggested list", async() => {
@@ -359,6 +401,136 @@ test("When giving an non existing folderID for file move, should throw not found
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 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 giving userID, and fileID, should remove file", async() => {
// const userID = user._id;