updateMyUser,
wait,
userLogin,
- updatePluginSettings
+ updatePluginSettings,
+ createUser
} from '../../../shared/extra-utils'
import { cleanupTests, flushAndRunServer, ServerInfo, waitUntilLog } from '../../../shared/extra-utils/server/servers'
username: string
query?: any
statusCodeExpected?: number
+ statusCodeExpectedStep2?: number
}) {
const res = await getExternalAuth({
url: options.server.url,
const resLogin = await loginUsingExternalToken(
options.server,
options.username,
- externalAuthToken as string
+ externalAuthToken as string,
+ options.statusCodeExpectedStep2
)
return resLogin.body
server = await flushAndRunServer(1)
await setAccessTokensToServers([ server ])
- for (const suffix of [ 'one', 'two' ]) {
+ for (const suffix of [ 'one', 'two', 'three' ]) {
await installPlugin({
url: server.url,
accessToken: server.accessToken,
const config: ServerConfig = res.body
const auths = config.plugin.registeredExternalAuths
- expect(auths).to.have.lengthOf(3)
+ expect(auths).to.have.lengthOf(8)
const auth2 = auths.find((a) => a.authName === 'external-auth-2')
expect(auth2).to.exist
expect(body.role).to.equal(UserRole.USER)
})
+ it('Should not update an external auth email', async function () {
+ await updateMyUser({
+ url: server.url,
+ accessToken: cyanAccessToken,
+ email: 'toto@example.com',
+ currentPassword: 'toto',
+ statusCodeExpected: 400
+ })
+ })
+
it('Should reject token of Kefka by the plugin hook', async function () {
this.timeout(10000)
const config: ServerConfig = res.body
const auths = config.plugin.registeredExternalAuths
- expect(auths).to.have.lengthOf(2)
+ expect(auths).to.have.lengthOf(7)
const auth1 = auths.find(a => a.authName === 'external-auth-2')
expect(auth1).to.not.exist
username: 'cyan',
statusCodeExpected: 404
})
+
+ await userLogin(server, { username: 'cyan', password: null }, 400)
+ await userLogin(server, { username: 'cyan', password: '' }, 400)
+ await userLogin(server, { username: 'cyan', password: 'fake' }, 400)
+ })
+
+ it('Should not login kefka with another plugin', async function () {
+ await loginExternal({
+ server,
+ npmName: 'test-external-auth-two',
+ authName: 'external-auth-4',
+ username: 'kefka2',
+ statusCodeExpectedStep2: 400
+ })
+
+ await loginExternal({
+ server,
+ npmName: 'test-external-auth-two',
+ authName: 'external-auth-4',
+ username: 'kefka',
+ statusCodeExpectedStep2: 400
+ })
+ })
+
+ it('Should not login an existing user', async function () {
+ await createUser({
+ url: server.url,
+ accessToken: server.accessToken,
+ username: 'existing_user',
+ password: 'super_password'
+ })
+
+ await loginExternal({
+ server,
+ npmName: 'test-external-auth-two',
+ authName: 'external-auth-6',
+ username: 'existing_user',
+ statusCodeExpectedStep2: 400
+ })
})
it('Should display the correct configuration', async function () {
const config: ServerConfig = res.body
const auths = config.plugin.registeredExternalAuths
- expect(auths).to.have.lengthOf(1)
+ expect(auths).to.have.lengthOf(6)
const auth2 = auths.find((a) => a.authName === 'external-auth-2')
expect(auth2).to.not.exist
after(async function () {
await cleanupTests([ server ])
})
+
+ it('Should forward the redirectUrl if the plugin returns one', async function () {
+ const resLogin = await loginExternal({
+ server,
+ npmName: 'test-external-auth-three',
+ authName: 'external-auth-7',
+ username: 'cid'
+ })
+
+ const resLogout = await logout(server.url, resLogin.access_token)
+
+ expect(resLogout.body.redirectUrl).to.equal('https://example.com/redirectUrl')
+ })
+
+ it('Should call the plugin\'s onLogout method with the request', async function () {
+ const resLogin = await loginExternal({
+ server,
+ npmName: 'test-external-auth-three',
+ authName: 'external-auth-8',
+ username: 'cid'
+ })
+
+ const resLogout = await logout(server.url, resLogin.access_token)
+
+ expect(resLogout.body.redirectUrl).to.equal('https://example.com/redirectUrl?access_token=' + resLogin.access_token)
+ })
})