2020-06-09 11:48:49 +02:00
|
|
|
'use strict';
|
|
|
|
|
2020-05-18 20:39:39 +02:00
|
|
|
// Helpers.
|
2020-11-10 14:15:31 +01:00
|
|
|
const { createStrapiInstance } = require('../../../test/helpers/strapi');
|
2020-05-18 20:39:39 +02:00
|
|
|
const { createAuthRequest, createRequest } = require('../../../test/helpers/request');
|
|
|
|
|
|
|
|
describe('Authenticated User', () => {
|
2020-11-10 14:15:31 +01:00
|
|
|
let rq;
|
|
|
|
let strapi;
|
2020-05-18 20:39:39 +02:00
|
|
|
|
2020-11-10 14:15:31 +01:00
|
|
|
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 });
|
2020-05-18 20:39:39 +02:00
|
|
|
}, 60000);
|
|
|
|
|
2020-11-10 14:15:31 +01:00
|
|
|
afterAll(async () => {
|
|
|
|
await strapi.destroy();
|
|
|
|
});
|
|
|
|
|
2020-05-18 20:39:39 +02:00
|
|
|
describe('GET /users/me', () => {
|
|
|
|
test('Returns sanitized user info', async () => {
|
|
|
|
const res = await rq({
|
|
|
|
url: '/admin/users/me',
|
|
|
|
method: 'GET',
|
|
|
|
body: {},
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
|
|
expect(res.body.data).toMatchObject({
|
|
|
|
id: expect.anything(),
|
|
|
|
firstname: expect.stringOrNull(),
|
|
|
|
lastname: expect.stringOrNull(),
|
|
|
|
username: expect.stringOrNull(),
|
|
|
|
email: expect.any(String),
|
|
|
|
isActive: expect.any(Boolean),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Returns forbidden on unauthenticated query', async () => {
|
2020-11-30 20:20:36 +01:00
|
|
|
const req = createRequest({ strapi });
|
2020-05-18 20:39:39 +02:00
|
|
|
const res = await req({
|
|
|
|
url: '/admin/users/me',
|
|
|
|
method: 'GET',
|
|
|
|
body: {},
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(res.statusCode).toBe(403);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('PUT /users/me', () => {
|
|
|
|
test('Returns forbidden on unauthenticated query', async () => {
|
2020-11-30 20:20:36 +01:00
|
|
|
const req = createRequest({ strapi });
|
2020-05-18 20:39:39 +02:00
|
|
|
const res = await req({
|
|
|
|
url: '/admin/users/me',
|
|
|
|
method: 'PUT',
|
|
|
|
body: {},
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(res.statusCode).toBe(403);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Fails when trying to edit roles', async () => {
|
|
|
|
const res = await rq({
|
|
|
|
url: '/admin/users/me',
|
|
|
|
method: 'PUT',
|
|
|
|
body: {
|
|
|
|
roles: [1],
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(res.statusCode).toBe(400);
|
|
|
|
expect(res.body).toMatchObject({
|
|
|
|
statusCode: 400,
|
|
|
|
error: 'Bad Request',
|
|
|
|
message: 'ValidationError',
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Fails when trying to edit isActive', async () => {
|
|
|
|
const res = await rq({
|
|
|
|
url: '/admin/users/me',
|
|
|
|
method: 'PUT',
|
|
|
|
body: {
|
|
|
|
isActive: 12,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(res.statusCode).toBe(400);
|
|
|
|
expect(res.body).toMatchObject({
|
|
|
|
statusCode: 400,
|
|
|
|
error: 'Bad Request',
|
|
|
|
message: 'ValidationError',
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Fails when trying to set invalid inputs', async () => {
|
|
|
|
const res = await rq({
|
|
|
|
url: '/admin/users/me',
|
|
|
|
method: 'PUT',
|
|
|
|
body: {
|
|
|
|
isActive: 12,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(res.statusCode).toBe(400);
|
|
|
|
expect(res.body).toMatchObject({
|
|
|
|
statusCode: 400,
|
|
|
|
error: 'Bad Request',
|
|
|
|
message: 'ValidationError',
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Allows edition of names', async () => {
|
|
|
|
const input = {
|
|
|
|
firstname: 'newFirstName',
|
|
|
|
lastname: 'newLastaName',
|
|
|
|
};
|
|
|
|
|
|
|
|
const res = await rq({
|
|
|
|
url: '/admin/users/me',
|
|
|
|
method: 'PUT',
|
|
|
|
body: input,
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(res.statusCode).toBe(200);
|
|
|
|
expect(res.body.data).toMatchObject({
|
|
|
|
id: expect.anything(),
|
|
|
|
email: expect.any(String),
|
|
|
|
firstname: input.firstname,
|
|
|
|
lastname: input.lastname,
|
|
|
|
username: expect.stringOrNull(),
|
|
|
|
isActive: expect.any(Boolean),
|
|
|
|
roles: expect.arrayContaining([]),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|