| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- const { expect } = require('chai')
- const { ObjectId } = require('mongodb')
- const User = require('./helpers/User').promises
- describe('Authentication', function () {
- let user
- beforeEach('init vars', function () {
- user = new User()
- })
- describe('CSRF regeneration on login', function () {
- it('should prevent use of csrf token from before login', function (done) {
- user.logout(err => {
- if (err) {
- return done(err)
- }
- user.getCsrfToken(err => {
- if (err) {
- return done(err)
- }
- const oldToken = user.csrfToken
- user.login(err => {
- if (err) {
- return done(err)
- }
- expect(oldToken === user.csrfToken).to.equal(false)
- user.request.post(
- {
- headers: {
- 'x-csrf-token': oldToken,
- },
- url: '/project/new',
- json: { projectName: 'test' },
- },
- (err, response, body) => {
- expect(err).to.not.exist
- expect(response.statusCode).to.equal(403)
- expect(body).to.equal('Forbidden')
- done()
- }
- )
- })
- })
- })
- })
- })
- describe('login', function () {
- beforeEach('doLogin', async function () {
- await user.login()
- })
- it('should log the user in', async function () {
- const {
- response: { statusCode },
- } = await user.doRequest('GET', '/project')
- expect(statusCode).to.equal(200)
- })
- it('should emit an user auditLog entry for the login', async function () {
- const {
- auditLog: [auditLogEntry],
- } = await user.get()
- expect(auditLogEntry).to.exist
- expect(auditLogEntry.timestamp).to.exist
- delete auditLogEntry.timestamp
- expect(auditLogEntry).to.deep.equal({
- operation: 'login',
- ipAddress: '127.0.0.1',
- initiatorId: ObjectId(user.id),
- })
- })
- })
- })
|