| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-13 12:11:20 +02:00
										 |  |  | const { omit } = require('lodash/fp'); | 
					
						
							| 
									
										
										
										
											2023-04-05 10:32:20 +02:00
										 |  |  | const { createStrapiInstance } = require('api-tests/strapi'); | 
					
						
							|  |  |  | const { createAuthRequest } = require('api-tests/request'); | 
					
						
							|  |  |  | const { createUtils } = require('api-tests/utils'); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-13 12:11:20 +02:00
										 |  |  | const omitTimestamps = omit(['updatedAt', 'createdAt']); | 
					
						
							|  |  |  | const omitRegistrationToken = omit(['registrationToken']); | 
					
						
							| 
									
										
										
										
											2020-06-04 12:34:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * == Test Suite Overview == | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * N°   Description | 
					
						
							|  |  |  |  * ------------------------------------------- | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |  * 1.  Creates a user (wrong body) | 
					
						
							|  |  |  |  * 2.  Creates a user (successfully) | 
					
						
							|  |  |  |  * 3.  Creates users with superAdmin role (success) | 
					
						
							|  |  |  |  * 4.  Updates a user (wrong body) | 
					
						
							|  |  |  |  * 5.  Updates a user (successfully) | 
					
						
							|  |  |  |  * 6.  Finds a user (successfully) | 
					
						
							|  |  |  |  * 7.  Finds a list of users (contains user) | 
					
						
							|  |  |  |  * 8.  Deletes a user (successfully) | 
					
						
							|  |  |  |  * 9.  Deletes a user (not found) | 
					
						
							|  |  |  |  * 10. Deletes 2 super admin users (successfully) | 
					
						
							|  |  |  |  * 11. Deletes a super admin user (successfully) | 
					
						
							|  |  |  |  * 12. Deletes last super admin user (bad request) | 
					
						
							|  |  |  |  * 13. Deletes last super admin user in batch (bad request) | 
					
						
							|  |  |  |  * 14. Updates a user (not found) | 
					
						
							|  |  |  |  * 15. Finds a user (not found) | 
					
						
							|  |  |  |  * 16. Finds a list of users (missing user) | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-07 16:30:12 +01:00
										 |  |  | describe('Admin User CRUD (api)', () => { | 
					
						
							| 
									
										
										
										
											2020-11-10 14:15:31 +01:00
										 |  |  |   let rq; | 
					
						
							|  |  |  |   let utils; | 
					
						
							|  |  |  |   let strapi; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |   // Local test data used across the test suite
 | 
					
						
							| 
									
										
										
										
											2022-08-08 15:50:34 +02:00
										 |  |  |   const testData = { | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |     firstSuperAdminUser: undefined, | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |     otherSuperAdminUsers: [], | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     user: undefined, | 
					
						
							|  |  |  |     role: undefined, | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |     superAdminRole: undefined, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |   const createUserRole = async () => | 
					
						
							|  |  |  |     utils.createRole({ | 
					
						
							|  |  |  |       name: 'user_test_role', | 
					
						
							| 
									
										
										
										
											2022-11-07 16:30:12 +01:00
										 |  |  |       description: 'Only used for user crud test (api)', | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2020-11-10 14:15:31 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |   // Initialization Actions
 | 
					
						
							|  |  |  |   beforeAll(async () => { | 
					
						
							| 
									
										
										
										
											2020-11-30 20:20:36 +01:00
										 |  |  |     strapi = await createStrapiInstance(); | 
					
						
							| 
									
										
										
										
											2020-11-10 14:15:31 +01:00
										 |  |  |     rq = await createAuthRequest({ strapi }); | 
					
						
							|  |  |  |     utils = createUtils(strapi); | 
					
						
							| 
									
										
										
										
											2020-07-29 13:24:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-06 21:46:45 +01:00
										 |  |  |     testData.role = await createUserRole(); | 
					
						
							| 
									
										
										
										
											2020-07-29 13:24:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |     testData.firstSuperAdminUser = rq.getLoggedUser(); | 
					
						
							| 
									
										
										
										
											2020-11-10 14:15:31 +01:00
										 |  |  |     testData.superAdminRole = await utils.getSuperAdminRole(); | 
					
						
							| 
									
										
										
										
											2021-03-26 20:15:38 +01:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // Cleanup actions
 | 
					
						
							|  |  |  |   afterAll(async () => { | 
					
						
							| 
									
										
										
										
											2023-03-06 21:46:45 +01:00
										 |  |  |     await utils.deleteRolesById([testData.role.id]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-10 14:15:31 +01:00
										 |  |  |     await strapi.destroy(); | 
					
						
							| 
									
										
										
										
											2021-03-26 20:15:38 +01:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   test('1. Creates a user (wrong body)', async () => { | 
					
						
							|  |  |  |     const body = { | 
					
						
							|  |  |  |       firstname: 'user_tests-firstname', | 
					
						
							|  |  |  |       lastname: 'user_tests-lastname', | 
					
						
							|  |  |  |       roles: [testData.role.id], | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: '/admin/users', | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							|  |  |  |       body, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(400); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							| 
									
										
										
										
											2021-10-20 17:30:05 +02:00
										 |  |  |       data: null, | 
					
						
							|  |  |  |       error: { | 
					
						
							|  |  |  |         details: { | 
					
						
							|  |  |  |           errors: [ | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |               message: 'email is a required field', | 
					
						
							|  |  |  |               name: 'ValidationError', | 
					
						
							|  |  |  |               path: ['email'], | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         message: 'email is a required field', | 
					
						
							|  |  |  |         name: 'ValidationError', | 
					
						
							|  |  |  |         status: 400, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test('2. Creates a user (successfully)', async () => { | 
					
						
							|  |  |  |     const body = { | 
					
						
							| 
									
										
										
										
											2022-09-21 14:07:29 +01:00
										 |  |  |       email: 'uSer-tEsTs@strapi-e2e.com', // Tested with a camelCase email address
 | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       firstname: 'user_tests-firstname', | 
					
						
							|  |  |  |       lastname: 'user_tests-lastname', | 
					
						
							|  |  |  |       roles: [testData.role.id], | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: '/admin/users', | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							|  |  |  |       body, | 
					
						
							| 
									
										
										
										
											2021-07-28 15:32:21 +02:00
										 |  |  |       qs: { | 
					
						
							|  |  |  |         populate: ['roles'], | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(201); | 
					
						
							|  |  |  |     expect(res.body.data).not.toBeNull(); | 
					
						
							| 
									
										
										
										
											2022-05-13 12:11:20 +02:00
										 |  |  |     expect(res.body.data).toHaveProperty('registrationToken'); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Using the created user as an example for the rest of the tests
 | 
					
						
							| 
									
										
										
										
											2022-05-13 12:11:20 +02:00
										 |  |  |     testData.user = omitRegistrationToken(res.body.data); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |   test('3. Creates users with superAdmin role (success)', async () => { | 
					
						
							| 
									
										
										
										
											2022-08-08 23:33:39 +02:00
										 |  |  |     const getBody = (index) => { | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |       return { | 
					
						
							|  |  |  |         email: `user-tests${index}@strapi-e2e.com`, | 
					
						
							|  |  |  |         firstname: 'user_tests-firstname', | 
					
						
							|  |  |  |         lastname: 'user_tests-lastname', | 
					
						
							|  |  |  |         roles: [testData.superAdminRole.id], | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-05 16:15:21 +02:00
										 |  |  |     for (let i = 0; i < 3; i += 1) { | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |       const res = await rq({ | 
					
						
							|  |  |  |         url: '/admin/users', | 
					
						
							|  |  |  |         method: 'POST', | 
					
						
							|  |  |  |         body: getBody(i), | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |       expect(res.statusCode).toBe(201); | 
					
						
							|  |  |  |       expect(res.body.data).not.toBeNull(); | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-13 12:11:20 +02:00
										 |  |  |       testData.otherSuperAdminUsers.push(omitRegistrationToken(res.body.data)); | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test('4. Updates a user (wrong body)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     const body = { | 
					
						
							|  |  |  |       email: 42, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: `/admin/users/${testData.user.id}`, | 
					
						
							|  |  |  |       method: 'PUT', | 
					
						
							|  |  |  |       body, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(400); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							| 
									
										
										
										
											2021-10-20 17:30:05 +02:00
										 |  |  |       data: null, | 
					
						
							|  |  |  |       error: { | 
					
						
							|  |  |  |         details: { | 
					
						
							|  |  |  |           errors: [ | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |               message: 'email must be a `string` type, but the final value was: `42`.', | 
					
						
							|  |  |  |               name: 'ValidationError', | 
					
						
							|  |  |  |               path: ['email'], | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         message: 'email must be a `string` type, but the final value was: `42`.', | 
					
						
							|  |  |  |         name: 'ValidationError', | 
					
						
							|  |  |  |         status: 400, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |   test('5. Updates a user (successfully)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     const body = { | 
					
						
							|  |  |  |       firstname: 'foobar', | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: `/admin/users/${testData.user.id}`, | 
					
						
							|  |  |  |       method: 'PUT', | 
					
						
							|  |  |  |       body, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body).not.toBeNull(); | 
					
						
							| 
									
										
										
										
											2020-06-04 12:34:22 +02:00
										 |  |  |     expect(omitTimestamps(res.body.data)).toMatchObject({ | 
					
						
							|  |  |  |       ...omitTimestamps(testData.user), | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       ...body, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Update the local copy of the user
 | 
					
						
							|  |  |  |     testData.user = res.body.data; | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |   test('6. Finds a user (successfully)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: `/admin/users/${testData.user.id}`, | 
					
						
							|  |  |  |       method: 'GET', | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body.data).toMatchObject(testData.user); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |   describe('7. Finds a list of users (contains user)', () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 12:34:22 +02:00
										 |  |  |     const expectedBodyFormat = () => ({ | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       data: { | 
					
						
							|  |  |  |         pagination: { | 
					
						
							|  |  |  |           page: 1, | 
					
						
							|  |  |  |           pageSize: expect.any(Number), | 
					
						
							|  |  |  |           pageCount: expect.any(Number), | 
					
						
							|  |  |  |           total: expect.any(Number), | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         results: expect.any(Array), | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |     test('7.1. Using findPage', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       const res = await rq({ | 
					
						
							|  |  |  |         url: `/admin/users?email=${testData.user.email}`, | 
					
						
							|  |  |  |         method: 'GET', | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(res.statusCode).toBe(200); | 
					
						
							| 
									
										
										
										
											2020-06-04 12:34:22 +02:00
										 |  |  |       expect(res.body).toMatchObject(expectedBodyFormat()); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       expect(res.body.data.results).toContainEqual(testData.user); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-28 21:03:32 +02:00
										 |  |  |     test('7.2. Using search', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       const res = await rq({ | 
					
						
							|  |  |  |         url: `/admin/users?_q=${testData.user.email}`, | 
					
						
							|  |  |  |         method: 'GET', | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(res.statusCode).toBe(200); | 
					
						
							| 
									
										
										
										
											2020-06-04 12:34:22 +02:00
										 |  |  |       expect(res.body).toMatchObject(expectedBodyFormat()); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       expect(res.body.data.results).toContainEqual(testData.user); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |   test('8. Deletes a user (successfully)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-18 11:40:50 +02:00
										 |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: `/admin/users/${testData.user.id}`, | 
					
						
							|  |  |  |       method: 'DELETE', | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body.data).toMatchObject(testData.user); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |   test('9. Deletes a user (not found)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-18 11:40:50 +02:00
										 |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: `/admin/users/${testData.user.id}`, | 
					
						
							|  |  |  |       method: 'DELETE', | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(404); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |   test('10. Deletes 2 super admin users (successfully)', async () => { | 
					
						
							|  |  |  |     const users = testData.otherSuperAdminUsers.splice(0, 2); | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |     const res = await rq({ | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |       url: `/admin/users/batch-delete`, | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							|  |  |  |       body: { | 
					
						
							| 
									
										
										
										
											2022-08-08 23:33:39 +02:00
										 |  |  |         ids: users.map((u) => u.id), | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body.data).toMatchObject(users); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test('11. Deletes a super admin user (successfully)', async () => { | 
					
						
							|  |  |  |     const user = testData.otherSuperAdminUsers.pop(); | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: `/admin/users/${user.id}`, | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |       method: 'DELETE', | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |     expect(res.body.data).toMatchObject(user); | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |   test('12. Deletes last super admin user (bad request)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: `/admin/users/${testData.firstSuperAdminUser.id}`, | 
					
						
							|  |  |  |       method: 'DELETE', | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(400); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							| 
									
										
										
										
											2021-10-20 17:30:05 +02:00
										 |  |  |       data: null, | 
					
						
							|  |  |  |       error: { | 
					
						
							|  |  |  |         details: {}, | 
					
						
							|  |  |  |         message: 'You must have at least one user with super admin role.', | 
					
						
							|  |  |  |         name: 'ValidationError', | 
					
						
							|  |  |  |         status: 400, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2020-06-24 16:48:53 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |   test('13. Deletes last super admin user in batch (bad request)', async () => { | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: `/admin/users/batch-delete`, | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							|  |  |  |       body: { | 
					
						
							|  |  |  |         ids: [testData.firstSuperAdminUser.id], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(400); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							| 
									
										
										
										
											2021-10-20 17:30:05 +02:00
										 |  |  |       data: null, | 
					
						
							|  |  |  |       error: { | 
					
						
							|  |  |  |         details: {}, | 
					
						
							|  |  |  |         message: 'You must have at least one user with super admin role.', | 
					
						
							|  |  |  |         name: 'ValidationError', | 
					
						
							|  |  |  |         status: 400, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test('14. Updates a user (not found)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     const body = { | 
					
						
							|  |  |  |       lastname: 'doe', | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							| 
									
										
										
										
											2020-06-18 11:40:50 +02:00
										 |  |  |       url: `/admin/users/${testData.user.id}`, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       method: 'PUT', | 
					
						
							|  |  |  |       body, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(404); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							| 
									
										
										
										
											2021-10-20 17:30:05 +02:00
										 |  |  |       error: { | 
					
						
							|  |  |  |         details: {}, | 
					
						
							|  |  |  |         message: 'User does not exist', | 
					
						
							|  |  |  |         name: 'NotFoundError', | 
					
						
							|  |  |  |         status: 404, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |   test('15. Finds a user (not found)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     const res = await rq({ | 
					
						
							| 
									
										
										
										
											2020-06-18 11:40:50 +02:00
										 |  |  |       url: `/admin/users/${testData.user.id}`, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       method: 'GET', | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(404); | 
					
						
							| 
									
										
										
										
											2020-06-04 12:34:22 +02:00
										 |  |  |     expect(res.body).toMatchObject({ | 
					
						
							| 
									
										
										
										
											2021-10-20 17:30:05 +02:00
										 |  |  |       error: { | 
					
						
							|  |  |  |         details: {}, | 
					
						
							|  |  |  |         message: 'User does not exist', | 
					
						
							|  |  |  |         name: 'NotFoundError', | 
					
						
							|  |  |  |         status: 404, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2020-06-04 12:34:22 +02:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-15 15:46:59 +02:00
										 |  |  |   test('16. Finds a list of users (missing user)', async () => { | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     const res = await rq({ | 
					
						
							| 
									
										
										
										
											2021-06-29 16:27:35 +02:00
										 |  |  |       url: `/admin/users`, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |       method: 'GET', | 
					
						
							| 
									
										
										
										
											2021-06-29 16:27:35 +02:00
										 |  |  |       qs: { | 
					
						
							|  |  |  |         filters: { | 
					
						
							| 
									
										
										
										
											2023-03-15 20:55:25 +01:00
										 |  |  |           username: testData.user.username, | 
					
						
							| 
									
										
										
										
											2021-06-29 16:27:35 +02:00
										 |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body.data).toMatchObject({ | 
					
						
							|  |  |  |       pagination: { | 
					
						
							|  |  |  |         page: 1, | 
					
						
							|  |  |  |         pageSize: expect.any(Number), | 
					
						
							|  |  |  |         pageCount: expect.any(Number), | 
					
						
							|  |  |  |         total: expect.any(Number), | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       results: expect.any(Array), | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2020-06-04 12:34:22 +02:00
										 |  |  |     expect(res.body.data.results).toHaveLength(0); | 
					
						
							| 
									
										
										
										
											2020-06-04 10:25:02 +02:00
										 |  |  |   }); | 
					
						
							|  |  |  | }); |