-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathresourceScopes.test.ts
More file actions
71 lines (61 loc) · 2.42 KB
/
resourceScopes.test.ts
File metadata and controls
71 lines (61 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { CEDAR_RESOURCE_SCOPES, CEDARLING_CONSTANTS } from '@/cedarling/constants/resourceScopes'
import { ADMIN_UI_RESOURCES } from '@/cedarling/utility'
import type { AdminUiFeatureResource } from '@/cedarling'
import {
JANS_LOCK_READ,
JANS_LOCK_WRITE,
SMTP_READ,
SMTP_WRITE,
SMTP_DELETE,
} from '@/utils/PermChecker'
describe('CEDAR_RESOURCE_SCOPES', () => {
const allResources = Object.keys(ADMIN_UI_RESOURCES) as AdminUiFeatureResource[]
it('has an entry for every AdminUiFeatureResource', () => {
allResources.forEach((resource) => {
expect(CEDAR_RESOURCE_SCOPES).toHaveProperty(resource)
})
})
it('has no extra keys beyond AdminUiFeatureResource', () => {
expect(Object.keys(CEDAR_RESOURCE_SCOPES).sort()).toEqual(allResources.sort())
})
it.each(allResources)('%s has non-empty scope entries', (resource) => {
const scopes = CEDAR_RESOURCE_SCOPES[resource]
expect(Array.isArray(scopes)).toBe(true)
expect(scopes.length).toBeGreaterThan(0)
})
it.each(allResources)('%s scope entries have correct resourceId', (resource) => {
const scopes = CEDAR_RESOURCE_SCOPES[resource]
scopes.forEach((scope) => {
expect(scope.resourceId).toBe(resource)
expect(typeof scope.permission).toBe('string')
expect(scope.permission.length).toBeGreaterThan(0)
})
})
it('Lock has read and write scopes', () => {
const lockScopes = CEDAR_RESOURCE_SCOPES.Lock
expect(lockScopes).toHaveLength(2)
const permissions = lockScopes.map((s) => s.permission)
expect(permissions).toContain(JANS_LOCK_READ)
expect(permissions).toContain(JANS_LOCK_WRITE)
})
it('SMTP has read, write, and delete scopes', () => {
const smtpScopes = CEDAR_RESOURCE_SCOPES.SMTP
expect(smtpScopes).toHaveLength(3)
const permissions = smtpScopes.map((s) => s.permission)
expect(permissions).toContain(SMTP_READ)
expect(permissions).toContain(SMTP_WRITE)
expect(permissions).toContain(SMTP_DELETE)
})
it('Dashboard has 2 stat scopes', () => {
const dashScopes = CEDAR_RESOURCE_SCOPES.Dashboard
expect(dashScopes).toHaveLength(2)
})
})
describe('CEDARLING_CONSTANTS', () => {
it('has ACTION_TYPE with correct prefix', () => {
expect(CEDARLING_CONSTANTS.ACTION_TYPE).toBe('Gluu::Flex::AdminUI::Action::')
})
it('has RESOURCE_TYPE with correct value', () => {
expect(CEDARLING_CONSTANTS.RESOURCE_TYPE).toBe('Gluu::Flex::AdminUI::Resources::Features')
})
})