1+ 'use strict' ;
2+
3+ const expect = require ( 'chai' ) . expect ;
4+ const request = require ( 'superagent' ) ;
5+ const mongoose = require ( 'mongoose' ) ;
6+ const Promise = require ( 'bluebird' ) ;
7+
8+ const User = require ( '../models/user.js' ) ;
9+ const Gallery = require ( '../models/gallery.js' ) ;
10+
11+ require ( '../server' ) ;
12+
13+ const url = `http://localhost:${ process . env . PORT } ` ;
14+
15+ const testUser = {
16+ username : 'testy' ,
17+ password : 'abc123' ,
18+ email : 'fake@fake.com' ,
19+ } ;
20+
21+ const testGallery = {
22+ name : 'test name' ,
23+ desc : 'test description' ,
24+ } ;
25+
26+ mongoose . Promise = Promise ;
27+
28+ describe ( 'Gallery routes' , function ( ) {
29+ afterEach ( done => {
30+ Promise . all ( [
31+ User . remove ( { } ) ,
32+ Gallery . remove ( { } ) ,
33+ ] )
34+ . then ( ( ) => done ( ) )
35+ . catch ( ( ) => done ( ) ) ;
36+ } ) ;
37+
38+ describe ( 'POST tests' , function ( ) {
39+ before ( done => {
40+ new User ( testUser )
41+ . generatePasswordHash ( testUser . password )
42+ . then ( user => user . save ( ) )
43+ . then ( user => {
44+ this . tempUser = user ;
45+ console . log ( 'temporary user' , this . tempUser ) ;
46+ return user . generateToken ( ) ;
47+ } )
48+ . then ( token => {
49+ console . log ( 'test token' , token ) ;
50+ this . tempToken = token ;
51+ done ( ) ;
52+ } )
53+ . catch ( ( ) => done ( ) ) ;
54+ } ) ;
55+
56+ it ( 'should return a gallery' , done => {
57+ request . post ( `${ url } /api/gallery` )
58+ . send ( testGallery )
59+ . set ( {
60+ Authorization : `Bearer ${ this . tempToken } ` ,
61+ } )
62+ . end ( ( err , res ) => {
63+ if ( err ) return done ( err ) ;
64+ let date = new Date ( res . body . created ) . toString ( ) ;
65+ expect ( res . body . name ) . to . equal ( testGallery . name ) ;
66+ expect ( res . body . desc ) . to . equal ( testGallery . desc ) ;
67+ expect ( res . body . userId ) . to . equal ( this . tempUser . _id . toString ( ) ) ;
68+ expect ( date ) . to . not . equal ( 'Invalid Date' ) ;
69+ expect ( res . status ) . to . equal ( 200 ) ;
70+ done ( ) ;
71+ } ) ;
72+ } ) ;
73+
74+ it ( 'should thrown an error if not given a token' , done => {
75+ request . post ( `${ url } /api/gallery` )
76+ . send ( testGallery )
77+ . set ( {
78+ Authorization : `Bearer ` ,
79+ } )
80+ . end ( ( err , res ) => {
81+ expect ( res . status ) . to . equal ( 401 ) ;
82+ done ( ) ;
83+ } ) ;
84+ } ) ;
85+
86+ it . only ( 'should return a "bad request" error if not given a correct body' , done => {
87+ request . post ( `${ url } /api/gallery` )
88+ . send ( { name :'' } )
89+ . set ( {
90+ Authorization : `Bearer ${ this . tempToken } ` ,
91+ } )
92+ . end ( ( err , res ) => {
93+ expect ( res . status ) . to . equal ( 400 ) ; //put the expect in a catch
94+ done ( ) ;
95+ } ) ;
96+ } ) ;
97+ } ) ;
98+
99+ describe ( 'GET routes' , function ( ) {
100+ before ( done => {
101+ new User ( testUser )
102+ . generatePasswordHash ( testUser . password )
103+ . then ( user => user . save ( ) )
104+ . then ( user => {
105+ this . tempUser = user ;
106+ return user . generateToken ( ) ;
107+ } )
108+ . then ( token => {
109+ this . tempToken = token ;
110+ done ( ) ;
111+ } )
112+ . catch ( ( ) => done ( ) ) ;
113+ } ) ;
114+
115+ before ( done => {
116+ testGallery . userId = this . tempUser . _id . toString ( ) ;
117+ new Gallery ( testGallery ) . save ( )
118+ . then ( gallery => {
119+ this . tempGallery = gallery ;
120+ done ( ) ;
121+ } )
122+ . catch ( ( ) => done ( ) ) ;
123+ } ) ;
124+
125+ after ( ( ) => {
126+ delete testGallery . userId ;
127+ } ) ;
128+
129+ it ( 'should return a gallery' , done => {
130+ request . get ( `${ url } /api/gallery/${ this . tempGallery . _id } ` )
131+ . set ( {
132+ Authorization : `Bearer ${ this . tempToken } ` ,
133+ } )
134+ . end ( ( err , res ) => {
135+ if ( err ) return done ( err ) ;
136+ let date = new Date ( res . body . created ) . toString ( ) ;
137+ expect ( res . body . name ) . to . equal ( testGallery . name ) ;
138+ expect ( res . body . desc ) . to . equal ( testGallery . desc ) ;
139+ expect ( res . body . userId ) . to . equal ( this . tempUser . _id . toString ( ) ) ;
140+ expect ( date ) . to . not . equal ( 'Invalid Date' ) ;
141+ expect ( res . status ) . to . equal ( 200 ) ;
142+ done ( ) ;
143+ } ) ;
144+ } ) ;
145+
146+ it ( 'should throw an error if given the wrong credentials' , done => {
147+ request . get ( `${ url } /api/gallery/${ this . tempGallery . _id } ` )
148+ . set ( {
149+ Authorization : `Bearer ` ,
150+ } )
151+ . end ( ( err , res ) => {
152+ expect ( res . status ) . to . equal ( 401 ) ;
153+ done ( ) ;
154+ } ) ;
155+ } ) ;
156+
157+ it ( 'should throw an error if given an invalid id' , done => {
158+ request . get ( `${ url } /api/gallery/` )
159+ . set ( {
160+ Authorization : `Bearer ${ this . tempToken } ` ,
161+ } )
162+ . end ( ( err , res ) => {
163+ expect ( res . status ) . to . equal ( 404 ) ;
164+ done ( ) ;
165+ } ) ;
166+ } ) ;
167+ } ) ;
168+ } ) ;
0 commit comments