Skip to content

Commit 49dc27c

Browse files
committed
- keep current user token after hard current-user reload
1 parent 73b5c06 commit 49dc27c

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

src/users/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ export default class Users {
146146
.then(user => {
147147
this.currentUserRequest = null
148148

149+
user['user-token'] = this.currentUser && this.currentUser['user-token'] || undefined
150+
149151
return this.currentUser = user
150152
})
151153
.catch(error => {

test/unit/specs/users/current-user.js

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,85 @@ describe('<Users> Current User', function() {
239239
expect(Backendless.UserService.currentUser).to.be.equal(user)
240240
})
241241

242+
it('should keep current user token after hard user reload', async () => {
243+
const objectId = Utils.objectId()
244+
const userToken = Utils.uid()
245+
246+
const req1 = prepareMockRequest({ ...getTestUserObject(), objectId, 'user-token': userToken })
247+
248+
const user1 = await Backendless.UserService.login('[email protected]', '123456')
249+
250+
expect(req1).to.deep.include({
251+
method : 'POST',
252+
path : `${APP_PATH}/users/login`,
253+
headers: { 'Content-Type': 'application/json' },
254+
})
255+
256+
expect(user1).to.deep.equal({
257+
___class : 'Users',
258+
email : '[email protected]',
259+
name : 'Bob Miller',
260+
objectId,
261+
password : '123456',
262+
'user-token': userToken,
263+
})
264+
265+
const user2 = await Backendless.UserService.getCurrentUser()
266+
267+
expect(user2).to.deep.equal({
268+
___class : 'Users',
269+
email : '[email protected]',
270+
name : 'Bob Miller',
271+
objectId,
272+
password : '123456',
273+
'user-token': userToken,
274+
})
275+
276+
const req2 = prepareMockRequest(true)
277+
const isLoginValid1 = await Backendless.UserService.isValidLogin()
278+
279+
expect(req2).to.deep.include({
280+
method : 'GET',
281+
path : `${APP_PATH}/users/isvalidusertoken/${userToken}`,
282+
headers: { 'user-token': userToken },
283+
})
284+
285+
expect(isLoginValid1).to.be.equal(true)
286+
287+
const currentUserRes = { ...user1 }
288+
delete currentUserRes['user-token']
289+
290+
const req3 = prepareMockRequest(currentUserRes)
291+
292+
const user3 = await Backendless.UserService.getCurrentUser(true)
293+
294+
expect(req3).to.deep.include({
295+
method : 'GET',
296+
path : `${APP_PATH}/data/Users/${objectId}`,
297+
headers: { 'user-token': userToken },
298+
})
299+
300+
expect(user3).to.deep.equal({
301+
___class : 'Users',
302+
email : '[email protected]',
303+
name : 'Bob Miller',
304+
objectId,
305+
password : '123456',
306+
'user-token': userToken,
307+
})
308+
309+
const req4 = prepareMockRequest(true)
310+
const isLoginValid2 = await Backendless.UserService.isValidLogin()
311+
312+
expect(req4).to.deep.include({
313+
method : 'GET',
314+
path : `${APP_PATH}/users/isvalidusertoken/${userToken}`,
315+
headers: { 'user-token': userToken },
316+
})
317+
318+
expect(isLoginValid2).to.be.equal(true)
319+
})
320+
242321
describe('User Token', () => {
243322
it('should get current user token', async () => {
244323
const token1 = 'test-1'

0 commit comments

Comments
 (0)