105 lines
3.0 KiB
TypeScript
105 lines
3.0 KiB
TypeScript
import { APP_URL, ADMIN_EMAIL, ADMIN_PASSWORD } from '../utils/constants';
|
|
import * as request from 'supertest';
|
|
import { RoleEnum } from '../../src/roles/roles.enum';
|
|
import { StatusEnum } from '../../src/statuses/statuses.enum';
|
|
|
|
describe('Users admin (e2e)', () => {
|
|
const app = APP_URL;
|
|
let newUserFirst;
|
|
const newUserEmailFirst = `user-first.${Date.now()}@example.com`;
|
|
const newUserPasswordFirst = `secret`;
|
|
const newUserChangedPasswordFirst = `new-secret`;
|
|
const newUserByAdminEmailFirst = `user-created-by-admin.${Date.now()}@example.com`;
|
|
const newUserByAdminPasswordFirst = `secret`;
|
|
let apiToken;
|
|
|
|
beforeAll(async () => {
|
|
await request(app)
|
|
.post('/api/v1/auth/admin/email/login')
|
|
.send({ email: ADMIN_EMAIL, password: ADMIN_PASSWORD })
|
|
.then(({ body }) => {
|
|
apiToken = body.token;
|
|
});
|
|
|
|
await request(app)
|
|
.post('/api/v1/auth/email/register')
|
|
.send({
|
|
email: newUserEmailFirst,
|
|
password: newUserPasswordFirst,
|
|
firstName: `First${Date.now()}`,
|
|
lastName: 'E2E',
|
|
});
|
|
|
|
await request(app)
|
|
.post('/api/v1/auth/email/login')
|
|
.send({ email: newUserEmailFirst, password: newUserPasswordFirst })
|
|
.then(({ body }) => {
|
|
newUserFirst = body.user;
|
|
});
|
|
});
|
|
|
|
it('Change password for new user: /api/v1/users/:id (PATCH)', () => {
|
|
return request(app)
|
|
.patch(`/api/v1/users/${newUserFirst.id}`)
|
|
.auth(apiToken, {
|
|
type: 'bearer',
|
|
})
|
|
.send({ password: newUserChangedPasswordFirst })
|
|
.expect(200);
|
|
});
|
|
|
|
it('Login via registered user: /api/v1/auth/email/login (GET)', () => {
|
|
return request(app)
|
|
.post('/api/v1/auth/email/login')
|
|
.send({ email: newUserEmailFirst, password: newUserChangedPasswordFirst })
|
|
.expect(200)
|
|
.expect(({ body }) => {
|
|
expect(body.token).toBeDefined();
|
|
});
|
|
});
|
|
|
|
it('Fail create new user by admin: /api/v1/users (POST)', () => {
|
|
return request(app)
|
|
.post(`/api/v1/users`)
|
|
.auth(apiToken, {
|
|
type: 'bearer',
|
|
})
|
|
.send({ email: 'fail-data' })
|
|
.expect(422);
|
|
});
|
|
|
|
it('Success create new user by admin: /api/v1/users (POST)', () => {
|
|
return request(app)
|
|
.post(`/api/v1/users`)
|
|
.auth(apiToken, {
|
|
type: 'bearer',
|
|
})
|
|
.send({
|
|
email: newUserByAdminEmailFirst,
|
|
password: newUserByAdminPasswordFirst,
|
|
firstName: `UserByAdmin${Date.now()}`,
|
|
lastName: 'E2E',
|
|
role: {
|
|
id: RoleEnum.user,
|
|
},
|
|
status: {
|
|
id: StatusEnum.active,
|
|
},
|
|
})
|
|
.expect(201);
|
|
});
|
|
|
|
it('Login via created by admin user: /api/v1/auth/email/login (GET)', () => {
|
|
return request(app)
|
|
.post('/api/v1/auth/email/login')
|
|
.send({
|
|
email: newUserByAdminEmailFirst,
|
|
password: newUserByAdminPasswordFirst,
|
|
})
|
|
.expect(200)
|
|
.expect(({ body }) => {
|
|
expect(body.token).toBeDefined();
|
|
});
|
|
});
|
|
});
|