| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- const { getInstance } = require('../setup-crowi');
- describe('ShareLink', () => {
- // eslint-disable-next-line no-unused-vars
- let crowi;
- let ShareLink;
- let Page;
- beforeAll(async() => {
- crowi = await getInstance();
- ShareLink = crowi.model('ShareLink');
- Page = require('~/server/routes/page')(crowi);
- });
- describe('accessShareLink', () => {
- const req = {
- path: '/share/:id',
- params: {
- linkId: 'someLinkId',
- },
- query: {
- revision: 'someRevision',
- },
- };
- const res = {
- render: jest.fn((page, renderVars = null) => { return { page, renderVars } }),
- };
- const findOneResult = {
- populate: null,
- };
- const relatedPage = {
- path: '/somePath',
- populateDataToShowRevision: () => {
- return {
- revision: {
- author: {
- toObject: jest.fn(() => { return {} }),
- },
- },
- creator: {
- toObject: jest.fn(() => { return {} }),
- },
- };
- },
- initLatestRevisionField: (revisionId) => {
- return revisionId;
- },
- };
- test('share link is not found', async() => {
- findOneResult.populate = jest.fn(() => { return null });
- jest.spyOn(ShareLink, 'findOne').mockImplementation(() => {
- return findOneResult;
- });
- const response = await Page.showSharedPage(req, res);
- expect(findOneResult.populate).toHaveBeenCalled();
- expect(res.render).toHaveBeenCalled();
- expect(response.page).toEqual('layout-growi/not_found_shared_page');
- expect(response.renderVars).toEqual(null);
- });
- test('share link is found, but it does not have Page', async() => {
- findOneResult.populate = jest.fn(() => { return { _id: 'somePageId' } });
- jest.spyOn(ShareLink, 'findOne').mockImplementation(() => {
- return findOneResult;
- });
- const response = await Page.showSharedPage(req, res);
- expect(findOneResult.populate).toHaveBeenCalled();
- expect(res.render).toHaveBeenCalled();
- expect(response.page).toEqual('layout-growi/not_found_shared_page');
- expect(response.renderVars).toEqual(null);
- });
- test('share link is found, but it is expired', async() => {
- findOneResult.populate = jest.fn(() => { return { _id: 'somePageId', relatedPage, isExpired: () => { return true } } });
- jest.spyOn(ShareLink, 'findOne').mockImplementation(() => {
- return findOneResult;
- });
- const response = await Page.showSharedPage(req, res);
- expect(findOneResult.populate).toHaveBeenCalled();
- expect(res.render).toHaveBeenCalled();
- expect(response.page).toEqual('layout-growi/expired_shared_page');
- expect(response.renderVars).not.toEqual(null);
- });
- test('share link is found, and it has the page you can see', async() => {
- findOneResult.populate = jest.fn(() => { return { _id: 'somePageId', relatedPage, isExpired: () => { return false } } });
- jest.spyOn(ShareLink, 'findOne').mockImplementation(() => {
- return findOneResult;
- });
- const response = await Page.showSharedPage(req, res);
- expect(findOneResult.populate).toHaveBeenCalled();
- expect(res.render).toHaveBeenCalled();
- expect(response.page).toEqual('layout-growi/shared_page');
- expect(response.renderVars).not.toEqual(null);
- });
- });
- });
|