Advertisement
Guest User

Untitled

a guest
May 14th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.89 KB | None | 0 0
  1. const assert = require('assert');
  2. process.env.NODE_ENV = 'test';
  3.  
  4. //Require the dev-dependencies
  5. const chai = require('chai');
  6. const chaiHttp = require('chai-http');
  7. const should = chai.should();
  8. const server = require("../server");
  9. chai.use(chaiHttp);
  10.  
  11. const mongoose = require("mongoose");
  12. const User = mongoose.model('User');
  13.  
  14.  
  15.  
  16.  
  17. describe('User', function () {
  18.  
  19. beforeEach((done) => { //Before each test we empty the database
  20. User.remove({}, (err) => {
  21. done();
  22. });
  23. });
  24.  
  25. /*
  26. * Test the /GET/:id route
  27. */
  28. describe('/GET/:id user', () => {
  29. it('Get a client with a string ID, it should raise an error.', (done) => {
  30. chai.request(server)
  31. .get('/user/abc')
  32. .end((err, res) => {
  33. res.should.have.status(422);
  34. done();
  35. });
  36. });
  37. it('Get a client with a valid ID.', async () => {
  38. const user1 = new User({
  39. firstname: 'Benjamin',
  40. lastname: 'GONTARD',
  41. position: 'CEO',
  42. email: 'benjamin.gontard2912@gmail.com',
  43. phoneNumber: '0600000000',
  44. photo: 'maSuperPhotoEnBase64'
  45. });
  46.  
  47. const user2 = new User({
  48. firstname: 'Rick',
  49. lastname: 'Hellman',
  50. position: 'Larbin',
  51. email: 'x5pidSeries@gmail.com',
  52. phoneNumber: '0600000000',
  53. photo: 'saSuperPhotoEnBase64'
  54. });
  55.  
  56. await user1.save();
  57. await user2.save();
  58.  
  59. chai.request(server)
  60. .get('/user/' + user2.id)
  61. .end((err, res) => {
  62. res.should.have.status(200);
  63. res.body.should.be.a('object');
  64. res.body.should.have.property('firstname');
  65. res.body.should.have.property('lastname');
  66. res.body.should.have.property('position');
  67. res.body.should.have.property('email');
  68. res.body.should.have.property('phoneNumber');
  69. res.body.should.have.property('photo');
  70. res.body.should.have.property('id').eql(parseInt(user2.id));
  71. });
  72. });
  73. it('Get a client which does not exist, it should return 404 not found.', (done) => {
  74. const user = new User({
  75. firstname: 'Benjamin',
  76. lastname: 'GONTARD',
  77. position: 'CEO',
  78. email: 'benjamin.gontard2912@gmail.com',
  79. phoneNumber: '0600000000',
  80. photo: 'maSuperPhotoEnBase64'
  81. });
  82.  
  83. user.save((err, user) => {
  84. chai.request(server)
  85. .get('/user/' + 1956)
  86. .end((err, res) => {
  87. res.should.have.status(404);
  88. done();
  89. });
  90.  
  91. });
  92. });
  93. });
  94.  
  95. describe('/POST user', () => {
  96. it('Post a client with valid data', (done) => {
  97. const user = {
  98. firstname: 'Benjamin',
  99. lastname: 'GONTARD',
  100. position: 'CEO',
  101. email: 'benjamin.gontard2912@gmail.com',
  102. phoneNumber: '0600000000',
  103. photo: 'maSuperPhotoEnBase64'
  104. }
  105.  
  106. chai.request(server)
  107. .post('/user')
  108. .send(user)
  109. .end((err, res) => {
  110. res.should.have.status(200);
  111. res.body.should.be.a('object');
  112. res.body.should.have.property('firstname');
  113. res.body.should.have.property('lastname');
  114. res.body.should.have.property('position');
  115. res.body.should.have.property('email');
  116. res.body.should.have.property('phoneNumber');
  117. res.body.should.have.property('photo');
  118. done();
  119. });
  120. });
  121. });
  122.  
  123. /*
  124. * Test the /GET all route
  125. */
  126. describe('/GET user', () => {
  127. it('Get all the users, length of the result should be 0 because there is no users registered.', (done) => {
  128. chai.request(server)
  129. .get('/user')
  130. .end((err, res) => {
  131. res.should.have.status(200);
  132. res.body.should.be.a('array');
  133. res.body.length.should.be.eql(0);
  134. done();
  135. });
  136. });
  137.  
  138. it('Get all the users, length of the result should be 2', async () => {
  139.  
  140. const user1 = new User({
  141. firstname: 'Benjamin',
  142. lastname: 'GONTARD',
  143. position: 'CEO',
  144. email: 'benjamin.gontard2912@gmail.com',
  145. phoneNumber: '0600000000',
  146. photo: 'maSuperPhotoEnBase64'
  147. });
  148.  
  149. const user2 = new User({
  150. firstname: 'Rick',
  151. lastname: 'Hellman',
  152. position: 'Larbin',
  153. email: 'x5pidSeries@gmail.com',
  154. phoneNumber: '0600000000',
  155. photo: 'saSuperPhotoEnBase64'
  156. });
  157.  
  158. await user1.save();
  159. await user2.save();
  160.  
  161. chai.request(server)
  162. .get('/user')
  163. .end((err, res) => {
  164. res.should.have.status(200);
  165. res.body.should.be.a('array');
  166. res.body.length.should.be.eql(2);
  167. });
  168. });
  169. });
  170.  
  171. /*
  172. * Test the /PUT/:id route
  173. */
  174. describe('/PUT/:id user', () => {
  175.  
  176.  
  177. it('Update a valid user with valid data.', async () => {
  178.  
  179. const user = new User({
  180. firstname: 'Benjamin',
  181. lastname: 'GONTARD',
  182. position: 'CEO',
  183. email: 'benjamin.gontard2912@gmail.com',
  184. phoneNumber: '0600000000',
  185. photo: 'maSuperPhotoEnBase64'
  186. });
  187.  
  188. const updatedUser = new User({
  189. firstname: 'Benjamin',
  190. lastname: 'GONTARD',
  191. position: 'Consultant',
  192. email: 'benjamin.gontard2912@gmail.com',
  193. phoneNumber: '0600000000',
  194. photo: 'maSuperPhotoEnBase64'
  195. });
  196.  
  197. const savedUser = await user.save();
  198. chai.request(server)
  199. .put('/user/' + savedUser.id)
  200. .send(updatedUser)
  201. .end((err, res) => {
  202. res.should.have.status(200);
  203. res.body.should.be.a('object');
  204. res.body.should.have.property('position').eql('Consultant');
  205. });
  206. });
  207.  
  208. it('Update a non-existing user, error 404 should be raised.', async () => {
  209.  
  210. const user = new User({
  211. firstname: 'Benjamin',
  212. lastname: 'GONTARD',
  213. position: 'CEO',
  214. email: 'benjamin.gontard2912@gmail.com',
  215. phoneNumber: '0600000000',
  216. photo: 'maSuperPhotoEnBase64'
  217. });
  218.  
  219. const updatedUser = new User({
  220. firstname: 'Benjamin',
  221. lastname: 'GONTARD',
  222. position: 'Consultant',
  223. email: 'benjamin.gontard2912@gmail.com',
  224. phoneNumber: '0600000000',
  225. photo: 'maSuperPhotoEnBase64'
  226. });
  227.  
  228. const savedUser = await user.save();
  229.  
  230. chai.request(server)
  231. .put('/user/' + 9999)
  232. .send(updatedUser)
  233. .end((err, res) => {
  234. res.should.have.status(404);
  235. });
  236. });
  237. });
  238.  
  239. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement