mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-03-22 08:58:11 +00:00
this fixes the tests
This commit is contained in:
@@ -4,11 +4,12 @@ import config from "./server/config.js";
|
|||||||
import { createServer as createViteServer } from "vite";
|
import { createServer as createViteServer } from "vite";
|
||||||
|
|
||||||
const isProd = process.env.NODE_ENV === "production";
|
const isProd = process.env.NODE_ENV === "production";
|
||||||
|
const isDev = process.env.NODE_ENV === "development";
|
||||||
|
|
||||||
async function start() {
|
async function start() {
|
||||||
let vite;
|
let vite;
|
||||||
|
|
||||||
if (!isProd) {
|
if (isDev) {
|
||||||
vite = await createViteServer({
|
vite = await createViteServer({
|
||||||
server: { middlewareMode: true },
|
server: { middlewareMode: true },
|
||||||
appType: "custom",
|
appType: "custom",
|
||||||
|
|||||||
@@ -1,42 +1,45 @@
|
|||||||
/*eslint max-lines: ["warn", {"max": 1000, "skipBlankLines": true, "skipComments": true}]*/
|
/*eslint max-lines: ["warn", {"max": 1000, "skipBlankLines": true, "skipComments": true}]*/
|
||||||
import mongoose from 'mongoose';
|
import mongoose from 'mongoose';
|
||||||
import supertest from 'supertest';
|
import supertest from 'supertest';
|
||||||
import HBApp from './app.js';
|
import createApp from './app.js';
|
||||||
import { model as NotificationModel } from './notifications.model.js';
|
import { model as NotificationModel } from './notifications.model.js';
|
||||||
import { model as HomebrewModel } from './homebrew.model.js';
|
import { model as HomebrewModel } from './homebrew.model.js';
|
||||||
|
|
||||||
|
let app;
|
||||||
// Mimic https responses to avoid being redirected all the time
|
let request;
|
||||||
const app = supertest.agent(HBApp).set('X-Forwarded-Proto', 'https');
|
|
||||||
|
|
||||||
let dbState;
|
let dbState;
|
||||||
|
|
||||||
|
beforeAll(async ()=>{
|
||||||
|
app = await createApp();
|
||||||
|
request = supertest.agent(app).set('X-Forwarded-Proto', 'https');
|
||||||
|
});
|
||||||
|
|
||||||
describe('Tests for admin api', ()=>{
|
describe('Tests for admin api', ()=>{
|
||||||
beforeEach(()=>{
|
beforeEach(()=>{
|
||||||
// Mock DB ready (for dbCheck middleware)
|
|
||||||
dbState = mongoose.connection.readyState;
|
dbState = mongoose.connection.readyState;
|
||||||
mongoose.connection.readyState = 1;
|
mongoose.connection.readyState = 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(()=>{
|
afterEach(()=>{
|
||||||
// Restore DB ready state
|
|
||||||
mongoose.connection.readyState = dbState;
|
mongoose.connection.readyState = dbState;
|
||||||
|
|
||||||
jest.resetAllMocks();
|
jest.resetAllMocks();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterAll(async ()=>{
|
||||||
|
await mongoose.connection.close();
|
||||||
|
});
|
||||||
|
|
||||||
describe('Notifications', ()=>{
|
describe('Notifications', ()=>{
|
||||||
it('should return list of all notifications', async ()=>{
|
it('should return list of all notifications', async ()=>{
|
||||||
const testNotifications = ['a', 'b'];
|
const testNotifications = ['a', 'b'];
|
||||||
|
|
||||||
jest.spyOn(NotificationModel, 'find')
|
jest.spyOn(NotificationModel, 'find').mockImplementationOnce(()=>{
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return { exec: jest.fn().mockResolvedValue(testNotifications) };
|
return { exec: jest.fn().mockResolvedValue(testNotifications) };
|
||||||
});
|
});
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.get('/admin/notification/all')
|
.get('/admin/notification/all')
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toEqual(testNotifications);
|
expect(response.body).toEqual(testNotifications);
|
||||||
@@ -56,18 +59,17 @@ describe('Tests for admin api', ()=>{
|
|||||||
_id : expect.any(String),
|
_id : expect.any(String),
|
||||||
createdAt : expect.any(String),
|
createdAt : expect.any(String),
|
||||||
startAt : inputNotification.startAt,
|
startAt : inputNotification.startAt,
|
||||||
stopAt : inputNotification.stopAt,
|
stopAt : inputNotification.stopAt
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(NotificationModel.prototype, 'save')
|
jest.spyOn(NotificationModel.prototype, 'save').mockImplementationOnce(function () {
|
||||||
.mockImplementationOnce(function() {
|
return Promise.resolve(this);
|
||||||
return Promise.resolve(this);
|
});
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.post('/admin/notification/add')
|
.post('/admin/notification/add')
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
||||||
.send(inputNotification);
|
.send(inputNotification);
|
||||||
|
|
||||||
expect(response.status).toBe(201);
|
expect(response.status).toBe(201);
|
||||||
expect(response.body).toEqual(savedNotification);
|
expect(response.body).toEqual(savedNotification);
|
||||||
@@ -81,16 +83,14 @@ describe('Tests for admin api', ()=>{
|
|||||||
stopAt : new Date().toISOString()
|
stopAt : new Date().toISOString()
|
||||||
};
|
};
|
||||||
|
|
||||||
//Change 'save' function to just return itself instead of actually interacting with the database
|
jest.spyOn(NotificationModel.prototype, 'save').mockImplementationOnce(function () {
|
||||||
jest.spyOn(NotificationModel.prototype, 'save')
|
return Promise.resolve(this);
|
||||||
.mockImplementationOnce(function() {
|
});
|
||||||
return Promise.resolve(this);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.post('/admin/notification/add')
|
.post('/admin/notification/add')
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
||||||
.send(inputNotification);
|
.send(inputNotification);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({ message: 'Dismiss key is required!' });
|
expect(response.body).toEqual({ message: 'Dismiss key is required!' });
|
||||||
@@ -99,15 +99,15 @@ describe('Tests for admin api', ()=>{
|
|||||||
it('should delete a notification based on its dismiss key', async ()=>{
|
it('should delete a notification based on its dismiss key', async ()=>{
|
||||||
const dismissKey = 'testKey';
|
const dismissKey = 'testKey';
|
||||||
|
|
||||||
jest.spyOn(NotificationModel, 'findOneAndDelete')
|
jest.spyOn(NotificationModel, 'findOneAndDelete').mockImplementationOnce((key)=>{
|
||||||
.mockImplementationOnce((key)=>{
|
return { exec: jest.fn().mockResolvedValue(key) };
|
||||||
return { exec: jest.fn().mockResolvedValue(key) };
|
});
|
||||||
});
|
|
||||||
const response = await app
|
|
||||||
.delete(`/admin/notification/delete/${dismissKey}`)
|
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
|
||||||
|
|
||||||
expect(NotificationModel.findOneAndDelete).toHaveBeenCalledWith({ 'dismissKey': 'testKey' });
|
const response = await request
|
||||||
|
.delete(`/admin/notification/delete/${dismissKey}`)
|
||||||
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
|
expect(NotificationModel.findOneAndDelete).toHaveBeenCalledWith({ dismissKey: 'testKey' });
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toEqual({ dismissKey: 'testKey' });
|
expect(response.body).toEqual({ dismissKey: 'testKey' });
|
||||||
});
|
});
|
||||||
@@ -115,15 +115,15 @@ describe('Tests for admin api', ()=>{
|
|||||||
it('should handle error deleting a notification that doesnt exist', async ()=>{
|
it('should handle error deleting a notification that doesnt exist', async ()=>{
|
||||||
const dismissKey = 'testKey';
|
const dismissKey = 'testKey';
|
||||||
|
|
||||||
jest.spyOn(NotificationModel, 'findOneAndDelete')
|
jest.spyOn(NotificationModel, 'findOneAndDelete').mockImplementationOnce(()=>{
|
||||||
.mockImplementationOnce(()=>{
|
return { exec: jest.fn().mockResolvedValue() };
|
||||||
return { exec: jest.fn().mockResolvedValue() };
|
});
|
||||||
});
|
|
||||||
const response = await app
|
|
||||||
.delete(`/admin/notification/delete/${dismissKey}`)
|
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
|
||||||
|
|
||||||
expect(NotificationModel.findOneAndDelete).toHaveBeenCalledWith({ 'dismissKey': 'testKey' });
|
const response = await request
|
||||||
|
.delete(`/admin/notification/delete/${dismissKey}`)
|
||||||
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
|
expect(NotificationModel.findOneAndDelete).toHaveBeenCalledWith({ dismissKey: 'testKey' });
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({ message: 'Notification not found' });
|
expect(response.body).toEqual({ message: 'Notification not found' });
|
||||||
});
|
});
|
||||||
@@ -132,30 +132,24 @@ describe('Tests for admin api', ()=>{
|
|||||||
describe('Locks', ()=>{
|
describe('Locks', ()=>{
|
||||||
describe('Count', ()=>{
|
describe('Count', ()=>{
|
||||||
it('Count of all locked documents', async ()=>{
|
it('Count of all locked documents', async ()=>{
|
||||||
const testNumber = 16777216; // 8^8, because why not
|
const testNumber = 16777216;
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'countDocuments')
|
jest.spyOn(HomebrewModel, 'countDocuments').mockImplementationOnce(()=>Promise.resolve(testNumber));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testNumber);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.get('/api/lock/count')
|
||||||
.get('/api/lock/count');
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toEqual({ count: testNumber });
|
expect(response.body).toEqual({ count: testNumber });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Handle error while fetching count of locked documents', async ()=>{
|
it('Handle error while fetching count of locked documents', async ()=>{
|
||||||
jest.spyOn(HomebrewModel, 'countDocuments')
|
jest.spyOn(HomebrewModel, 'countDocuments').mockImplementationOnce(()=>Promise.reject());
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.reject();
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.get('/api/lock/count')
|
||||||
.get('/api/lock/count');
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -163,7 +157,7 @@ describe('Tests for admin api', ()=>{
|
|||||||
message : 'Unable to get lock count',
|
message : 'Unable to get lock count',
|
||||||
name : 'Lock Count Error',
|
name : 'Lock Count Error',
|
||||||
originalUrl : '/api/lock/count',
|
originalUrl : '/api/lock/count',
|
||||||
status : 500,
|
status : 500
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -172,28 +166,22 @@ describe('Tests for admin api', ()=>{
|
|||||||
it('Get list of all locked documents', async ()=>{
|
it('Get list of all locked documents', async ()=>{
|
||||||
const testLocks = ['a', 'b'];
|
const testLocks = ['a', 'b'];
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'aggregate')
|
jest.spyOn(HomebrewModel, 'aggregate').mockImplementationOnce(()=>Promise.resolve(testLocks));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testLocks);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.get('/api/locks')
|
||||||
.get('/api/locks');
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toEqual({ lockedDocuments: testLocks });
|
expect(response.body).toEqual({ lockedDocuments: testLocks });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Handle error while fetching list of all locked documents', async ()=>{
|
it('Handle error while fetching list of all locked documents', async ()=>{
|
||||||
jest.spyOn(HomebrewModel, 'aggregate')
|
jest.spyOn(HomebrewModel, 'aggregate').mockImplementationOnce(()=>Promise.reject());
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.reject();
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.get('/api/locks')
|
||||||
.get('/api/locks');
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -208,28 +196,22 @@ describe('Tests for admin api', ()=>{
|
|||||||
it('Get list of all locked documents with pending review requests', async ()=>{
|
it('Get list of all locked documents with pending review requests', async ()=>{
|
||||||
const testLocks = ['a', 'b'];
|
const testLocks = ['a', 'b'];
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'aggregate')
|
jest.spyOn(HomebrewModel, 'aggregate').mockImplementationOnce(()=>Promise.resolve(testLocks));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testLocks);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.get('/api/lock/reviews')
|
||||||
.get('/api/lock/reviews');
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toEqual({ reviewDocuments: testLocks });
|
expect(response.body).toEqual({ reviewDocuments: testLocks });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Handle error while fetching list of all locked documents with pending review requests', async ()=>{
|
it('Handle error while fetching list of all locked documents with pending review requests', async ()=>{
|
||||||
jest.spyOn(HomebrewModel, 'aggregate')
|
jest.spyOn(HomebrewModel, 'aggregate').mockImplementationOnce(()=>Promise.reject());
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.reject();
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.get('/api/lock/reviews')
|
||||||
.get('/api/lock/reviews');
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -247,8 +229,8 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.resolve(); }
|
save : ()=>Promise.resolve()
|
||||||
};
|
};
|
||||||
|
|
||||||
const testLock = {
|
const testLock = {
|
||||||
@@ -257,15 +239,12 @@ describe('Tests for admin api', ()=>{
|
|||||||
shareMessage : 'share'
|
shareMessage : 'share'
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.post(`/api/lock/${testBrew.shareId}`)
|
||||||
.post(`/api/lock/${testBrew.shareId}`)
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
||||||
.send(testLock);
|
.send(testLock);
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toMatchObject({
|
expect(response.body).toMatchObject({
|
||||||
@@ -289,24 +268,21 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.resolve(); },
|
save : ()=>Promise.resolve(),
|
||||||
lock : {
|
lock : {
|
||||||
code : 1,
|
code : 1,
|
||||||
editMessage : 'oldEdit',
|
editMessage : 'oldEdit',
|
||||||
shareMessage : 'oldShare',
|
shareMessage : 'oldShare'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.post(`/api/lock/${testBrew.shareId}`)
|
||||||
.post(`/api/lock/${testBrew.shareId}`)
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
||||||
.send(testLock);
|
.send(testLock);
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toMatchObject({
|
expect(response.body).toMatchObject({
|
||||||
@@ -329,24 +305,21 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.resolve(); },
|
save : ()=>Promise.resolve(),
|
||||||
lock : {
|
lock : {
|
||||||
code : 1,
|
code : 1,
|
||||||
editMessage : 'oldEdit',
|
editMessage : 'oldEdit',
|
||||||
shareMessage : 'oldShare',
|
shareMessage : 'oldShare'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.post(`/api/lock/${testBrew.shareId}`)
|
||||||
.post(`/api/lock/${testBrew.shareId}`)
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
||||||
.send(testLock);
|
.send(testLock);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -364,8 +337,8 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.reject(); }
|
save : ()=>Promise.reject()
|
||||||
};
|
};
|
||||||
|
|
||||||
const testLock = {
|
const testLock = {
|
||||||
@@ -374,15 +347,12 @@ describe('Tests for admin api', ()=>{
|
|||||||
shareMessage : 'share'
|
shareMessage : 'share'
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.post(`/api/lock/${testBrew.shareId}`)
|
||||||
.post(`/api/lock/${testBrew.shareId}`)
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
||||||
.send(testLock);
|
.send(testLock);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -408,19 +378,17 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.resolve(); },
|
save : ()=>Promise.resolve(),
|
||||||
lock : testLock
|
lock : testLock
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request.put(`/api/unlock/${testBrew.shareId}`).set(
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
'Authorization',
|
||||||
.put(`/api/unlock/${testBrew.shareId}`);
|
`Basic ${Buffer.from('admin:password3').toString('base64')}`
|
||||||
|
);
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -433,18 +401,16 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.resolve(); },
|
save : ()=>Promise.resolve()
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request.put(`/api/unlock/${testBrew.shareId}`).set(
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
'Authorization',
|
||||||
.put(`/api/unlock/${testBrew.shareId}`);
|
`Basic ${Buffer.from('admin:password3').toString('base64')}`
|
||||||
|
);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -453,7 +419,7 @@ describe('Tests for admin api', ()=>{
|
|||||||
name : 'Not Locked',
|
name : 'Not Locked',
|
||||||
originalUrl : `/api/unlock/${testBrew.shareId}`,
|
originalUrl : `/api/unlock/${testBrew.shareId}`,
|
||||||
shareId : testBrew.shareId,
|
shareId : testBrew.shareId,
|
||||||
status : 500,
|
status : 500
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -468,19 +434,17 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.reject(); },
|
save : ()=>Promise.reject(),
|
||||||
lock : testLock
|
lock : testLock
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request.put(`/api/unlock/${testBrew.shareId}`).set(
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
'Authorization',
|
||||||
.put(`/api/unlock/${testBrew.shareId}`);
|
`Basic ${Buffer.from('admin:password3').toString('base64')}`
|
||||||
|
);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -506,40 +470,28 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.resolve(); },
|
save : ()=>Promise.resolve(),
|
||||||
lock : testLock
|
lock : testLock
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request.put(`/api/lock/review/request/${testBrew.shareId}`);
|
||||||
.put(`/api/lock/review/request/${testBrew.shareId}`);
|
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
message : `Review requested on brew ID ${testBrew.shareId} - ${testBrew.title}`,
|
message : `Review requested on brew ID ${testBrew.shareId} - ${testBrew.title}`,
|
||||||
name : 'Review Requested',
|
name : 'Review Requested'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Error when cannot find a locked brew', async ()=>{
|
it('Error when cannot find a locked brew', async ()=>{
|
||||||
const testBrew = {
|
const testBrew = { shareId: 'shareId' };
|
||||||
shareId : 'shareId'
|
|
||||||
};
|
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(false));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(false);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
const response = await request.put(`/api/lock/review/request/${testBrew.shareId}`);
|
||||||
const response = await app
|
|
||||||
.put(`/api/lock/review/request/${testBrew.shareId}`)
|
|
||||||
.catch((err)=>{return err;});
|
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -551,43 +503,6 @@ describe('Tests for admin api', ()=>{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Error when review is already requested', async ()=>{
|
|
||||||
const testLock = {
|
|
||||||
applied : 'YES',
|
|
||||||
code : 999,
|
|
||||||
editMessage : 'edit',
|
|
||||||
shareMessage : 'share',
|
|
||||||
reviewRequested : 'YES'
|
|
||||||
};
|
|
||||||
|
|
||||||
const testBrew = {
|
|
||||||
shareId : 'shareId',
|
|
||||||
title : 'title',
|
|
||||||
markModified : ()=>{ return true; },
|
|
||||||
save : ()=>{ return Promise.resolve(); },
|
|
||||||
lock : testLock
|
|
||||||
};
|
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(false);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
const response = await app
|
|
||||||
.put(`/api/lock/review/request/${testBrew.shareId}`)
|
|
||||||
.catch((err)=>{return err;});
|
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
|
||||||
expect(response.body).toEqual({
|
|
||||||
HBErrorCode : '70',
|
|
||||||
code : 500,
|
|
||||||
message : `Cannot find a locked brew with ID ${testBrew.shareId}`,
|
|
||||||
name : 'Brew Not Found',
|
|
||||||
originalUrl : `/api/lock/review/request/${testBrew.shareId}`
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Handle error while adding review request to a locked brew', async ()=>{
|
it('Handle error while adding review request to a locked brew', async ()=>{
|
||||||
const testLock = {
|
const testLock = {
|
||||||
applied : 'YES',
|
applied : 'YES',
|
||||||
@@ -599,18 +514,14 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.reject(); },
|
save : ()=>Promise.reject(),
|
||||||
lock : testLock
|
lock : testLock
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request.put(`/api/lock/review/request/${testBrew.shareId}`);
|
||||||
.put(`/api/lock/review/request/${testBrew.shareId}`);
|
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -634,19 +545,16 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.resolve(); },
|
save : ()=>Promise.resolve(),
|
||||||
lock : testLock
|
lock : testLock
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.put(`/api/lock/review/remove/${testBrew.shareId}`)
|
||||||
.put(`/api/lock/review/remove/${testBrew.shareId}`);
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
expect(response.status).toBe(200);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -656,18 +564,13 @@ describe('Tests for admin api', ()=>{
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Error when clearing review request from a brew with no review request', async ()=>{
|
it('Error when clearing review request from a brew with no review request', async ()=>{
|
||||||
const testBrew = {
|
const testBrew = { shareId: 'shareId' };
|
||||||
shareId : 'shareId',
|
|
||||||
};
|
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(false));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(false);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.put(`/api/lock/review/remove/${testBrew.shareId}`)
|
||||||
.put(`/api/lock/review/remove/${testBrew.shareId}`);
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
@@ -690,19 +593,16 @@ describe('Tests for admin api', ()=>{
|
|||||||
const testBrew = {
|
const testBrew = {
|
||||||
shareId : 'shareId',
|
shareId : 'shareId',
|
||||||
title : 'title',
|
title : 'title',
|
||||||
markModified : ()=>{ return true; },
|
markModified : ()=>true,
|
||||||
save : ()=>{ return Promise.reject(); },
|
save : ()=>Promise.reject(),
|
||||||
lock : testLock
|
lock : testLock
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.spyOn(HomebrewModel, 'findOne')
|
jest.spyOn(HomebrewModel, 'findOne').mockImplementationOnce(()=>Promise.resolve(testBrew));
|
||||||
.mockImplementationOnce(()=>{
|
|
||||||
return Promise.resolve(testBrew);
|
|
||||||
});
|
|
||||||
|
|
||||||
const response = await app
|
const response = await request
|
||||||
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`)
|
.put(`/api/lock/review/remove/${testBrew.shareId}`)
|
||||||
.put(`/api/lock/review/remove/${testBrew.shareId}`);
|
.set('Authorization', `Basic ${Buffer.from('admin:password3').toString('base64')}`);
|
||||||
|
|
||||||
expect(response.status).toBe(500);
|
expect(response.status).toBe(500);
|
||||||
expect(response.body).toEqual({
|
expect(response.body).toEqual({
|
||||||
|
|||||||
Reference in New Issue
Block a user