mirror of
https://github.com/KeygraphHQ/juice-shop.git
synced 2026-11-10 10:41:36 -10:00
44 lines
2.1 KiB
TypeScript
44 lines
2.1 KiB
TypeScript
/*
|
|
* Copyright (c) 2014-2025 Bjoern Kimminich & the OWASP Juice Shop contributors.
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
import sinon from 'sinon'
|
|
import chai from 'chai'
|
|
import sinonChai from 'sinon-chai'
|
|
import { retrieveLoggedInUser } from '../../routes/currentUser'
|
|
import { authenticatedUsers } from '../../lib/insecurity'
|
|
import type { UserModel } from 'models/user'
|
|
const expect = chai.expect
|
|
chai.use(sinonChai)
|
|
|
|
describe('currentUser', () => {
|
|
let req: any
|
|
let res: any
|
|
|
|
beforeEach(() => {
|
|
req = { cookies: {}, query: {} }
|
|
res = { json: sinon.spy() }
|
|
})
|
|
|
|
it('should return neither ID nor email if no cookie was present in the request headers', () => {
|
|
req.cookies.token = ''
|
|
|
|
retrieveLoggedInUser()(req, res)
|
|
|
|
expect(res.json).to.have.been.calledWith({ user: { id: undefined, email: undefined, lastLoginIp: undefined, profileImage: undefined } })
|
|
})
|
|
|
|
it('should return ID and email of user belonging to cookie from the request', () => {
|
|
req.cookies.token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkYXRhIjp7ImlkIjoxLCJlbWFpbCI6ImFkbWluQGp1aWNlLXNoLm9wIiwibGFzdExvZ2luSXAiOiIwLjAuMC4wIiwicHJvZmlsZUltYWdlIjoiZGVmYXVsdC5zdmcifSwiaWF0IjoxNTgyMjIyMzY0fQ.CHiFQieZudYlrd1o8Ih-Izv7XY_WZupt8Our-CP9HqsczyEKqrWC7wWguOgVuSGDN_S3mP4FyuEFN8l60aAhVsUbqzFetvJkFwe5nKVhc9dHuen6cujQLMcTlHLKassOSDP41Q-MkKWcUOQu0xUkTMfEq2hPMHpMosDb4benzH0'
|
|
req.query.callback = undefined
|
|
authenticatedUsers.put(
|
|
'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJkYXRhIjp7ImlkIjoxLCJlbWFpbCI6ImFkbWluQGp1aWNlLXNoLm9wIiwibGFzdExvZ2luSXAiOiIwLjAuMC4wIiwicHJvZmlsZUltYWdlIjoiZGVmYXVsdC5zdmcifSwiaWF0IjoxNTgyMjIyMzY0fQ.CHiFQieZudYlrd1o8Ih-Izv7XY_WZupt8Our-CP9HqsczyEKqrWC7wWguOgVuSGDN_S3mP4FyuEFN8l60aAhVsUbqzFetvJkFwe5nKVhc9dHuen6cujQLMcTlHLKassOSDP41Q-MkKWcUOQu0xUkTMfEq2hPMHpMosDb4benzH0',
|
|
{ data: { id: 1, email: '[email protected]', lastLoginIp: '0.0.0.0', profileImage: '/assets/public/images/uploads/default.svg' } as unknown as UserModel }
|
|
)
|
|
retrieveLoggedInUser()(req, res)
|
|
|
|
expect(res.json).to.have.been.calledWith({ user: { id: 1, email: '[email protected]', lastLoginIp: '0.0.0.0', profileImage: '/assets/public/images/uploads/default.svg' } })
|
|
})
|
|
})
|