ede566eed9
* prep for new resources algo * typescriptifying stuff * minor types fix * migrate to resources col * repo & creation updated, WIP processing/retrieval * WIP invite processing * finished finalization refactor * project invite management * transformed all invites services * fixed up projects & core serverinvites resolvers * test fixes * WIP workspace create GQL & test * basic invite creation test works * a buncha working tests * more tests * cancelation tests * minor invite use refactor * invite retrieval tasks * invite use() works as expected * filtering out broken invites * enabled invite retrieval by token irregardless of who is it for * minor adjustments * tests fix * test config improvements * test env adjustment * extra test case * making resource access limits harder to ignore * linter fixes * eventBus type cleanup * better generic names * refactored serverinvites resource migration * fix(server): better error message in project invite edge case
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import { WorkspaceAcl } from '@/modules/workspacesCore/domain/types'
|
|
import { expect } from 'chai'
|
|
import { Roles } from '@speckle/shared'
|
|
import { isUserLastWorkspaceAdmin } from '@/modules/workspaces/helpers/roles'
|
|
|
|
describe('given a workspace with several admins', () => {
|
|
const workspaceRoles: WorkspaceAcl[] = [
|
|
{ workspaceId: 'workspace-id', userId: 'non-admin', role: Roles.Workspace.Member },
|
|
{ workspaceId: 'workspace-id', userId: 'admin-a', role: Roles.Workspace.Admin },
|
|
{ workspaceId: 'workspace-id', userId: 'admin-b', role: Roles.Workspace.Admin }
|
|
]
|
|
|
|
describe('when testing a non-admin user', () => {
|
|
it('should return false', () => {
|
|
expect(isUserLastWorkspaceAdmin(workspaceRoles, 'non-admin')).to.be.false
|
|
})
|
|
})
|
|
|
|
describe('when testing an admin user', () => {
|
|
it('should return false', () => {
|
|
expect(isUserLastWorkspaceAdmin(workspaceRoles, 'admin-a')).to.be.false
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('given a workspace with one admin', () => {
|
|
const workspaceRoles: WorkspaceAcl[] = [
|
|
{ workspaceId: 'workspace-id', userId: 'non-admin', role: Roles.Workspace.Member },
|
|
{ workspaceId: 'workspace-id', userId: 'admin', role: Roles.Workspace.Admin }
|
|
]
|
|
|
|
describe('when testing a non-admin user', () => {
|
|
it('should return false', () => {
|
|
expect(isUserLastWorkspaceAdmin(workspaceRoles, 'non-admin')).to.be.false
|
|
})
|
|
})
|
|
|
|
describe('when testing an admin user', () => {
|
|
it('should return true', () => {
|
|
expect(isUserLastWorkspaceAdmin(workspaceRoles, 'admin')).to.be.true
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('given a workspace', () => {
|
|
const workspaceRoles: WorkspaceAcl[] = [
|
|
{ workspaceId: 'workspace-id', userId: 'non-admin', role: Roles.Workspace.Member },
|
|
{ workspaceId: 'workspace-id', userId: 'admin', role: Roles.Workspace.Admin }
|
|
]
|
|
|
|
describe('when testing a non-workspace user', () => {
|
|
it('should return false', () => {
|
|
expect(isUserLastWorkspaceAdmin(workspaceRoles, 'random-id')).to.be.false
|
|
})
|
|
})
|
|
})
|