Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Test } from '@nestjs/testing';
- import * as bodyParser from 'body-parser';
- import * as express from 'express';
- import * as fileUpload from 'express-fileupload';
- import * as request from 'supertest';
- import { pagingInterceptor } from '../src/interceptors/paging.interceptor';
- import { responseStatusInterceptor } from "../src/interceptors/responseStatus.interceptor";
- import { PRIVILEGES } from "../src/modules/constants";
- export const createServer = async (): Promise<express.Express> => {
- jasmine.DEFAULT_TIMEOUT_INTERVAL = 25000;
- const server = express();
- server.use([bodyParser.json(), bodyParser.urlencoded({ extended: false })]);
- server.use(fileUpload());
- server.use(responseStatusInterceptor);
- server.use(pagingInterceptor);
- return server;
- };
- export const createApp = async (server, modules = [], components = []) => {
- try {
- const module = await Test.createTestingModule({
- modules,
- components,
- })
- .compile();
- const app = module.createNestApplication(server);
- await app.init();
- return app;
- } catch (e) {
- console.warn(e);
- }
- };
- export const createClientWrapper = (server, clientService = undefined, staffService = undefined) => async (name, props, packageId) => {
- const userTest = {
- firstName: name,
- lastName: 'woodoo',
- email: `${name}@mail.com`,
- password: 'password',
- phone: '+' + Math.round(Math.random() * 100000000),
- countries: JSON.stringify(['GB']),
- rulesAccepted: true,
- ...props,
- };
- const { body: clientRes } = await request(server)
- .post('/users/clients/register')
- .field('firstName', userTest.firstName)
- .field('lastName', userTest.lastName)
- .field('email', userTest.email)
- .field('password', userTest.password)
- .field('phone', userTest.phone)
- .field('countries', userTest.countries)
- .field('rulesAccepted', userTest.rulesAccepted)
- .attach('avatar', 'e2e/img.jpeg')
- .expect(201);
- if (staffService) {
- const { body: staff } = await request(server)
- .post('/users/staff/register')
- .send({
- firstName: 'manager',
- lastName: 'manager',
- email: `${name}.manager@mail.com`,
- password: 'superpass',
- position: PRIVILEGES.MANAGER,
- phone: '+' + Math.round(Math.random() * 100000000000),
- countries: JSON.stringify(['PL', 'GB']),
- })
- .expect(201);
- await staffService.activateStaffById(staff._id);
- const bodyStaff = await request(server)
- .post('/users/login')
- .send({
- email: `${name}.manager@mail.com`,
- password: 'superpass',
- });
- const resStaff = bodyStaff.body;
- if (!packageId) {
- const { body: packagesResponse } = await request(server)
- .get('/packages')
- .set('authorization', resStaff.token);
- packageId = packagesResponse.packages[0].id;
- }
- await request(server)
- .post('/subscriptions/')
- .set('authorization', resStaff.token)
- .send({
- clientId: clientRes.client._id,
- packageId,
- })
- .expect(201);
- }
- const { body: res } = await request(server).post('/users/login/')
- .send({
- email: userTest.email,
- password: userTest.password,
- })
- .expect(201);
- if (clientService) {
- const activate = await clientService.generateActivationKey(res.user);
- await request(server)
- .post('/users/clients/activate')
- .send({ key: activate.key})
- .set('authorization', res.token)
- .expect(201);
- }
- return res;
- };
- export const createStaffWrapper = (server, staffService) => async (position, name, props) => {
- const userTest = {
- firstName: name,
- lastName: 'woodoo',
- email: name + '@mail.com',
- password: 'superpass',
- position,
- phone: '+' + Math.round(Math.random() * 100000000000),
- countries: JSON.stringify(['PL', 'GB']),
- ...props,
- };
- const { body: user } = await request(server)
- .post('/users/staff/register')
- .field('firstName', userTest.firstName)
- .field('lastName', userTest.lastName)
- .field('email', userTest.email)
- .field('password', userTest.password)
- .field('position', userTest.position)
- .field('countries', userTest.countries)
- .field('phone', userTest.phone)
- .attach('avatar', 'e2e/img.jpeg')
- .expect(201);
- await staffService.activateStaffById(user._id);
- const { body: res } = await request(server)
- .post('/users/login')
- .send({
- email: userTest.email,
- password: userTest.password,
- });
- return res;
- };
- export const createOrderWrapper = (server) => async (staff, amount) => {
- const { body: order } = await request(server)
- .post('/payments/orders/')
- .set('authorization', staff.token)
- .send({
- amount,
- description: 'money',
- });
- return order;
- };
- export const createThreadWrapper = (server) => async (user) => {
- const { body: thread } = await request(server)
- .post('/threads')
- .set('authorization', user.token)
- .expect(201);
- return thread;
- };
Add Comment
Please, Sign In to add comment