Guest User

Untitled

a guest
Jan 25th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.83 KB | None | 0 0
  1. 'use strict';
  2.  
  3. var path = require('path');
  4. var dotEnvPath = path.resolve('./.env');
  5. require('dotenv').config({ path: dotEnvPath });
  6. const Code = require('code');
  7. const Lab = require('lab');
  8. const lab = exports.lab = Lab.script();
  9. const describe = lab.describe;
  10. const it = lab.it;
  11. const expect = Code.expect;
  12. const Joi = require('joi');
  13. const Hapi = require('hapi');
  14. const app = require('../app');
  15. const server = new Hapi.Server();
  16. const getServer = async () => {
  17. const server = new Hapi.Server();
  18. // server.connection();
  19. return server.register(app)
  20. .then(() => server);
  21. };
  22.  
  23. lab.experiment('signup testing in "/signup"', () => {
  24.  
  25. lab.test('Return true if the user can successfully signup', (done, flags) => {
  26. const signUpData = {
  27. method: 'POST',
  28. url: '/signup',
  29. payload: {
  30. name: 'vulcan',
  31. password: 'vulcan@123',
  32. email: 'vulcan@gmail.com',
  33. username: 'vulcan123',
  34. dob: '12-08-1994'
  35. }
  36. };
  37.  
  38. getServer()
  39. .then((server) => server.inject(signUpData))
  40. .then((response) => {
  41.  
  42. flags.note(`demo test note`);
  43.  
  44. if (response) {
  45. console.log(response.statusCode);
  46. Code.expect(response.statusCode).to.equal(201);
  47. Code.expect(payload).to.contain(['name', 'password', 'email', 'username', 'dob']);
  48.  
  49. }
  50. done();
  51. });
  52. });
  53.  
  54. });
  55.  
  56. lab.experiment('1) login test ', () => {
  57. lab.test('login has successfully done', (done) => {
  58. const loginData = {
  59. method: 'POST',
  60. url: '/login',
  61. payload: {
  62. email: 'wrong email',
  63. login_password: 'wrong password',
  64. }
  65. };
  66. getServer()
  67. .then((server) => {
  68. server.inject(loginData)
  69. })
  70. .then((response) => {
  71. Code.expect(response.statusCode).to.equal(200);
  72. done();
  73. });
  74. });
  75. });
  76.  
  77. exports.postForm = {
  78. description: 'Submit the signup page',
  79. tags: ['api'],
  80. notes: 'accepts name password verify and email',
  81. auth: {
  82. mode: 'try',
  83. strategy: 'session'
  84. },
  85. validate: {
  86. payload: {
  87. name: Joi.string().required(),
  88. password: Joi.string().min(4).max(20).required(),
  89. verify: Joi.string().required(),
  90. email: Joi.string().email().required(),
  91. username: Joi.string().min(3).max(20).required(),
  92. referredBy: Joi.any(),
  93. dob: Joi.date().required().label('Date of Birth')
  94. },
  95. failAction: (request, h, error) => {
  96. console.log('Validation Failed');
  97. request.yar.flash('error', error.details[0].message.replace(/['"]+/g, ''));
  98. return h.redirect('/signup').takeover();
  99. }
  100. },
  101. handler: async (request, h) => {
  102. try {
  103. var user = {
  104. name: request.payload.name,
  105. password: request.payload.password,
  106. email: request.payload.email,
  107. username: request.payload.username.toLowerCase(),
  108. referralName: request.payload.username + '@gg',
  109. emailConfirmationToken: uuidv1(),
  110. dob: request.payload.dob,
  111. tnc: true
  112. };
  113. let data = await signupHelper.signUpUser(user, request);
  114. if (data.statusCode === 201) {
  115.  
  116. if (request.payload.referredBy) {
  117. let configureReferral = await signupHelper.configureReferral(request.payload.referredBy, data.userId);
  118. if (configureReferral.statusCode === 200) {
  119. request.yar.flash('success', 'Account created, Please Login');
  120. return h.redirect('/login');
  121. }
  122. }
  123. request.yar.flash('success', 'Account created, Please Login');
  124. return h.redirect('/login');
  125. } else {
  126. request.yar.flash('error', data.message);
  127. return h.redirect('/signup');
  128. }
  129. } catch (error) {
  130. logger.error(error);
  131.  
  132. return h.redirect('/signup');
  133. }
  134. }
  135. };
  136.  
  137. exports.login = {
  138. description: 'Post to the login page',
  139. notes: 'Accepts two paramters email and password which got validation',
  140. tags: ['api'],
  141. auth: {
  142. mode: 'try',
  143. strategy: 'session'
  144. },
  145. plugins: {
  146. crumb: {
  147. key: 'crumb',
  148. source: 'payload',
  149. },
  150. 'hapi-auth-cookie': {
  151. redirectTo: false
  152. }
  153. },
  154. validate: {
  155. payload: {
  156. email: Joi.string().min(3).email().required(),
  157. login_password: Joi.string().min(4).required()
  158. },
  159. failAction: (request, h, error) => {
  160. request.yar.flash('error', error.details[0].message.replace(/['"]+/g, ''));
  161. return h.redirect('/login').takeover();
  162. }
  163. },
  164. handler: async (request, h) => {
  165. try {
  166. const next = request.query.next ? request.query.next : '/dashboard';
  167.  
  168. if (request.auth.isAuthenticated) {
  169. return h.redirect(next);
  170. }
  171. let resultData = await loginHelper.findByCredentials(request.payload.email, request.payload.login_password);
  172. if (resultData.statusCode === 200) {
  173. request.cookieAuth.set(resultData.user);
  174. return h.redirect(next);
  175. } else {
  176. request.yar.flash('error', resultData.message);
  177. return h.redirect('/login');
  178. }
  179. } catch (error) {
  180. logger.error(error);
  181. request.yar.flash('error', error.message);
  182. return h.redirect('/login');
  183. }
  184. }
  185. };
Add Comment
Please, Sign In to add comment