| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- const Path = require('path')
- const SandboxedModule = require('sandboxed-module')
- const sinon = require('sinon')
- const MODULE_PATH = Path.join(
- __dirname,
- '../../../app/src/UserActivateController.js'
- )
- const VIEW_PATH = Path.join(__dirname, '../../../app/views/user/activate')
- describe('UserActivateController', function() {
- beforeEach(function() {
- this.user = {
- _id: (this.user_id = 'kwjewkl'),
- features: {},
- email: 'joe@example.com'
- }
- this.UserGetter = { getUser: sinon.stub() }
- this.ErrorController = { notFound: sinon.stub() }
- this.UserActivateController = SandboxedModule.require(MODULE_PATH, {
- globals: {
- console: console
- },
- requires: {
- '../../../../app/src/Features/User/UserGetter': this.UserGetter,
- '../../../../app/src/Features/Errors/ErrorController': this
- .ErrorController
- }
- })
- this.req = {
- query: {},
- session: {
- user: this.user
- }
- }
- this.res = {}
- })
- describe('activateAccountPage', function() {
- beforeEach(function() {
- this.UserGetter.getUser = sinon.stub().callsArgWith(2, null, this.user)
- this.req.query.user_id = this.user_id
- this.req.query.token = this.token = 'mock-token-123'
- })
- it('should 404 without a user_id', function(done) {
- delete this.req.query.user_id
- this.ErrorController.notFound = () => done()
- this.UserActivateController.activateAccountPage(this.req, this.res)
- })
- it('should 404 without a token', function(done) {
- delete this.req.query.token
- this.ErrorController.notFound = () => done()
- this.UserActivateController.activateAccountPage(this.req, this.res)
- })
- it('should 404 without a valid user_id', function(done) {
- this.UserGetter.getUser = sinon.stub().callsArgWith(2, null, null)
- this.ErrorController.notFound = () => done()
- this.UserActivateController.activateAccountPage(this.req, this.res)
- })
- it('should 403 for complex user_id', function(done) {
- this.ErrorController.forbidden = () => done()
- this.req.query.user_id = { first_name: 'X' }
- this.UserActivateController.activateAccountPage(this.req, this.res)
- })
- it('should redirect activated users to login', function(done) {
- this.user.loginCount = 1
- this.res.redirect = url => {
- this.UserGetter.getUser.calledWith(this.user_id).should.equal(true)
- url.should.equal('/login')
- return done()
- }
- this.UserActivateController.activateAccountPage(this.req, this.res)
- })
- it('render the activation page if the user has not logged in before', function(done) {
- this.user.loginCount = 0
- this.res.render = (page, opts) => {
- page.should.equal(VIEW_PATH)
- opts.email.should.equal(this.user.email)
- opts.token.should.equal(this.token)
- return done()
- }
- this.UserActivateController.activateAccountPage(this.req, this.res)
- })
- })
- })
|