| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import { expect } from 'chai'
- import cheerio from 'cheerio'
- import UserHelper from '../../../../../test/acceptance/src/helpers/UserHelper.mjs'
- describe('Launchpad', function () {
- const adminEmail = 'admin@example.com'
- const adminPassword = 'adreadfulsecret'
- const user = new UserHelper()
- it('should show the launchpad page', async function () {
- const response = await user.fetch('/launchpad')
- expect(response.status).to.equal(200)
- const body = await response.text()
- const $ = cheerio.load(body)
- expect($('h2').first().text()).to.equal('Create the first Admin account')
- expect($('form[name="email"]').first()).to.exist
- expect($('form[name="password"]').first()).to.exist
- })
- it('should allow for creation of the first admin user', async function () {
- // Load the launchpad page
- const initialPageResponse = await user.fetch('/launchpad')
- expect(initialPageResponse.status).to.equal(200)
- const initialPageBody = await initialPageResponse.text()
- const $ = cheerio.load(initialPageBody)
- expect($('h2').first().text()).to.equal('Create the first Admin account')
- expect($('form[name="email"]').first()).to.exist
- expect($('form[name="password"]').first()).to.exist
- // Submit the form
- let csrfToken = await user.getCsrfToken()
- const postResponse = await user.fetch('/launchpad/register_admin', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
- body: JSON.stringify({
- _csrf: csrfToken,
- email: adminEmail,
- password: adminPassword,
- }),
- })
- expect(postResponse.status).to.equal(200)
- const postBody = await postResponse.json()
- expect(postBody).to.deep.equal({ redir: '/launchpad' })
- // Try to load the page again
- const secondPageResponse = await user.fetch('/launchpad')
- expect(secondPageResponse.status).to.equal(302)
- expect(secondPageResponse.headers.get('location')).to.equal(
- UserHelper.url('/login').toString()
- )
- // Forbid submitting the form again
- csrfToken = await user.getCsrfToken()
- const badPostResponse = await user.fetch('/launchpad/register_admin', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
- body: JSON.stringify({
- _csrf: csrfToken,
- email: adminEmail + '1',
- password: adminPassword + '1',
- }),
- })
- expect(badPostResponse.status).to.equal(403)
- expect(await badPostResponse.json()).to.deep.equal({
- message: { type: 'error', text: 'admin user already exists' },
- })
- // Log in as this new admin user
- const adminUser = await UserHelper.loginUser({
- email: adminEmail,
- password: adminPassword,
- })
- // Check we are actually admin
- expect(await adminUser.isLoggedIn()).to.equal(true)
- expect(adminUser.user.isAdmin).to.equal(true)
- // Check reversedHostName is stored
- expect(adminUser.user.emails[0].reversedHostname).to.equal('moc.elpmaxe')
- })
- })
|