|
|
@@ -161,22 +161,25 @@ describe('UserPagesController', function () {
|
|
|
|
|
|
describe('registerPage', function () {
|
|
|
it('should render the register page', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedTemplate.should.equal('user/register')
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.registerPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.registerPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should set sharedProjectData', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
- ctx.req.session.sharedProjectData = {
|
|
|
- project_name: 'myProject',
|
|
|
- user_first_name: 'user_first_name_here',
|
|
|
- }
|
|
|
-
|
|
|
+ ctx.req.session.sharedProjectData = {
|
|
|
+ project_name: 'myProject',
|
|
|
+ user_first_name: 'user_first_name_here',
|
|
|
+ }
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedVariables.sharedProjectData.project_name.should.equal(
|
|
|
'myProject'
|
|
|
@@ -186,12 +189,16 @@ describe('UserPagesController', function () {
|
|
|
)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.registerPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.registerPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should set newTemplateData', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.req.session.templateData = { templateName: 'templateName' }
|
|
|
|
|
|
ctx.res.callback = () => {
|
|
|
@@ -200,12 +207,16 @@ describe('UserPagesController', function () {
|
|
|
)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.registerPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.registerPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should not set the newTemplateData if there is nothing in the session', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
assert.equal(
|
|
|
ctx.res.renderedVariables.newTemplateData.templateName,
|
|
|
@@ -213,19 +224,27 @@ describe('UserPagesController', function () {
|
|
|
)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.registerPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.registerPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
|
|
|
describe('loginForm', function () {
|
|
|
it('should render the login page', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedTemplate.should.equal('user/login')
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.loginPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.loginPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -239,7 +258,7 @@ describe('UserPagesController', function () {
|
|
|
})
|
|
|
|
|
|
it('should set a redirect', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = page => {
|
|
|
ctx.AuthenticationController.setRedirectInSession.callCount.should.equal(
|
|
|
1
|
|
|
@@ -249,7 +268,11 @@ describe('UserPagesController', function () {
|
|
|
).to.equal(ctx.req.query.redir)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.loginPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.loginPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
@@ -261,17 +284,21 @@ describe('UserPagesController', function () {
|
|
|
})
|
|
|
|
|
|
it('should render user/sessions', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedTemplate.should.equal('user/sessions')
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.sessionsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.sessionsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should include current session data in the view', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
expect(ctx.res.renderedVariables.currentSession).to.deep.equal({
|
|
|
ip_address: '1.1.1.1',
|
|
|
@@ -279,17 +306,25 @@ describe('UserPagesController', function () {
|
|
|
})
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.sessionsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.sessionsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should have called getAllUserSessions', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = page => {
|
|
|
ctx.UserSessionsManager.getAllUserSessions.callCount.should.equal(1)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.sessionsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.sessionsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -320,28 +355,36 @@ describe('UserPagesController', function () {
|
|
|
})
|
|
|
|
|
|
it('render page with subscribed status', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
- ctx.NewsletterManager.subscribed.yields(null, true)
|
|
|
+ ctx.NewsletterManager.subscribed.yields(null, true)
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedTemplate.should.equal('user/email-preferences')
|
|
|
ctx.res.renderedVariables.title.should.equal('newsletter_info_title')
|
|
|
ctx.res.renderedVariables.subscribed.should.equal(true)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.emailPreferencesPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.emailPreferencesPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('render page with unsubscribed status', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
- ctx.NewsletterManager.subscribed.yields(null, false)
|
|
|
+ ctx.NewsletterManager.subscribed.yields(null, false)
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedTemplate.should.equal('user/email-preferences')
|
|
|
ctx.res.renderedVariables.title.should.equal('newsletter_info_title')
|
|
|
ctx.res.renderedVariables.subscribed.should.equal(false)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.emailPreferencesPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.emailPreferencesPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
@@ -355,54 +398,70 @@ describe('UserPagesController', function () {
|
|
|
})
|
|
|
|
|
|
it('should render user/settings', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedTemplate.should.equal('user/settings')
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should send user', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedVariables.user.id.should.equal(ctx.user._id)
|
|
|
ctx.res.renderedVariables.user.email.should.equal(ctx.user.email)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it("should set 'shouldAllowEditingDetails' to true", async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedVariables.shouldAllowEditingDetails.should.equal(true)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should restructure thirdPartyIdentifiers data for template use', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
- const expectedResult = {
|
|
|
- google: 'testId',
|
|
|
- }
|
|
|
+ const expectedResult = {
|
|
|
+ google: 'testId',
|
|
|
+ }
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
expect(ctx.res.renderedVariables.thirdPartyIds).to.include(
|
|
|
expectedResult
|
|
|
)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it("should set and clear 'projectSyncSuccessMessage'", async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
- ctx.req.session.projectSyncSuccessMessage = 'Some Sync Success'
|
|
|
+ ctx.req.session.projectSyncSuccessMessage = 'Some Sync Success'
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedVariables.projectSyncSuccessMessage.should.equal(
|
|
|
'Some Sync Success'
|
|
|
@@ -410,12 +469,16 @@ describe('UserPagesController', function () {
|
|
|
expect(ctx.req.session.projectSyncSuccessMessage).to.not.exist
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should cast refProviders to booleans', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
expect(ctx.res.renderedVariables.user.refProviders).to.deep.equal({
|
|
|
mendeley: true,
|
|
|
@@ -424,53 +487,60 @@ describe('UserPagesController', function () {
|
|
|
})
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should send the correct managed user admin email', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
expect(
|
|
|
ctx.res.renderedVariables.currentManagedUserAdminEmail
|
|
|
).to.equal(ctx.adminEmail)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
it('should send info for groups with SSO enabled', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
- ctx.user.enrollment = {
|
|
|
- sso: [
|
|
|
- {
|
|
|
- groupId: 'abc123abc123',
|
|
|
- primary: true,
|
|
|
- linkedAt: new Date(),
|
|
|
- },
|
|
|
- ],
|
|
|
- }
|
|
|
- const group1 = {
|
|
|
- _id: 'abc123abc123',
|
|
|
- teamName: 'Group SSO Rulz',
|
|
|
- admin_id: {
|
|
|
- email: 'admin.email@ssolove.com',
|
|
|
- },
|
|
|
- linked: true,
|
|
|
- }
|
|
|
- const group2 = {
|
|
|
- _id: 'def456def456',
|
|
|
- admin_id: {
|
|
|
- email: 'someone.else@noname.co.uk',
|
|
|
+ ctx.user.enrollment = {
|
|
|
+ sso: [
|
|
|
+ {
|
|
|
+ groupId: 'abc123abc123',
|
|
|
+ primary: true,
|
|
|
+ linkedAt: new Date(),
|
|
|
},
|
|
|
- linked: false,
|
|
|
- }
|
|
|
-
|
|
|
- ctx.Modules.promises.hooks.fire
|
|
|
- .withArgs('getUserGroupsSSOEnrollmentStatus')
|
|
|
- .resolves([[group1, group2]])
|
|
|
+ ],
|
|
|
+ }
|
|
|
+ const group1 = {
|
|
|
+ _id: 'abc123abc123',
|
|
|
+ teamName: 'Group SSO Rulz',
|
|
|
+ admin_id: {
|
|
|
+ email: 'admin.email@ssolove.com',
|
|
|
+ },
|
|
|
+ linked: true,
|
|
|
+ }
|
|
|
+ const group2 = {
|
|
|
+ _id: 'def456def456',
|
|
|
+ admin_id: {
|
|
|
+ email: 'someone.else@noname.co.uk',
|
|
|
+ },
|
|
|
+ linked: false,
|
|
|
+ }
|
|
|
|
|
|
+ ctx.Modules.promises.hooks.fire
|
|
|
+ .withArgs('getUserGroupsSSOEnrollmentStatus')
|
|
|
+ .resolves([[group1, group2]])
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
expect(
|
|
|
ctx.res.renderedVariables.memberOfSSOEnabledGroups
|
|
|
@@ -491,7 +561,11 @@ describe('UserPagesController', function () {
|
|
|
resolve()
|
|
|
}
|
|
|
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -505,14 +579,18 @@ describe('UserPagesController', function () {
|
|
|
})
|
|
|
|
|
|
it('should set "shouldAllowEditingDetails" to false', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedVariables.shouldAllowEditingDetails.should.equal(
|
|
|
false
|
|
|
)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
@@ -527,14 +605,18 @@ describe('UserPagesController', function () {
|
|
|
})
|
|
|
|
|
|
it('should set "shouldAllowEditingDetails" to false', async function (ctx) {
|
|
|
- await new Promise(resolve => {
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
ctx.res.callback = () => {
|
|
|
ctx.res.renderedVariables.shouldAllowEditingDetails.should.equal(
|
|
|
false
|
|
|
)
|
|
|
resolve()
|
|
|
}
|
|
|
- ctx.UserPagesController.settingsPage(ctx.req, ctx.res)
|
|
|
+ ctx.UserPagesController.settingsPage(
|
|
|
+ ctx.req,
|
|
|
+ ctx.res,
|
|
|
+ ctx.rejectOnError(reject)
|
|
|
+ )
|
|
|
})
|
|
|
})
|
|
|
})
|