@@ -39,10 +39,31 @@ describe('Protected', () => {
39
39
// let's first create a valid JWT token to use in the requests where we want to be logged in
40
40
const jwt = require ( 'jsonwebtoken' )
41
41
const User = require ( '../models/User' )
42
- const user = new User ( { username : 'test' , password : 'test' } )
43
- const token = user . generateJWT ( )
42
+
43
+ // establish a pseudo-random test username
44
+ let mockUserCredentials = {
45
+ username : `foo-${ Math . random ( ) } ` , // randomish username
46
+ password : 'bar' ,
47
+ }
48
+ let mockUser // will hold a test user
49
+ let token // will hold this user's JWT token
50
+
51
+ // create test user before tests
52
+ before ( done => {
53
+ mockUser = new User ( mockUserCredentials ) . save ( ) . then ( user => {
54
+ token = user . generateJWT ( ) // generate a valid token for testing
55
+ done ( )
56
+ } )
57
+ } )
58
+
59
+ // delete test user after tests
60
+ after ( done => {
61
+ // delete the test user
62
+ User . remove ( { _id : mockUser . _id } ) . then ( ( ) => done ( ) )
63
+ } )
44
64
45
65
it ( 'it should return a 200 HTTP response code' , done => {
66
+ console . log ( `DEBUG: running test` )
46
67
chai
47
68
. request ( server )
48
69
. get ( '/protected' )
@@ -64,7 +85,7 @@ describe('Protected', () => {
64
85
// res.body.should.have.property("user")
65
86
// res.body.should.have.property("message")
66
87
res . body . should . have . keys ( 'success' , 'user' , 'message' ) // a way to test the presence of an exact set of keys in the response object
67
- expect ( res . body ) . to . have . deep . property ( 'user.id' , 1 ) // check for exact value of a nested value
88
+ expect ( res . body ) . to . have . deep . property ( 'user.id' ) // check for exact value of a nested value
68
89
expect ( res . body ) . to . have . deep . property ( 'user.username' ) // check for existence of a nested value
69
90
70
91
done ( ) // resolve the Promise that these tests create so mocha can move on
0 commit comments