Add tests for role create and update, refactor user create test

pull/1000/head
Jared Scheib 2017-03-10 16:48:56 -08:00
parent b105f94673
commit b71f1b0cd0
1 changed files with 122 additions and 16 deletions

View File

@ -2,8 +2,11 @@ import reducer from 'src/admin/reducers/admin'
import {
addUser,
addRole,
syncUser,
syncRole,
editUser,
editRole,
loadRoles,
loadPermissions,
deleteRole,
@ -14,15 +17,37 @@ import {
let state = undefined
// Roles
const r1 = {name: 'role1', links: {self: '/chronograf/v1/sources/1/roles/role1'}}
const r2 = {name: 'role2', links: {self: '/chronograf/v1/sources/1/roles/role2'}}
const roles = [r1, r2]
// Users
const u1 = {
name: 'acidburn',
roles: [],
roles: [
{
name: 'hax0r',
permissions: {
allowed: [
'ViewAdmin',
'ViewChronograf',
'CreateDatabase',
'CreateUserAndRole',
'AddRemoveNode',
'DropDatabase',
'DropData',
'ReadData',
'WriteData',
'Rebalance',
'ManageShard',
'ManageContinuousQuery',
'ManageQuery',
'ManageSubscription',
'Monitor',
'CopyShard',
'KapacitorAPI',
'KapacitorConfigAPI'
],
scope: 'all',
},
}
],
permissions: [],
links: {self: '/chronograf/v1/sources/1/users/acidburn'},
}
@ -42,6 +67,50 @@ const newDefaultUser = {
isNew: true,
}
// Roles
const r1 = {
name: 'hax0r',
users: [],
permissions: [
{
allowed: [
'ViewAdmin',
'ViewChronograf',
'CreateDatabase',
'CreateUserAndRole',
'AddRemoveNode',
'DropDatabase',
'DropData',
'ReadData',
'WriteData',
'Rebalance',
'ManageShard',
'ManageContinuousQuery',
'ManageQuery',
'ManageSubscription',
'Monitor',
'CopyShard',
'KapacitorAPI',
'KapacitorConfigAPI'
],
scope: 'all',
},
],
links: {self: '/chronograf/v1/sources/1/roles/hax0r'}
}
const r2 = {
name: 'l33tus3r',
links: {self: '/chronograf/v1/sources/1/roles/l33tus3r'}
}
const roles = [r1, r2]
const newDefaultRole = {
name: '',
users: [],
permissions: [],
links: {self: ''},
isNew: true,
}
// Permissions
const global = {scope: 'all', allowed: ['p1', 'p2']}
const scoped = {scope: 'db1', allowed: ['p1', 'p3']}
@ -67,14 +136,7 @@ describe('Admin.Reducers', () => {
})
it('it can sync a stale user', () => {
const staleUser = {
name: 'acidburn',
password: 'pass1',
roles: [],
permissions: [],
links: {self: ''},
isNew: true,
}
const staleUser = {...u1, roles: []}
state = {users: [u2, staleUser]}
const actual = reducer(state, syncUser(staleUser, u1))
@ -99,6 +161,50 @@ describe('Admin.Reducers', () => {
expect(actual.users).to.deep.equal(expected.users)
})
it('it can add a role', () => {
state = {
roles: [
r1,
]
}
const actual = reducer(state, addRole())
const expected = {
roles: [
{...newDefaultRole, isEditing: true},
r1,
],
}
expect(actual.roles).to.deep.equal(expected.roles)
})
it('it can sync a stale role', () => {
const staleRole = {...r1, permissions: []}
state = {roles: [r2, staleRole]}
const actual = reducer(state, syncRole(staleRole, r1))
const expected = {
roles: [r2, r1],
}
expect(actual.roles).to.deep.equal(expected.roles)
})
it('it can edit a role', () => {
const updates = {name: 'onecool'}
state = {
roles: [r2, r1],
}
const actual = reducer(state, editRole(r2, updates))
const expected = {
roles: [{...r2, ...updates}, r1]
}
expect(actual.roles).to.deep.equal(expected.roles)
})
it('it can load the roles', () => {
const actual = reducer(state, loadRoles({roles}))
const expected = {
@ -138,12 +244,12 @@ describe('Admin.Reducers', () => {
expect(actual.users).to.deep.equal(expected.users)
})
it('can filter roles w/ "1" text', () => {
it('can filter roles w/ "x" text', () => {
state = {
roles,
}
const text = '1'
const text = 'x'
const actual = reducer(state, filterRoles(text))
const expected = {