Make tests in RegistrationTests not depend on previous run state

GitOrigin-RevId: 68bcf9530ec6f5831c67449f35d0f010e5104f78
This commit is contained in:
Simon Detheridge 2019-08-08 16:46:30 +01:00 committed by sharelatex
parent 7d253651ca
commit 6defe1a693

View file

@ -76,8 +76,9 @@ const tryLoginThroughRegistrationForm = function(
}) })
} }
describe('Registration', function() {
describe('LoginRateLimit', function() { describe('LoginRateLimit', function() {
before(function() { beforeEach(function() {
this.user = new User() this.user = new User()
this.badEmail = 'bademail@example.com' this.badEmail = 'bademail@example.com'
return (this.badPassword = 'badpassword') return (this.badPassword = 'badpassword')
@ -221,7 +222,7 @@ describe('CSRF protection', function() {
}) })
describe('Register', function() { describe('Register', function() {
before(function() { beforeEach(function() {
return (this.user = new User()) return (this.user = new User())
}) })
@ -239,7 +240,7 @@ describe('Register', function() {
}) })
describe('Register with bonus referal id', function() { describe('Register with bonus referal id', function() {
before(function(done) { beforeEach(function(done) {
this.user1 = new User() this.user1 = new User()
this.user2 = new User() this.user2 = new User()
return async.series( return async.series(
@ -266,7 +267,7 @@ describe('Register with bonus referal id', function() {
}) })
describe('LoginViaRegistration', function() { describe('LoginViaRegistration', function() {
before(function(done) { beforeEach(function(done) {
this.timeout(60000) this.timeout(60000)
this.user1 = new User() this.user1 = new User()
this.user2 = new User() this.user2 = new User()
@ -298,31 +299,29 @@ describe('LoginViaRegistration', function() {
}) })
}) })
it('should have user1 login', function(done) { it('should have user1 login and create a project, which user2 cannot access', function(done) {
return this.user1.login(err => { let projectId
expect(err != null).to.equal(false) async.series(
return done() [
// user1 logs in and creates a project which only they can access
cb => {
this.user1.login(err => {
expect(err).not.to.exist
cb()
}) })
},
cb => {
this.user1.createProject('Private Project', (err, id) => {
expect(err).not.to.exist
projectId = id
cb()
}) })
},
it('should have user1 create a project', function(done) { cb => expectProjectAccess(this.user1, projectId, cb),
return this.user1.createProject('Private Project', (err, project_id) => { cb => expectNoProjectAccess(this.user2, projectId, cb),
expect(err != null).to.equal(false) // should prevent user2 from login/register with user1 email address
this.project_id = project_id cb => {
return done() tryLoginThroughRegistrationForm(
})
})
it('should ensure user1 can access their project', function(done) {
return expectProjectAccess(this.user1, this.project_id, done)
})
it('should ensure user2 cannot access the project', function(done) {
return expectNoProjectAccess(this.user2, this.project_id, done)
})
it('should prevent user2 from login/register with user1 email address', function(done) {
return tryLoginThroughRegistrationForm(
this.user2, this.user2,
this.user1.email, this.user1.email,
'totally_not_the_right_password', 'totally_not_the_right_password',
@ -331,13 +330,16 @@ describe('LoginViaRegistration', function() {
expect(body.message != null).to.equal(true) expect(body.message != null).to.equal(true)
expect(body.message).to.have.all.keys('type', 'text') expect(body.message).to.have.all.keys('type', 'text')
expect(body.message.type).to.equal('error') expect(body.message.type).to.equal('error')
return done() cb()
} }
) )
},
// check user still can't access the project
cb => expectNoProjectAccess(this.user2, projectId, done)
],
done
)
}) })
it('should still ensure user2 cannot access the project', function(done) {
return expectNoProjectAccess(this.user2, this.project_id, done)
}) })
}) })
}) })