PageRenderTime 44ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/test/testapi.js

https://bitbucket.org/dmozog/borrador
JavaScript | 112 lines | 59 code | 10 blank | 43 comment | 1 complexity | 79ce8a24cf9cf48d5b465b09f6e95296 MD5 | raw file
  1. //
  2. // Se declaran los paquetes que se van a utilizar en el JavaScript
  3. //
  4. var mocha = require('mocha');
  5. var chai = require('chai');
  6. var chaihttp = require('chai-http');
  7. //
  8. // Se indica que se va a hacer uso de chaihttp en chai
  9. //
  10. chai.use(chaihttp);
  11. //
  12. // Se declara la variable should (resultado esperado)
  13. //
  14. var should = chai.should();
  15. //
  16. // Se declara la variable server para que arranque el server
  17. // De ese modo el test es autocontenido, no hay que arrancar el servidor
  18. // por fuera
  19. //
  20. var server = require('../server')
  21. //
  22. // Se decriben los test. Los test se agrupan por suites
  23. // Este test solo prueba que se llega a una web http
  24. // Cada bloque IT ejecuta un test unitario
  25. //
  26. describe('First test suite',
  27. function() {
  28. it('[LOG] Test that DuckDuckGo works',
  29. function(done) {
  30. chai.request('http://www.duckduckgo.com')
  31. .get('/')
  32. .end(
  33. function(err, res){
  34. console.log("[LOG] Request has ended");
  35. // console.log(err);
  36. // console.log(res);
  37. //
  38. // La respuesta correcta debe ser http:200. Para que consideremos
  39. // el test como correcto consideramos que la respuesta debe ser
  40. // http:200
  41. //
  42. res.should.have.status(200);
  43. done();
  44. }
  45. )
  46. }
  47. )
  48. }
  49. );
  50. //
  51. // Este test prueba nuestra aplicaciĆ³n
  52. // Cada bloque IT ejecuta un test unitario
  53. //
  54. describe('Test de API de Usuarios de TechU',
  55. function() {
  56. it('[LOG] Prueba de que la API de usuarios funciona OK',
  57. function(done) {
  58. chai.request('http://localhost:3000')
  59. .get('/apitechu/v1')
  60. .end(
  61. function(err, res){
  62. console.log("[LOG] Request has ended");
  63. // console.log(err);
  64. //
  65. // Se ejecutan dos pruebas:
  66. // - La respuesta correcta debe ser http:200
  67. // - Se comprueba la respuesta del metodo GET
  68. //
  69. res.should.have.status(200);
  70. res.body.msg.should.be.eql("Respuesta JSON desde API TechU");
  71. done();
  72. }
  73. )
  74. }
  75. ),
  76. it('[LOG] Prueba de que la API devuelve una lista de usuarios correctos',
  77. function(done) {
  78. chai.request('http://localhost:3000')
  79. .get('/apitechu/v1/users')
  80. .end(
  81. function(err, res){
  82. console.log("[LOG] Request has ended");
  83. //
  84. // Se ejecutan dos pruebas:
  85. // - La respuesta correcta debe ser http:200
  86. // - Se comprueba la respuesta del metodo GET:
  87. // - Que es de tipo array
  88. // - Que la lista es del tipo esperado
  89. //
  90. res.should.have.status(200);
  91. res.body.should.be.a("array");
  92. for (user of res.body) {
  93. user.should.have.property('email');
  94. user.should.have.property('password');
  95. }
  96. done();
  97. }
  98. )
  99. }
  100. )
  101. }
  102. );