Guest User

Untitled

a guest
May 28th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.62 KB | None | 0 0
  1. import { Test } from '@nestjs/testing';
  2. import * as bodyParser from 'body-parser';
  3. import * as express from 'express';
  4. import * as fileUpload from 'express-fileupload';
  5. import * as request from 'supertest';
  6. import { pagingInterceptor } from '../src/interceptors/paging.interceptor';
  7. import { responseStatusInterceptor } from "../src/interceptors/responseStatus.interceptor";
  8. import { PRIVILEGES } from "../src/modules/constants";
  9.  
  10. export const createServer = async (): Promise<express.Express> => {
  11. jasmine.DEFAULT_TIMEOUT_INTERVAL = 25000;
  12. const server = express();
  13. server.use([bodyParser.json(), bodyParser.urlencoded({ extended: false })]);
  14. server.use(fileUpload());
  15. server.use(responseStatusInterceptor);
  16. server.use(pagingInterceptor);
  17. return server;
  18. };
  19.  
  20. export const createApp = async (server, modules = [], components = []) => {
  21. try {
  22. const module = await Test.createTestingModule({
  23. modules,
  24. components,
  25. })
  26. .compile();
  27. const app = module.createNestApplication(server);
  28. await app.init();
  29. return app;
  30. } catch (e) {
  31. console.warn(e);
  32. }
  33. };
  34.  
  35. export const createClientWrapper = (server, clientService = undefined, staffService = undefined) => async (name, props, packageId) => {
  36. const userTest = {
  37. firstName: name,
  38. lastName: 'woodoo',
  39. email: `${name}@mail.com`,
  40. password: 'password',
  41. phone: '+' + Math.round(Math.random() * 100000000),
  42. countries: JSON.stringify(['GB']),
  43. rulesAccepted: true,
  44. ...props,
  45. };
  46.  
  47. const { body: clientRes } = await request(server)
  48. .post('/users/clients/register')
  49. .field('firstName', userTest.firstName)
  50. .field('lastName', userTest.lastName)
  51. .field('email', userTest.email)
  52. .field('password', userTest.password)
  53. .field('phone', userTest.phone)
  54. .field('countries', userTest.countries)
  55. .field('rulesAccepted', userTest.rulesAccepted)
  56. .attach('avatar', 'e2e/img.jpeg')
  57. .expect(201);
  58.  
  59. if (staffService) {
  60. const { body: staff } = await request(server)
  61. .post('/users/staff/register')
  62. .send({
  63. firstName: 'manager',
  64. lastName: 'manager',
  65. email: `${name}.manager@mail.com`,
  66. password: 'superpass',
  67. position: PRIVILEGES.MANAGER,
  68. phone: '+' + Math.round(Math.random() * 100000000000),
  69. countries: JSON.stringify(['PL', 'GB']),
  70. })
  71. .expect(201);
  72. await staffService.activateStaffById(staff._id);
  73. const bodyStaff = await request(server)
  74. .post('/users/login')
  75. .send({
  76. email: `${name}.manager@mail.com`,
  77. password: 'superpass',
  78. });
  79.  
  80. const resStaff = bodyStaff.body;
  81. if (!packageId) {
  82. const { body: packagesResponse } = await request(server)
  83. .get('/packages')
  84. .set('authorization', resStaff.token);
  85. packageId = packagesResponse.packages[0].id;
  86. }
  87.  
  88. await request(server)
  89. .post('/subscriptions/')
  90. .set('authorization', resStaff.token)
  91. .send({
  92. clientId: clientRes.client._id,
  93. packageId,
  94. })
  95. .expect(201);
  96. }
  97. const { body: res } = await request(server).post('/users/login/')
  98. .send({
  99. email: userTest.email,
  100. password: userTest.password,
  101. })
  102. .expect(201);
  103.  
  104. if (clientService) {
  105. const activate = await clientService.generateActivationKey(res.user);
  106.  
  107. await request(server)
  108. .post('/users/clients/activate')
  109. .send({ key: activate.key})
  110. .set('authorization', res.token)
  111. .expect(201);
  112. }
  113. return res;
  114. };
  115.  
  116. export const createStaffWrapper = (server, staffService) => async (position, name, props) => {
  117. const userTest = {
  118. firstName: name,
  119. lastName: 'woodoo',
  120. email: name + '@mail.com',
  121. password: 'superpass',
  122. position,
  123. phone: '+' + Math.round(Math.random() * 100000000000),
  124. countries: JSON.stringify(['PL', 'GB']),
  125. ...props,
  126. };
  127.  
  128. const { body: user } = await request(server)
  129. .post('/users/staff/register')
  130. .field('firstName', userTest.firstName)
  131. .field('lastName', userTest.lastName)
  132. .field('email', userTest.email)
  133. .field('password', userTest.password)
  134. .field('position', userTest.position)
  135. .field('countries', userTest.countries)
  136. .field('phone', userTest.phone)
  137. .attach('avatar', 'e2e/img.jpeg')
  138. .expect(201);
  139. await staffService.activateStaffById(user._id);
  140.  
  141. const { body: res } = await request(server)
  142. .post('/users/login')
  143. .send({
  144. email: userTest.email,
  145. password: userTest.password,
  146. });
  147.  
  148. return res;
  149. };
  150.  
  151. export const createOrderWrapper = (server) => async (staff, amount) => {
  152. const { body: order } = await request(server)
  153. .post('/payments/orders/')
  154. .set('authorization', staff.token)
  155. .send({
  156. amount,
  157. description: 'money',
  158. });
  159.  
  160. return order;
  161. };
  162.  
  163. export const createThreadWrapper = (server) => async (user) => {
  164. const { body: thread } = await request(server)
  165. .post('/threads')
  166. .set('authorization', user.token)
  167. .expect(201);
  168.  
  169. return thread;
  170. };
Add Comment
Please, Sign In to add comment