UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

68 lines (65 loc) 2.38 kB
import { describe, expect, it } from 'vitest' import { hasAnyWorkspaceRole, hasMinimumWorkspaceRole } from './workspaceRole.js' import cryptoRandomString from 'crypto-random-string' describe('hasAnyWorkspaceRole returns a function, that', () => { it('returns false if the user has no role', async () => { const result = await hasAnyWorkspaceRole({ getWorkspaceRole: async () => null })({ userId: cryptoRandomString({ length: 9 }), workspaceId: cryptoRandomString({ length: 9 }) }) expect(result).toEqual(false) }) it('returns true if the user has a role', async () => { const result = await hasAnyWorkspaceRole({ getWorkspaceRole: async () => 'workspace:member' })({ userId: cryptoRandomString({ length: 9 }), workspaceId: cryptoRandomString({ length: 9 }) }) expect(result).toEqual(true) }) }) describe('requireMinimumWorkspaceRole returns a function, that', () => { it('turns non existing workspace role into false ', async () => { const result = await hasMinimumWorkspaceRole({ getWorkspaceRole: async () => null })({ userId: cryptoRandomString({ length: 10 }), workspaceId: cryptoRandomString({ length: 10 }), role: 'workspace:member' }) expect(result).toEqual(false) }) it('returns false if user is below target role', async () => { const result = await hasMinimumWorkspaceRole({ getWorkspaceRole: async () => 'workspace:member' })({ userId: cryptoRandomString({ length: 10 }), workspaceId: cryptoRandomString({ length: 10 }), role: 'workspace:admin' }) expect(result).toEqual(false) }) it('returns true if user matches target role', async () => { const result = await hasMinimumWorkspaceRole({ getWorkspaceRole: async () => 'workspace:member' })({ userId: cryptoRandomString({ length: 10 }), workspaceId: cryptoRandomString({ length: 10 }), role: 'workspace:member' }) expect(result).toEqual(true) }) it('returns true if user exceeds target role', async () => { const result = await hasMinimumWorkspaceRole({ getWorkspaceRole: async () => 'workspace:admin' })({ userId: cryptoRandomString({ length: 10 }), workspaceId: cryptoRandomString({ length: 10 }), role: 'workspace:member' }) expect(result).toEqual(true) }) })