first commit
This commit is contained in:
121
ui/src/state/modules/auth.unit.js
Normal file
121
ui/src/state/modules/auth.unit.js
Normal file
@@ -0,0 +1,121 @@
|
||||
import axios from 'axios'
|
||||
import * as authModule from './auth'
|
||||
|
||||
describe('@state/modules/auth', () => {
|
||||
it('exports a valid Vuex module', () => {
|
||||
expect(authModule).toBeAVuexModule()
|
||||
})
|
||||
|
||||
describe('in a store', () => {
|
||||
let store
|
||||
beforeEach(() => {
|
||||
store = createModuleStore(authModule)
|
||||
window.localStorage.clear()
|
||||
})
|
||||
|
||||
it('mutations.SET_CURRENT_USER correctly sets axios default authorization header', () => {
|
||||
axios.defaults.headers.common.Authorization = ''
|
||||
|
||||
store.commit('SET_CURRENT_USER', { token: 'some-token' })
|
||||
expect(axios.defaults.headers.common.Authorization).toEqual('some-token')
|
||||
|
||||
store.commit('SET_CURRENT_USER', null)
|
||||
expect(axios.defaults.headers.common.Authorization).toEqual('')
|
||||
})
|
||||
|
||||
it('mutations.SET_CURRENT_USER correctly saves currentUser in localStorage', () => {
|
||||
let savedCurrentUser = JSON.parse(
|
||||
window.localStorage.getItem('auth.currentUser')
|
||||
)
|
||||
expect(savedCurrentUser).toEqual(null)
|
||||
|
||||
const expectedCurrentUser = { token: 'some-token' }
|
||||
store.commit('SET_CURRENT_USER', expectedCurrentUser)
|
||||
|
||||
savedCurrentUser = JSON.parse(
|
||||
window.localStorage.getItem('auth.currentUser')
|
||||
)
|
||||
expect(savedCurrentUser).toEqual(expectedCurrentUser)
|
||||
})
|
||||
|
||||
it('getters.loggedIn returns true when currentUser is an object', () => {
|
||||
store.commit('SET_CURRENT_USER', {})
|
||||
expect(store.getters.loggedIn).toEqual(true)
|
||||
})
|
||||
|
||||
it('getters.loggedIn returns false when currentUser is null', () => {
|
||||
store.commit('SET_CURRENT_USER', null)
|
||||
expect(store.getters.loggedIn).toEqual(false)
|
||||
})
|
||||
|
||||
it('actions.logIn resolves to a refreshed currentUser when already logged in', () => {
|
||||
expect.assertions(2)
|
||||
|
||||
store.commit('SET_CURRENT_USER', { token: validUserExample.token })
|
||||
return store.dispatch('logIn').then((user) => {
|
||||
expect(user).toEqual(validUserExample)
|
||||
expect(store.state.currentUser).toEqual(validUserExample)
|
||||
})
|
||||
})
|
||||
|
||||
it('actions.logIn commits the currentUser and resolves to the user when NOT already logged in and provided a correct username and password', () => {
|
||||
expect.assertions(2)
|
||||
|
||||
return store
|
||||
.dispatch('logIn', { username: 'admin', password: 'password' })
|
||||
.then((user) => {
|
||||
expect(user).toEqual(validUserExample)
|
||||
expect(store.state.currentUser).toEqual(validUserExample)
|
||||
})
|
||||
})
|
||||
|
||||
it('actions.logIn rejects with 401 when NOT already logged in and provided an incorrect username and password', () => {
|
||||
expect.assertions(1)
|
||||
|
||||
return store
|
||||
.dispatch('logIn', {
|
||||
username: 'bad username',
|
||||
password: 'bad password',
|
||||
})
|
||||
.catch((error) => {
|
||||
expect(error.message).toEqual('Request failed with status code 401')
|
||||
})
|
||||
})
|
||||
|
||||
it('actions.validate resolves to null when currentUser is null', () => {
|
||||
expect.assertions(1)
|
||||
|
||||
store.commit('SET_CURRENT_USER', null)
|
||||
return store.dispatch('validate').then((user) => {
|
||||
expect(user).toEqual(null)
|
||||
})
|
||||
})
|
||||
|
||||
it('actions.validate resolves to null when currentUser contains an invalid token', () => {
|
||||
expect.assertions(2)
|
||||
|
||||
store.commit('SET_CURRENT_USER', { token: 'invalid-token' })
|
||||
return store.dispatch('validate').then((user) => {
|
||||
expect(user).toEqual(null)
|
||||
expect(store.state.currentUser).toEqual(null)
|
||||
})
|
||||
})
|
||||
|
||||
it('actions.validate resolves to a user when currentUser contains a valid token', () => {
|
||||
expect.assertions(2)
|
||||
|
||||
store.commit('SET_CURRENT_USER', { token: validUserExample.token })
|
||||
return store.dispatch('validate').then((user) => {
|
||||
expect(user).toEqual(validUserExample)
|
||||
expect(store.state.currentUser).toEqual(validUserExample)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
const validUserExample = {
|
||||
id: 1,
|
||||
username: 'admin',
|
||||
name: 'Vue Master',
|
||||
token: 'valid-token-for-admin',
|
||||
}
|
||||
Reference in New Issue
Block a user