mirror of
https://github.com/strapi/strapi.git
synced 2025-12-28 15:44:59 +00:00
Add e2e tests, fix validation for mongoose, update services
Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>
This commit is contained in:
parent
3029026014
commit
40089ed4aa
@ -3,10 +3,6 @@
|
||||
const _ = require('lodash');
|
||||
const { validateUserCreationInput } = require('../validation/user');
|
||||
|
||||
const formatError = error => [
|
||||
{ messages: [{ id: error.id, message: error.message, field: error.field }] },
|
||||
];
|
||||
|
||||
module.exports = {
|
||||
async create(ctx) {
|
||||
const { body } = ctx.request;
|
||||
@ -24,20 +20,10 @@ module.exports = {
|
||||
});
|
||||
|
||||
if (userAlreadyExists) {
|
||||
return ctx.badRequest(
|
||||
null,
|
||||
formatError({
|
||||
id: 'Auth.form.error.email.taken',
|
||||
message: 'Email already taken',
|
||||
field: ['email'],
|
||||
})
|
||||
);
|
||||
return ctx.badRequest('Email already taken');
|
||||
}
|
||||
|
||||
const createdUser = await strapi.admin.services.user.create({
|
||||
...attributes,
|
||||
registrationToken: strapi.admin.services.token.createToken(),
|
||||
});
|
||||
const createdUser = await strapi.admin.services.user.create(attributes);
|
||||
|
||||
// Send 201 created
|
||||
ctx.created(strapi.admin.services.user.sanitizeUser(createdUser));
|
||||
|
||||
@ -19,7 +19,7 @@ const getTokenOptions = () => {
|
||||
* @returns {string}
|
||||
*/
|
||||
const createToken = () => {
|
||||
return crypto.randomBytes(64).toString('hex');
|
||||
return crypto.randomBytes(20).toString('hex');
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@ -8,7 +8,11 @@ const { createUser } = require('../domain/user');
|
||||
* @returns {Promise<user>}
|
||||
*/
|
||||
const create = async attributes => {
|
||||
const user = createUser(attributes);
|
||||
const user = createUser({
|
||||
registrationToken: strapi.admin.services.token.createToken(),
|
||||
...attributes,
|
||||
});
|
||||
|
||||
return strapi.query('user', 'admin').create(user);
|
||||
};
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ expect.extend({
|
||||
},
|
||||
});
|
||||
|
||||
describe('Content Manager End to End', () => {
|
||||
describe('Admin Auth End to End', () => {
|
||||
beforeAll(async () => {
|
||||
const token = await registerAndLogin();
|
||||
rq = createAuthRequest(token);
|
||||
|
||||
88
packages/strapi-admin/test/admin-user-crud.test.e2e.js
Normal file
88
packages/strapi-admin/test/admin-user-crud.test.e2e.js
Normal file
@ -0,0 +1,88 @@
|
||||
// Helpers.
|
||||
const { registerAndLogin } = require('../../../test/helpers/auth');
|
||||
const { createAuthRequest } = require('../../../test/helpers/request');
|
||||
|
||||
let rq;
|
||||
|
||||
describe('Admin User CRUD End to End', () => {
|
||||
beforeAll(async () => {
|
||||
const token = await registerAndLogin();
|
||||
rq = createAuthRequest(token);
|
||||
}, 60000);
|
||||
|
||||
describe('Create a new user', () => {
|
||||
test('Can create a user successfully', async () => {
|
||||
const user = {
|
||||
email: 'new-user@strapi.io',
|
||||
firstname: 'New',
|
||||
lastname: 'User',
|
||||
roles: [1, 2],
|
||||
};
|
||||
|
||||
const res = await rq({
|
||||
url: '/admin/users',
|
||||
method: 'POST',
|
||||
body: user,
|
||||
});
|
||||
|
||||
expect(res.statusCode).toBe(201);
|
||||
expect(res.body).toMatchObject({
|
||||
id: 2,
|
||||
firstname: user.firstname,
|
||||
lastname: user.lastname,
|
||||
username: null,
|
||||
email: user.email,
|
||||
registrationToken: expect.any(String),
|
||||
isActive: false,
|
||||
roles: [],
|
||||
});
|
||||
});
|
||||
|
||||
test('Fails on missing field (email)', async () => {
|
||||
const user = {
|
||||
firstname: 'New',
|
||||
lastname: 'User',
|
||||
roles: [1, 2],
|
||||
};
|
||||
|
||||
const res = await rq({
|
||||
url: '/admin/users',
|
||||
method: 'POST',
|
||||
body: user,
|
||||
});
|
||||
|
||||
expect(res.statusCode).toBe(400);
|
||||
expect(res.body).toMatchObject({
|
||||
statusCode: 400,
|
||||
error: 'Bad Request',
|
||||
message: {
|
||||
email: ['email is a required field'],
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
test('Fails on invalid field type (firstname)', async () => {
|
||||
const user = {
|
||||
email: 'new-user@strapi.io',
|
||||
firstname: 1,
|
||||
lastname: 'User',
|
||||
roles: [1, 2],
|
||||
};
|
||||
|
||||
const res = await rq({
|
||||
url: '/admin/users',
|
||||
method: 'POST',
|
||||
body: user,
|
||||
});
|
||||
|
||||
expect(res.statusCode).toBe(400);
|
||||
expect(res.body).toMatchObject({
|
||||
statusCode: 400,
|
||||
error: 'Bad Request',
|
||||
message: {
|
||||
firstname: ['firstname must be a `string` type, but the final value was: `1`.'],
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -19,7 +19,7 @@ const userCreationSchema = yup.object().shape({
|
||||
.required(),
|
||||
roles: yup
|
||||
.array()
|
||||
.of(yup.number())
|
||||
.min(1)
|
||||
.required(),
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user