mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-08-03 04:29:40 +00:00
some sloppy mocha tests for corrupt task handling
This commit is contained in:
parent
aa54c073c7
commit
319c2667d7
1 changed files with 57 additions and 32 deletions
|
|
@ -46,8 +46,26 @@ describe 'API', ->
|
|||
model = null
|
||||
user = null
|
||||
uid = null
|
||||
token = null
|
||||
username = null
|
||||
|
||||
###
|
||||
Function for registring new users, so we can futz with data
|
||||
###
|
||||
registerNewUser = (cb) ->
|
||||
randomID = model.id()
|
||||
params =
|
||||
username: randomID
|
||||
password: randomID
|
||||
confirmPassword: randomID
|
||||
email: "#{randomID}@gmail.com"
|
||||
|
||||
request.post("#{baseURL}/register")
|
||||
.set('Accept', 'application/json')
|
||||
.send(params)
|
||||
.end (res) ->
|
||||
cb(res.body)
|
||||
|
||||
before (done) ->
|
||||
server = require '../src/server'
|
||||
server.listen '1337', '0.0.0.0', ->
|
||||
|
|
@ -55,30 +73,8 @@ describe 'API', ->
|
|||
#store.flush()
|
||||
model = store.createModel()
|
||||
|
||||
randomID = model.id()
|
||||
params =
|
||||
username: randomID
|
||||
password: randomID
|
||||
confirmPassword: randomID
|
||||
email: "#{randomID}@gmail.com"
|
||||
|
||||
register = ->
|
||||
request.post("#{baseURL}/register")
|
||||
.set('Accept', 'application/json')
|
||||
.send(params)
|
||||
.end (res) ->
|
||||
user = res.body
|
||||
uid = user.id
|
||||
username = user.auth.local.username
|
||||
|
||||
#TODO fix me , we shouldn't need session & _userID in API function testing
|
||||
model.set '_userId', uid
|
||||
model.session = {userId:uid}
|
||||
|
||||
done()
|
||||
|
||||
# nasty hack, why isn't server.listen callback fired when server is completely up?
|
||||
setTimeout register, 2000
|
||||
setTimeout done, 2000
|
||||
|
||||
describe 'Without token or user id', ->
|
||||
|
||||
|
|
@ -103,13 +99,16 @@ describe 'API', ->
|
|||
currentUser = null
|
||||
|
||||
before (done) ->
|
||||
model.fetch "users.#{uid}", (err, _user) ->
|
||||
user = _user
|
||||
params =
|
||||
title: 'Title'
|
||||
text: 'Text'
|
||||
type: 'habit'
|
||||
done()
|
||||
registerNewUser (_res) ->
|
||||
[uid, token, username] = [_res.id, _res.apiToken, _res.auth.local.username]
|
||||
model.query('users').withIdAndToken(uid, token).fetch (err, _user) ->
|
||||
console.error {err} if err
|
||||
user = _user
|
||||
params =
|
||||
title: 'Title'
|
||||
text: 'Text'
|
||||
type: 'habit'
|
||||
done()
|
||||
|
||||
beforeEach ->
|
||||
currentUser = user.get()
|
||||
|
|
@ -437,7 +436,6 @@ describe 'API', ->
|
|||
id: userAuth.facebook_id
|
||||
name: userAuth.name
|
||||
email: userAuth.email
|
||||
#console.log {newUser}
|
||||
model.set "users.#{id}", newUser, ->
|
||||
|
||||
request.post("#{baseURL}/user/auth/facebook")
|
||||
|
|
@ -450,6 +448,34 @@ describe 'API', ->
|
|||
#expect(res.body.token).to.be newUser.apiToken
|
||||
done()
|
||||
|
||||
it 'POST /api/v1/batch-update (handles corrupt values)', (done) ->
|
||||
registerNewUser (_res) ->
|
||||
model.set '_userId', _res.id
|
||||
model.session = {userId:_res.id}
|
||||
|
||||
# corrupt the tasks, and let's see how the server handles this
|
||||
ids = _res.dailyIds
|
||||
_res.tasks[ids[0]].value = NaN
|
||||
_res.tasks[ids[1]].value = undefined
|
||||
_res.tasks[ids[2]] = {}
|
||||
_res.tasks["undefined"] = {}
|
||||
|
||||
_res.stats.hp = _res.stats.gp = NaN
|
||||
|
||||
_res.lastCron = +new Date('08/13/2013')
|
||||
|
||||
model.set "users.#{_res.id}", _res, ->
|
||||
ops = [{'cron'}]
|
||||
request.post("#{baseURL}/user/batch-update")
|
||||
.set('Accept', 'application/json')
|
||||
.set('X-API-User', _res.id)
|
||||
.set('X-API-Key', _res.apiToken)
|
||||
.send(ops)
|
||||
.end (res) ->
|
||||
expect(res.statusCode).to.be 200
|
||||
console.log {stats:res.body.stats, tasks:res.body.tasks}
|
||||
done()
|
||||
|
||||
it 'POST /api/v1/batch-update', (done) ->
|
||||
userBefore = _.cloneDeep(currentUser)
|
||||
|
||||
|
|
@ -480,7 +506,6 @@ describe 'API', ->
|
|||
.end (res) ->
|
||||
expect(res.body.err).to.be undefined
|
||||
expect(res.statusCode).to.be 200
|
||||
console.log {stats:res.body.stats, tasks:res.body.tasks}
|
||||
expectUserEqual(userBefore, res.body)
|
||||
done()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue