}
})
}
+
+ {
+ const result = registerExternalAuth({
+ authName: 'external-auth-4',
+ authDisplayName: () => 'External Auth 4',
+ onAuthRequest: (req, res) => {
+ result.userAuthenticated({
+ req,
+ res,
+ username: 'kefka2',
+ email: 'kefka@example.com',
+ displayName: 'Kefka duplication'
+ })
+ }
+ })
+ }
+
+ {
+ const result = registerExternalAuth({
+ authName: 'external-auth-5',
+ authDisplayName: () => 'External Auth 5',
+ onAuthRequest: (req, res) => {
+ result.userAuthenticated({
+ req,
+ res,
+ username: 'kefka',
+ email: 'kefka@example.com',
+ displayName: 'Kefka duplication'
+ })
+ }
+ })
+ }
+
+ {
+ const result = registerExternalAuth({
+ authName: 'external-auth-6',
+ authDisplayName: () => 'External Auth 6',
+ onAuthRequest: (req, res) => {
+ result.userAuthenticated({
+ req,
+ res,
+ username: 'existing_user',
+ email: 'existing_user@example.com',
+ displayName: 'Existing user'
+ })
+ }
+ })
+ }
}
async function unregister () {
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
const config: ServerConfig = res.body
const auths = config.plugin.registeredExternalAuths
- expect(auths).to.have.lengthOf(3)
+ expect(auths).to.have.lengthOf(6)
const auth2 = auths.find((a) => a.authName === 'external-auth-2')
expect(auth2).to.exist
const config: ServerConfig = res.body
const auths = config.plugin.registeredExternalAuths
- expect(auths).to.have.lengthOf(2)
+ expect(auths).to.have.lengthOf(5)
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(4)
const auth2 = auths.find((a) => a.authName === 'external-auth-2')
expect(auth2).to.not.exist