Skip to content

Commit 4bcb152

Browse files
authored
Merge pull request #372 from sebuelias/issue#283-wallet-tests
Issue#283 wallet tests
2 parents c63b90b + 9f8ce5b commit 4bcb152

File tree

2 files changed

+174
-0
lines changed

2 files changed

+174
-0
lines changed

test/fixtures/wallet/wallet.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/* Import fixtures
2+
*
3+
* Sample wallet for tests
4+
*
5+
* @return {Object}
6+
*/
7+
8+
const walletKeys = [
9+
'id',
10+
'data'
11+
]
12+
13+
const walletBodyKeys = [
14+
'message',
15+
'wallet'
16+
]
17+
18+
const walletDataKeys = [
19+
'userId',
20+
'isActive',
21+
'currencies'
22+
]
23+
24+
module.exports = { walletBodyKeys, walletKeys, walletDataKeys }

test/integration/wallet.test.js

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
const chai = require('chai')
2+
const { expect } = chai
3+
const chaiHttp = require('chai-http')
4+
5+
const app = require('../../server')
6+
const authService = require('../../services/authService')
7+
8+
const addUser = require('../utils/addUser')
9+
const cleanDb = require('../utils/cleanDb')
10+
const usersUtils = require('../../utils/users')
11+
12+
const userData = require('../fixtures/user/user')()
13+
const { walletBodyKeys, walletKeys, walletDataKeys } = require('../fixtures/wallet/wallet')
14+
15+
const defaultUser = userData[0]
16+
const newUser = userData[3]
17+
const superUser = userData[4]
18+
19+
const config = require('config')
20+
const cookieName = config.get('userToken.cookieName')
21+
22+
chai.use(chaiHttp)
23+
24+
describe('Wallet', function () {
25+
let authToken
26+
let userId
27+
let userName
28+
29+
beforeEach(async function () {
30+
userId = await addUser(defaultUser)
31+
authToken = authService.generateAuthToken({ userId })
32+
userName = await usersUtils.getUsername(userId)
33+
})
34+
35+
afterEach(async function () {
36+
await cleanDb()
37+
})
38+
39+
describe('GET /wallet', function () {
40+
it('Should return wallet information of the logged in user', function (done) {
41+
chai
42+
.request(app)
43+
.get('/wallet')
44+
.set('cookie', `${cookieName}=${authToken}`)
45+
.end((error, response) => {
46+
if (error) {
47+
return done(error)
48+
}
49+
50+
expect(response).to.have.status(200)
51+
expect(response.body).to.be.a('object')
52+
expect(response.body).to.have.all.keys(...walletBodyKeys)
53+
expect(response.body.message).to.be.equal('Wallet returned successfully for user')
54+
expect(response.body.wallet).to.be.a('object')
55+
expect(response.body.wallet).to.have.all.keys(...walletKeys)
56+
expect(response.body.wallet.data).to.have.all.keys(...walletDataKeys)
57+
58+
return done()
59+
})
60+
})
61+
62+
it('Should return the user their own wallet with 1000 dineros loaded', function (done) {
63+
chai
64+
.request(app)
65+
.get('/wallet')
66+
.set('cookie', `${cookieName}=${authToken}`)
67+
.end((error, response) => {
68+
if (error) {
69+
return done(error)
70+
}
71+
72+
expect(response).to.have.status(200)
73+
expect(response.body.wallet.data.userId).to.be.equal(userId)
74+
expect(response.body.message).to.be.equal('Wallet returned successfully for user')
75+
expect(response.body.wallet.data.currencies.dinero).to.be.equal(1000)
76+
77+
return done()
78+
})
79+
})
80+
81+
it('Without cookie access should be unauthorized', function (done) {
82+
chai
83+
.request(app)
84+
.get('/wallet')
85+
.end((error, response) => {
86+
if (error) {
87+
return done(error)
88+
}
89+
90+
expect(response).to.have.status(401)
91+
expect(response.body.error).to.be.equal('Unauthorized')
92+
expect(response.body.message).to.be.equal('Unauthenticated User')
93+
94+
return done()
95+
})
96+
})
97+
})
98+
99+
describe('GET /wallet/:username', function () {
100+
let newUserId
101+
let newUserAuthToken
102+
103+
let superUserId
104+
let superUserAuthToken
105+
106+
before(async function () {
107+
newUserId = await addUser(newUser)
108+
newUserAuthToken = authService.generateAuthToken({ userId: newUserId })
109+
110+
superUserId = await addUser(superUser)
111+
superUserAuthToken = authService.generateAuthToken({ userId: superUserId })
112+
})
113+
114+
it('Should return wallet when trying to access someone else\'s wallet, using authorized user (super_user)', function (done) {
115+
chai
116+
.request(app)
117+
.get(`/wallet/${userName}`)
118+
.set('cookie', `${cookieName}=${superUserAuthToken}`)
119+
.end((error, response) => {
120+
if (error) {
121+
return done(error)
122+
}
123+
124+
expect(response).to.have.status(200)
125+
expect(response.body.wallet.data.userId).to.be.equal(userId)
126+
expect(response.body.message).to.be.equal('Wallet returned successfully')
127+
128+
return done()
129+
})
130+
})
131+
132+
it('Should return unauthorized error when trying to access someone else\'s wallet when not authorized', function (done) {
133+
chai
134+
.request(app)
135+
.get(`/wallet/${userName}`)
136+
.set('cookie', `${cookieName}=${newUserAuthToken}`)
137+
.end((error, response) => {
138+
if (error) {
139+
return done(error)
140+
}
141+
142+
expect(response).to.have.status(401)
143+
expect(response.body.error).to.be.equal('Unauthorized')
144+
expect(response.body.message).to.be.equal('You are not authorized for this action.')
145+
146+
return done()
147+
})
148+
})
149+
})
150+
})

0 commit comments

Comments
 (0)