| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- const mongoose = require('mongoose');
- const { getInstance } = require('../setup-crowi');
- describe('User', () => {
- // eslint-disable-next-line no-unused-vars
- let crowi;
- let User;
- let adminusertestToBeRemovedId;
- beforeAll(async() => {
- crowi = await getInstance();
- User = mongoose.model('User');
- await User.insertMany([
- {
- name: 'Example for User Test',
- username: 'usertest',
- email: 'usertest@example.com',
- password: 'usertestpass',
- lang: 'en_US',
- },
- {
- name: 'Admin Example Active',
- username: 'adminusertest1',
- email: 'adminusertest1@example.com',
- password: 'adminusertestpass',
- admin: true,
- status: User.STATUS_ACTIVE,
- lang: 'en_US',
- },
- {
- name: 'Admin Example Suspended',
- username: 'adminusertest2',
- email: 'adminusertes2@example.com',
- password: 'adminusertestpass',
- admin: true,
- status: User.STATUS_SUSPENDED,
- lang: 'en_US',
- },
- {
- name: 'Admin Example to delete',
- username: 'adminusertestToBeRemoved',
- email: 'adminusertestToBeRemoved@example.com',
- password: 'adminusertestpass',
- admin: true,
- status: User.STATUS_ACTIVE,
- lang: 'en_US',
- },
- ]);
- // delete adminusertestToBeRemoved
- const adminusertestToBeRemoved = await User.findOne({ username: 'adminusertestToBeRemoved' });
- adminusertestToBeRemovedId = adminusertestToBeRemoved._id;
- await adminusertestToBeRemoved.statusDelete();
- });
- describe('Create and Find.', () => {
- describe('The user', () => {
- test('should created with createUserByEmailAndPassword', (done) => {
- User.createUserByEmailAndPassword('Example2 for User Test', 'usertest2', 'usertest2@example.com', 'usertest2pass', 'en_US', (err, userData) => {
- expect(err).toBeNull();
- expect(userData).toBeInstanceOf(User);
- expect(userData.name).toBe('Example2 for User Test');
- done();
- });
- });
- test('should be found by findUserByUsername', async() => {
- const user = await User.findUserByUsername('usertest');
- expect(user).toBeInstanceOf(User);
- expect(user.name).toBe('Example for User Test');
- });
- });
- });
- describe('Delete.', () => {
- describe('Deleted users', () => {
- test('should have correct attributes', async() => {
- const adminusertestToBeRemoved = await User.findOne({ _id: adminusertestToBeRemovedId });
- expect(adminusertestToBeRemoved).toBeInstanceOf(User);
- expect(adminusertestToBeRemoved.name).toBe('');
- expect(adminusertestToBeRemoved.password).toBe('');
- expect(adminusertestToBeRemoved.googleId).toBeNull();
- expect(adminusertestToBeRemoved.isGravatarEnabled).toBeFalsy();
- expect(adminusertestToBeRemoved.image).toBeNull();
- });
- });
- });
- describe('User.findAdmins', () => {
- test('should retrieves only active users', async() => {
- const users = await User.findAdmins();
- const adminusertestActive = users.find(user => user.username === 'adminusertest1');
- const adminusertestSuspended = users.find(user => user.username === 'adminusertest2');
- const adminusertestToBeRemoved = users.find(user => user._id.toString() === adminusertestToBeRemovedId.toString());
- expect(adminusertestActive).toBeInstanceOf(User);
- expect(adminusertestSuspended).toBeUndefined();
- expect(adminusertestToBeRemoved).toBeUndefined();
- });
- test('with \'includesInactive\' option should retrieves suspended users', async() => {
- const users = await User.findAdmins({ status: [User.STATUS_ACTIVE, User.STATUS_SUSPENDED] });
- const adminusertestActive = users.find(user => user.username === 'adminusertest1');
- const adminusertestSuspended = users.find(user => user.username === 'adminusertest2');
- const adminusertestToBeRemoved = users.find(user => user._id.toString() === adminusertestToBeRemovedId.toString());
- expect(adminusertestActive).toBeInstanceOf(User);
- expect(adminusertestSuspended).toBeInstanceOf(User);
- expect(adminusertestToBeRemoved).toBeUndefined();
- });
- });
- describe('User Utilities', () => {
- describe('Get user exists from user page path', () => {
- test('found', async() => {
- const userPagePath = '/user/usertest';
- const isExist = await User.isExistUserByUserPagePath(userPagePath);
- expect(isExist).toBe(true);
- });
- test('not found', async() => {
- const userPagePath = '/user/usertest-hoge';
- const isExist = await User.isExistUserByUserPagePath(userPagePath);
- expect(isExist).toBe(false);
- });
- });
- });
- });
|