kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
175 wiersze
5.4 KiB
JavaScript
175 wiersze
5.4 KiB
JavaScript
var sinon = require('sinon')
|
|
import {expect} from 'chai'
|
|
|
|
import moxios from 'moxios'
|
|
import store from '@/store/auth'
|
|
|
|
import { testAction } from '../../utils'
|
|
|
|
describe('store/auth', () => {
|
|
var sandbox
|
|
|
|
beforeEach(function () {
|
|
sandbox = sinon.createSandbox()
|
|
moxios.install()
|
|
})
|
|
afterEach(function () {
|
|
sandbox.restore()
|
|
moxios.uninstall()
|
|
})
|
|
|
|
describe('mutations', () => {
|
|
it('profile', () => {
|
|
const state = {}
|
|
store.mutations.profile(state, {})
|
|
expect(state.profile).to.deep.equal({})
|
|
})
|
|
it('username', () => {
|
|
const state = {}
|
|
store.mutations.username(state, 'world')
|
|
expect(state.username).to.equal('world')
|
|
})
|
|
it('authenticated true', () => {
|
|
const state = {}
|
|
store.mutations.authenticated(state, true)
|
|
expect(state.authenticated).to.equal(true)
|
|
})
|
|
it('authenticated false', () => {
|
|
const state = {
|
|
username: 'dummy',
|
|
token: 'dummy',
|
|
profile: 'dummy',
|
|
availablePermissions: 'dummy'
|
|
}
|
|
store.mutations.authenticated(state, false)
|
|
expect(state.authenticated).to.equal(false)
|
|
expect(state.username).to.equal(null)
|
|
expect(state.token).to.equal(null)
|
|
expect(state.profile).to.equal(null)
|
|
expect(state.availablePermissions).to.deep.equal({})
|
|
})
|
|
it('token null', () => {
|
|
const state = {}
|
|
store.mutations.token(state, null)
|
|
expect(state.token).to.equal(null)
|
|
})
|
|
it('token real', () => {
|
|
const state = {}
|
|
let token = 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2p3dC1pZHAuZXhhbXBsZS5jb20iLCJzdWIiOiJtYWlsdG86bWlrZUBleGFtcGxlLmNvbSIsIm5iZiI6MTUxNTUzMzQyOSwiZXhwIjoxNTE1NTM3MDI5LCJpYXQiOjE1MTU1MzM0MjksImp0aSI6ImlkMTIzNDU2IiwidHlwIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS9yZWdpc3RlciJ9.'
|
|
store.mutations.token(state, token)
|
|
expect(state.token).to.equal(token)
|
|
})
|
|
it('permissions', () => {
|
|
const state = { availablePermissions: {} }
|
|
store.mutations.permission(state, {key: 'admin', status: true})
|
|
expect(state.availablePermissions).to.deep.equal({admin: true})
|
|
})
|
|
})
|
|
describe('getters', () => {
|
|
it('header', () => {
|
|
const state = { oauth: {accessToken: 'helloworld' }}
|
|
expect(store.getters['header'](state)).to.equal('Bearer helloworld')
|
|
})
|
|
})
|
|
describe('actions', () => {
|
|
it('logout', () => {
|
|
testAction({
|
|
action: store.actions.logout,
|
|
params: {state: {}},
|
|
expectedMutations: [
|
|
{ type: 'auth/reset', payload: null, options: {root: true} },
|
|
{ type: 'favorites/reset', payload: null, options: {root: true} },
|
|
{ type: 'player/reset', payload: null, options: {root: true} },
|
|
{ type: 'playlists/reset', payload: null, options: {root: true} },
|
|
{ type: 'queue/reset', payload: null, options: {root: true} },
|
|
{ type: 'radios/reset', payload: null, options: {root: true} }
|
|
]
|
|
})
|
|
})
|
|
it('check jwt null', () => {
|
|
testAction({
|
|
action: store.actions.check,
|
|
params: {state: {}},
|
|
expectedMutations: [
|
|
{ type: 'authenticated', payload: false },
|
|
{ type: 'authenticated', payload: true },
|
|
],
|
|
expectedActions: [
|
|
{ type: 'fetchProfile' },
|
|
]
|
|
})
|
|
})
|
|
it('login success', () => {
|
|
moxios.stubRequest('token/', {
|
|
status: 200,
|
|
response: {
|
|
token: 'test'
|
|
}
|
|
})
|
|
const credentials = {
|
|
username: 'bob'
|
|
}
|
|
testAction({
|
|
action: store.actions.login,
|
|
payload: {credentials: credentials},
|
|
expectedMutations: [
|
|
{ type: 'token', payload: 'test' }
|
|
],
|
|
expectedActions: [
|
|
{ type: 'fetchProfile' }
|
|
]
|
|
})
|
|
})
|
|
it('login error', () => {
|
|
moxios.stubRequest('token/', {
|
|
status: 500,
|
|
response: {
|
|
token: 'test'
|
|
}
|
|
})
|
|
const credentials = {
|
|
username: 'bob'
|
|
}
|
|
let spy = sandbox.spy()
|
|
testAction({
|
|
action: store.actions.login,
|
|
payload: {credentials: credentials, onError: spy}
|
|
}, () => {
|
|
expect(spy.calledOnce).to.equal(true)
|
|
done() // eslint-disable-line no-undef
|
|
})
|
|
})
|
|
it('fetchProfile', () => {
|
|
const profile = {
|
|
username: 'bob',
|
|
permissions: {
|
|
admin: true
|
|
}
|
|
}
|
|
moxios.stubRequest('users/me/', {
|
|
status: 200,
|
|
response: profile
|
|
})
|
|
testAction({
|
|
action: store.actions.fetchProfile,
|
|
expectedMutations: [
|
|
{ type: 'authenticated', payload: true },
|
|
{ type: 'profile', payload: profile },
|
|
{ type: 'username', payload: profile.username },
|
|
{ type: 'permission', payload: {key: 'admin', status: true} }
|
|
],
|
|
expectedActions: [
|
|
{ type: 'ui/initSettings', payload: { root: true } },
|
|
{ type: 'updateProfile', payload: profile },
|
|
{ type: 'ui/fetchUnreadNotifications', payload: null },
|
|
{ type: 'favorites/fetch', payload: null, options: {root: true} },
|
|
{ type: 'channels/fetchSubscriptions', payload: null, options: {root: true} },
|
|
{ type: 'libraries/fetchFollows', payload: null, options: {root: true} },
|
|
{ type: 'moderation/fetchContentFilters', payload: null, options: {root: true} },
|
|
{ type: 'playlists/fetchOwn', payload: null, options: {root: true} }
|
|
]
|
|
})
|
|
})
|
|
})
|
|
})
|