pinafore/tests/spec/002-login-spec.js

61 lines
2.4 KiB
JavaScript
Raw Normal View History

2018-02-20 02:04:37 +01:00
import { Selector as $ } from 'testcafe'
2018-03-01 07:45:42 +01:00
import {
2018-04-21 22:06:46 +02:00
addInstanceButton,
2018-03-07 08:57:06 +01:00
authorizeInput, emailInput, formError, getFirstVisibleStatus, getUrl, instanceInput, logInToInstanceLink,
2018-04-21 22:06:46 +02:00
mastodonLogInButton,
2018-03-07 08:57:06 +01:00
passwordInput,
settingsButton,
sleep
2018-03-01 07:45:42 +01:00
} from '../utils'
2018-02-20 02:04:37 +01:00
2018-03-07 06:32:51 +01:00
fixture`002-login-spec.js`
2018-02-20 03:25:59 +01:00
.page`http://localhost:4002`
2018-02-20 02:04:37 +01:00
2018-02-20 03:25:59 +01:00
function manualLogin (t, username, password) {
2018-03-07 08:57:06 +01:00
return t.click(logInToInstanceLink)
2018-02-20 03:24:22 +01:00
.expect(getUrl()).contains('/settings/instances/add')
.typeText(instanceInput, 'localhost:3000')
2018-04-21 22:06:46 +02:00
.click(addInstanceButton)
.expect(getUrl()).eql('http://localhost:3000/auth/sign_in', {timeout: 30000})
2018-03-01 07:45:42 +01:00
.typeText(emailInput, username, {paste: true})
.typeText(passwordInput, password, {paste: true})
2018-04-21 22:06:46 +02:00
.click(mastodonLogInButton)
2018-02-20 03:24:22 +01:00
.expect(getUrl()).contains('/oauth/authorize')
2018-03-01 07:45:42 +01:00
.click(authorizeInput)
2018-02-20 03:24:22 +01:00
.expect(getUrl()).eql('http://localhost:4002/')
}
2018-02-20 02:18:40 +01:00
test('Cannot log in to a fake instance', async t => {
await sleep(500)
2018-03-07 08:57:06 +01:00
await t.click(logInToInstanceLink)
2018-02-20 02:18:40 +01:00
.expect(getUrl()).contains('/settings/instances/add')
2018-03-01 07:45:42 +01:00
.typeText(instanceInput, 'fake.nolanlawson.com', {paste: true})
2018-04-21 22:06:46 +02:00
.click(addInstanceButton)
2018-02-20 02:04:37 +01:00
.expect(formError.exists).ok()
.expect(formError.innerText).contains('Is this a valid Mastodon instance?')
2018-03-01 07:45:42 +01:00
.typeText(instanceInput, '.biz', {paste: true})
2018-02-20 02:04:37 +01:00
.expect(formError.exists).notOk()
2018-03-01 07:45:42 +01:00
.typeText(instanceInput, 'fake.nolanlawson.com', {paste: true, replace: true})
2018-02-20 02:04:37 +01:00
.expect(formError.exists).ok()
.expect(formError.innerText).contains('Is this a valid Mastodon instance?')
})
2018-03-01 07:45:42 +01:00
test('Logs in and logs out of localhost:3000', async t => {
await sleep(500)
2018-02-20 03:24:22 +01:00
await manualLogin(t, 'foobar@localhost:3000', 'foobarfoobar')
2018-03-04 21:46:46 +01:00
.expect(getUrl()).eql('http://localhost:4002/')
.hover(getFirstVisibleStatus())
2018-02-20 02:04:37 +01:00
.expect($('article.status-article').exists).ok()
.click(settingsButton)
.click($('a').withText('Instances'))
.click($('a').withText('localhost:3000'))
.expect(getUrl()).contains('/settings/instances/localhost:3000')
2018-02-25 23:06:36 +01:00
.expect($('.instance-name-h1').innerText).eql('localhost:3000')
.expect($('.acct-handle').innerText).eql('@foobar')
.expect($('.acct-display-name').innerText).eql('foobar')
2018-02-20 02:04:37 +01:00
.click($('button').withText('Log out'))
2018-04-01 07:08:24 +02:00
.click($('.modal-dialog button').withText('OK'))
2018-02-20 02:04:37 +01:00
.expect($('.container').innerText)
.contains("You're not logged in to any instances")
2018-02-20 03:25:59 +01:00
})