Add ability for auth plugins to hook tokens validity

This commit is contained in:
Chocobozzz
2020-04-24 11:33:01 +02:00
committed by Chocobozzz
parent e1c5503114
commit e307e4fce3
16 changed files with 298 additions and 132 deletions

View File

@@ -10,14 +10,21 @@ import {
setAccessTokensToServers,
uninstallPlugin,
updateMyUser,
userLogin
userLogin,
wait,
login, refreshToken
} from '../../../shared/extra-utils'
import { User, UserRole } from '@shared/models'
import { expect } from 'chai'
describe('Test id and pass auth plugins', function () {
let server: ServerInfo
let crashToken: string
let crashAccessToken: string
let crashRefreshToken: string
let lagunaAccessToken: string
let lagunaRefreshToken: string
before(async function () {
this.timeout(30000)
@@ -50,36 +57,64 @@ describe('Test id and pass auth plugins', function () {
})
it('Should login Crash, create the user and use the token', async function () {
crashToken = await userLogin(server, { username: 'crash', password: 'crash password' })
{
const res = await login(server.url, server.client, { username: 'crash', password: 'crash password' })
crashAccessToken = res.body.access_token
crashRefreshToken = res.body.refresh_token
}
const res = await getMyUserInformation(server.url, crashToken)
{
const res = await getMyUserInformation(server.url, crashAccessToken)
const body: User = res.body
expect(body.username).to.equal('crash')
expect(body.account.displayName).to.equal('Crash Bandicoot')
expect(body.role).to.equal(UserRole.MODERATOR)
const body: User = res.body
expect(body.username).to.equal('crash')
expect(body.account.displayName).to.equal('Crash Bandicoot')
expect(body.role).to.equal(UserRole.MODERATOR)
}
})
it('Should login the first Laguna, create the user and use the token', async function () {
const accessToken = await userLogin(server, { username: 'laguna', password: 'laguna password' })
{
const res = await login(server.url, server.client, { username: 'laguna', password: 'laguna password' })
lagunaAccessToken = res.body.access_token
lagunaRefreshToken = res.body.refresh_token
}
const res = await getMyUserInformation(server.url, accessToken)
{
const res = await getMyUserInformation(server.url, lagunaAccessToken)
const body: User = res.body
expect(body.username).to.equal('laguna')
expect(body.account.displayName).to.equal('laguna')
expect(body.role).to.equal(UserRole.USER)
const body: User = res.body
expect(body.username).to.equal('laguna')
expect(body.account.displayName).to.equal('laguna')
expect(body.role).to.equal(UserRole.USER)
}
})
it('Should refresh crash token, but not laguna token', async function () {
{
const resRefresh = await refreshToken(server, crashRefreshToken)
crashAccessToken = resRefresh.body.access_token
crashRefreshToken = resRefresh.body.refresh_token
const res = await getMyUserInformation(server.url, crashAccessToken)
const user: User = res.body
expect(user.username).to.equal('crash')
}
{
await refreshToken(server, lagunaRefreshToken, 400)
}
})
it('Should update Crash profile', async function () {
await updateMyUser({
url: server.url,
accessToken: crashToken,
accessToken: crashAccessToken,
displayName: 'Beautiful Crash',
description: 'Mutant eastern barred bandicoot'
})
const res = await getMyUserInformation(server.url, crashToken)
const res = await getMyUserInformation(server.url, crashAccessToken)
const body: User = res.body
expect(body.account.displayName).to.equal('Beautiful Crash')
@@ -87,19 +122,19 @@ describe('Test id and pass auth plugins', function () {
})
it('Should logout Crash', async function () {
await logout(server.url, crashToken)
await logout(server.url, crashAccessToken)
})
it('Should have logged out Crash', async function () {
await getMyUserInformation(server.url, crashToken, 401)
await waitUntilLog(server, 'On logout for auth 1 - 2')
await getMyUserInformation(server.url, crashAccessToken, 401)
})
it('Should login Crash and keep the old existing profile', async function () {
crashToken = await userLogin(server, { username: 'crash', password: 'crash password' })
crashAccessToken = await userLogin(server, { username: 'crash', password: 'crash password' })
const res = await getMyUserInformation(server.url, crashToken)
const res = await getMyUserInformation(server.url, crashAccessToken)
const body: User = res.body
expect(body.username).to.equal('crash')
@@ -108,6 +143,14 @@ describe('Test id and pass auth plugins', function () {
expect(body.role).to.equal(UserRole.MODERATOR)
})
it('Should correctly auth token of laguna', async function () {
this.timeout(10000)
await wait(5000)
await getMyUserInformation(server.url, lagunaAccessToken, 401)
})
it('Should uninstall the plugin one and do not login existing Crash', async function () {
await uninstallPlugin({
url: server.url,