@api-client/core 0.18.47 → 0.18.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/mocking/ModelingMock.d.ts +2 -0
- package/build/src/mocking/ModelingMock.d.ts.map +1 -1
- package/build/src/mocking/ModelingMock.js +2 -0
- package/build/src/mocking/ModelingMock.js.map +1 -1
- package/build/src/mocking/lib/File.d.ts +1 -0
- package/build/src/mocking/lib/File.d.ts.map +1 -1
- package/build/src/mocking/lib/File.js +1 -0
- package/build/src/mocking/lib/File.js.map +1 -1
- package/build/src/mocking/lib/Permission.d.ts +35 -0
- package/build/src/mocking/lib/Permission.d.ts.map +1 -0
- package/build/src/mocking/lib/Permission.js +89 -0
- package/build/src/mocking/lib/Permission.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/data/models/example-generator-api.json +12 -12
- package/package.json +2 -2
- package/src/mocking/ModelingMock.ts +2 -0
- package/src/mocking/lib/File.ts +1 -0
- package/src/mocking/lib/Permission.ts +100 -0
- package/tests/unit/mocking/current/Permission.spec.ts +285 -0
|
@@ -42062,10 +42062,10 @@
|
|
|
42062
42062
|
"@id": "#209"
|
|
42063
42063
|
},
|
|
42064
42064
|
{
|
|
42065
|
-
"@id": "#
|
|
42065
|
+
"@id": "#206"
|
|
42066
42066
|
},
|
|
42067
42067
|
{
|
|
42068
|
-
"@id": "#
|
|
42068
|
+
"@id": "#191"
|
|
42069
42069
|
},
|
|
42070
42070
|
{
|
|
42071
42071
|
"@id": "#194"
|
|
@@ -42074,10 +42074,10 @@
|
|
|
42074
42074
|
"@id": "#197"
|
|
42075
42075
|
},
|
|
42076
42076
|
{
|
|
42077
|
-
"@id": "#
|
|
42077
|
+
"@id": "#200"
|
|
42078
42078
|
},
|
|
42079
42079
|
{
|
|
42080
|
-
"@id": "#
|
|
42080
|
+
"@id": "#203"
|
|
42081
42081
|
},
|
|
42082
42082
|
{
|
|
42083
42083
|
"@id": "#209"
|
|
@@ -43436,7 +43436,7 @@
|
|
|
43436
43436
|
"doc:ExternalDomainElement",
|
|
43437
43437
|
"doc:DomainElement"
|
|
43438
43438
|
],
|
|
43439
|
-
"doc:raw": "
|
|
43439
|
+
"doc:raw": "addressType: 'REGISTERED-OFFICE-ADDRESS'\nstreetName: 'UITBREIDINGSTRAAT'\nhouseNumber: '84'\nhouseNumberAddition: '/1'\npostalCode: '2600'\ncity: 'BERCHEM (ANTWERPEN)'\ncountry: 'Belgium'\ncountryCode: 'BE'\nfullFormatedAddress: \"UITBREIDINGSTRAAT 84 /1, 2600 BERCHEM (ANTWERPEN), BELIUM\"\n",
|
|
43440
43440
|
"core:mediaType": "application/yaml",
|
|
43441
43441
|
"sourcemaps:sources": [
|
|
43442
43442
|
{
|
|
@@ -43499,7 +43499,7 @@
|
|
|
43499
43499
|
"doc:ExternalDomainElement",
|
|
43500
43500
|
"doc:DomainElement"
|
|
43501
43501
|
],
|
|
43502
|
-
"doc:raw": "
|
|
43502
|
+
"doc:raw": "code: 'J'\ndescription: 'Information and communication'\n",
|
|
43503
43503
|
"core:mediaType": "application/yaml",
|
|
43504
43504
|
"sourcemaps:sources": [
|
|
43505
43505
|
{
|
|
@@ -43520,7 +43520,7 @@
|
|
|
43520
43520
|
"doc:ExternalDomainElement",
|
|
43521
43521
|
"doc:DomainElement"
|
|
43522
43522
|
],
|
|
43523
|
-
"doc:raw": "code: '
|
|
43523
|
+
"doc:raw": "code: '7487'\ndescription: 'Financial and insurance activities'\ntype: \"PRIMARY\"\nclassificationCode: 'BE_NACEBEL2008'\nactivityGroupCode: 'ABCDE'\n",
|
|
43524
43524
|
"core:mediaType": "application/yaml",
|
|
43525
43525
|
"sourcemaps:sources": [
|
|
43526
43526
|
{
|
|
@@ -43541,7 +43541,7 @@
|
|
|
43541
43541
|
"doc:ExternalDomainElement",
|
|
43542
43542
|
"doc:DomainElement"
|
|
43543
43543
|
],
|
|
43544
|
-
"doc:raw": "
|
|
43544
|
+
"doc:raw": "countryCode: \"BE\"\ngraydonEnterpriseId: 1057155523\nregistrationId: \"0422319093\"\nvatNumber: \"BE0422319093\"\ngraydonCompanyId: \"0422319093\"\nisBranchOffice: false\n",
|
|
43545
43545
|
"core:mediaType": "application/yaml",
|
|
43546
43546
|
"sourcemaps:sources": [
|
|
43547
43547
|
{
|
|
@@ -44756,7 +44756,7 @@
|
|
|
44756
44756
|
{
|
|
44757
44757
|
"@id": "#193/source-map/lexical/element_0",
|
|
44758
44758
|
"sourcemaps:element": "amf://id#193",
|
|
44759
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44759
|
+
"sourcemaps:value": "[(1,0)-(10,0)]"
|
|
44760
44760
|
},
|
|
44761
44761
|
{
|
|
44762
44762
|
"@id": "#196/source-map/lexical/element_0",
|
|
@@ -44771,17 +44771,17 @@
|
|
|
44771
44771
|
{
|
|
44772
44772
|
"@id": "#202/source-map/lexical/element_0",
|
|
44773
44773
|
"sourcemaps:element": "amf://id#202",
|
|
44774
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44774
|
+
"sourcemaps:value": "[(1,0)-(3,0)]"
|
|
44775
44775
|
},
|
|
44776
44776
|
{
|
|
44777
44777
|
"@id": "#205/source-map/lexical/element_0",
|
|
44778
44778
|
"sourcemaps:element": "amf://id#205",
|
|
44779
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44779
|
+
"sourcemaps:value": "[(1,0)-(6,0)]"
|
|
44780
44780
|
},
|
|
44781
44781
|
{
|
|
44782
44782
|
"@id": "#208/source-map/lexical/element_0",
|
|
44783
44783
|
"sourcemaps:element": "amf://id#208",
|
|
44784
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44784
|
+
"sourcemaps:value": "[(1,0)-(7,0)]"
|
|
44785
44785
|
},
|
|
44786
44786
|
{
|
|
44787
44787
|
"@id": "#223/source-map/lexical/element_0",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@api-client/core",
|
|
3
3
|
"description": "The API Client's core client library. Works in NodeJS and in a ES enabled browser.",
|
|
4
|
-
"version": "0.18.
|
|
4
|
+
"version": "0.18.48",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"exports": {
|
|
7
7
|
"./browser.js": {
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"@japa/assert": "^4.0.1",
|
|
114
114
|
"@japa/browser-client": "^2.1.1",
|
|
115
115
|
"@japa/expect-type": "^2.0.3",
|
|
116
|
-
"@japa/runner": "^
|
|
116
|
+
"@japa/runner": "^5.3.0",
|
|
117
117
|
"@pawel-up/semver": "^0.1.4",
|
|
118
118
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
119
119
|
"@types/chai-as-promised": "^8.0.2",
|
|
@@ -7,6 +7,7 @@ import { Invitation } from './lib/Invitation.js'
|
|
|
7
7
|
import { Trash } from './lib/Trash.js'
|
|
8
8
|
import { Patch } from './lib/Patch.js'
|
|
9
9
|
import { DataCatalog } from './lib/DataCatalog.js'
|
|
10
|
+
import { Permission } from './lib/Permission.js'
|
|
10
11
|
|
|
11
12
|
export class ModelingMock {
|
|
12
13
|
faker: Faker = faker
|
|
@@ -18,4 +19,5 @@ export class ModelingMock {
|
|
|
18
19
|
trash = new Trash()
|
|
19
20
|
patch = new Patch()
|
|
20
21
|
dataCatalog = new DataCatalog()
|
|
22
|
+
permission = new Permission()
|
|
21
23
|
}
|
package/src/mocking/lib/File.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { nanoid } from '../../nanoid.js'
|
|
|
6
6
|
export class File {
|
|
7
7
|
/**
|
|
8
8
|
* Generates a random file object.
|
|
9
|
+
* Note that this generator doesn't create the permissions object. Use Permission class for that.
|
|
9
10
|
* @param init Optional values to be present in the object.
|
|
10
11
|
* @returns Random file
|
|
11
12
|
*/
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { faker } from '@faker-js/faker'
|
|
2
|
+
import { nanoid } from '../../nanoid.js'
|
|
3
|
+
import {
|
|
4
|
+
IPermission,
|
|
5
|
+
Kind as PermissionKind,
|
|
6
|
+
type PermissionRole,
|
|
7
|
+
type PermissionType,
|
|
8
|
+
type PermissionSourceRule,
|
|
9
|
+
} from '../../models/store/Permission.js'
|
|
10
|
+
|
|
11
|
+
export class Permission {
|
|
12
|
+
/**
|
|
13
|
+
* Generates a random permission object.
|
|
14
|
+
* @param init Configuration options for the permission object.
|
|
15
|
+
* @returns Random permission
|
|
16
|
+
*/
|
|
17
|
+
permission(init: Partial<IPermission> = {}): IPermission {
|
|
18
|
+
const type = init.type ?? faker.helpers.arrayElement(['user', 'group', 'organization'] as PermissionType[])
|
|
19
|
+
const role = init.role ?? faker.helpers.arrayElement(['reader', 'commenter', 'writer', 'owner'] as PermissionRole[])
|
|
20
|
+
|
|
21
|
+
const result: IPermission = {
|
|
22
|
+
kind: PermissionKind,
|
|
23
|
+
key: init.key ?? nanoid(),
|
|
24
|
+
type,
|
|
25
|
+
granteeId: init.granteeId ?? nanoid(),
|
|
26
|
+
itemId: init.itemId ?? nanoid(),
|
|
27
|
+
role,
|
|
28
|
+
addingUser: init.addingUser ?? nanoid(),
|
|
29
|
+
depth: init.depth ?? 0,
|
|
30
|
+
sourceRule:
|
|
31
|
+
init.sourceRule ??
|
|
32
|
+
faker.helpers.arrayElement([
|
|
33
|
+
'direct_user_grant',
|
|
34
|
+
'creator_default_owner',
|
|
35
|
+
'parent_owner_editor_rule',
|
|
36
|
+
] as PermissionSourceRule[]),
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if ('displayName' in init) {
|
|
40
|
+
result.displayName = init.displayName
|
|
41
|
+
} else {
|
|
42
|
+
if (type === 'user') {
|
|
43
|
+
result.displayName = faker.person.fullName()
|
|
44
|
+
} else if (type === 'group') {
|
|
45
|
+
result.displayName = faker.lorem.word()
|
|
46
|
+
} else if (type === 'organization') {
|
|
47
|
+
result.displayName = faker.company.name()
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if ('expirationTime' in init) {
|
|
52
|
+
result.expirationTime = init.expirationTime
|
|
53
|
+
} else if (type === 'user' || type === 'group') {
|
|
54
|
+
result.expirationTime = faker.date.future().getTime()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return result
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Generates a random user permission object.
|
|
62
|
+
* @param init Configuration options for the permission object.
|
|
63
|
+
* @returns Random user permission
|
|
64
|
+
*/
|
|
65
|
+
userPermission(init: Partial<IPermission> = {}): IPermission {
|
|
66
|
+
return this.permission({ ...init, type: 'user' })
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Generates a random group permission object.
|
|
71
|
+
* @param init Configuration options for the permission object.
|
|
72
|
+
* @returns Random group permission
|
|
73
|
+
*/
|
|
74
|
+
groupPermission(init: Partial<IPermission> = {}): IPermission {
|
|
75
|
+
return this.permission({ ...init, type: 'group' })
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Generates a random organization permission object.
|
|
80
|
+
* @param init Configuration options for the permission object.
|
|
81
|
+
* @returns Random organization permission
|
|
82
|
+
*/
|
|
83
|
+
organizationPermission(init: Partial<IPermission> = {}): IPermission {
|
|
84
|
+
return this.permission({ ...init, type: 'organization' })
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Generates a list of random permission objects.
|
|
89
|
+
* @param size The size of the returning array. Default is 25.
|
|
90
|
+
* @param init Configuration options for the permission object.
|
|
91
|
+
* @returns List of random permissions
|
|
92
|
+
*/
|
|
93
|
+
permissions(size = 25, init: Partial<IPermission> = {}): IPermission[] {
|
|
94
|
+
const result: IPermission[] = []
|
|
95
|
+
for (let i = 0; i < size; i++) {
|
|
96
|
+
result.push(this.permission(init))
|
|
97
|
+
}
|
|
98
|
+
return result
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { test } from '@japa/runner'
|
|
2
|
+
import { Permission } from '../../../../src/mocking/lib/Permission.js'
|
|
3
|
+
import { Kind as PermissionKind } from '../../../../src/models/store/Permission.js'
|
|
4
|
+
import type { IPermission } from '../../../../src/models/store/Permission.js'
|
|
5
|
+
|
|
6
|
+
test.group('permission()', (group) => {
|
|
7
|
+
let permission: Permission
|
|
8
|
+
|
|
9
|
+
group.each.setup(() => {
|
|
10
|
+
permission = new Permission()
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
test('returns an object', ({ assert }) => {
|
|
14
|
+
const result = permission.permission()
|
|
15
|
+
assert.typeOf(result, 'object')
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test('has the {property} property of a type {type}')
|
|
19
|
+
.with([
|
|
20
|
+
{ property: 'kind', type: 'string' },
|
|
21
|
+
{ property: 'key', type: 'string' },
|
|
22
|
+
{ property: 'type', type: 'string' },
|
|
23
|
+
{ property: 'granteeId', type: 'string' },
|
|
24
|
+
{ property: 'itemId', type: 'string' },
|
|
25
|
+
{ property: 'role', type: 'string' },
|
|
26
|
+
{ property: 'addingUser', type: 'string' },
|
|
27
|
+
{ property: 'depth', type: 'number' },
|
|
28
|
+
{ property: 'sourceRule', type: 'string' },
|
|
29
|
+
])
|
|
30
|
+
.run(({ assert }, { property, type }) => {
|
|
31
|
+
const result = permission.permission()
|
|
32
|
+
assert.typeOf(result[property as keyof IPermission], type)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
test('has the correct kind', ({ assert }) => {
|
|
36
|
+
const result = permission.permission()
|
|
37
|
+
assert.equal(result.kind, PermissionKind)
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
test('type is one of the valid values', ({ assert }) => {
|
|
41
|
+
const result = permission.permission()
|
|
42
|
+
assert.include(['user', 'group', 'organization'], result.type)
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
test('role is one of the valid values', ({ assert }) => {
|
|
46
|
+
const result = permission.permission()
|
|
47
|
+
assert.include(['reader', 'commenter', 'writer', 'owner'], result.role)
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
test('sourceRule is one of the valid values', ({ assert }) => {
|
|
51
|
+
const result = permission.permission()
|
|
52
|
+
assert.include(['direct_user_grant', 'creator_default_owner', 'parent_owner_editor_rule'], result.sourceRule)
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
test('uses passed key', ({ assert }) => {
|
|
56
|
+
const result = permission.permission({ key: 'custom-key' })
|
|
57
|
+
assert.equal(result.key, 'custom-key')
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
test('uses passed type', ({ assert }) => {
|
|
61
|
+
const result = permission.permission({ type: 'group' })
|
|
62
|
+
assert.equal(result.type, 'group')
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
test('uses passed granteeId', ({ assert }) => {
|
|
66
|
+
const result = permission.permission({ granteeId: 'grantee-123' })
|
|
67
|
+
assert.equal(result.granteeId, 'grantee-123')
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
test('uses passed itemId', ({ assert }) => {
|
|
71
|
+
const result = permission.permission({ itemId: 'item-456' })
|
|
72
|
+
assert.equal(result.itemId, 'item-456')
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
test('uses passed role', ({ assert }) => {
|
|
76
|
+
const result = permission.permission({ role: 'writer' })
|
|
77
|
+
assert.equal(result.role, 'writer')
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
test('uses passed addingUser', ({ assert }) => {
|
|
81
|
+
const result = permission.permission({ addingUser: 'user-789' })
|
|
82
|
+
assert.equal(result.addingUser, 'user-789')
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
test('uses passed depth', ({ assert }) => {
|
|
86
|
+
const result = permission.permission({ depth: 2 })
|
|
87
|
+
assert.equal(result.depth, 2)
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
test('uses passed sourceRule', ({ assert }) => {
|
|
91
|
+
const result = permission.permission({ sourceRule: 'creator_default_owner' })
|
|
92
|
+
assert.equal(result.sourceRule, 'creator_default_owner')
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
test('generates displayName by default', ({ assert }) => {
|
|
96
|
+
const result = permission.permission()
|
|
97
|
+
assert.typeOf(result.displayName, 'string')
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
test('uses passed displayName', ({ assert }) => {
|
|
101
|
+
const result = permission.permission({ displayName: 'John Doe' })
|
|
102
|
+
assert.equal(result.displayName, 'John Doe')
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
test('can explicitly set displayName to undefined', ({ assert }) => {
|
|
106
|
+
const result = permission.permission({ displayName: undefined })
|
|
107
|
+
assert.isUndefined(result.displayName)
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
test('generates expirationTime for user type by default', ({ assert }) => {
|
|
111
|
+
const result = permission.permission({ type: 'user' })
|
|
112
|
+
assert.typeOf(result.expirationTime, 'number')
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
test('generates expirationTime for group type by default', ({ assert }) => {
|
|
116
|
+
const result = permission.permission({ type: 'group' })
|
|
117
|
+
assert.typeOf(result.expirationTime, 'number')
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
test('does not generate expirationTime for organization type', ({ assert }) => {
|
|
121
|
+
const result = permission.permission({ type: 'organization' })
|
|
122
|
+
assert.isUndefined(result.expirationTime)
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
test('uses passed expirationTime', ({ assert }) => {
|
|
126
|
+
const time = Date.now() + 86400000
|
|
127
|
+
const result = permission.permission({ expirationTime: time })
|
|
128
|
+
assert.equal(result.expirationTime, time)
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
test('can explicitly set expirationTime to undefined', ({ assert }) => {
|
|
132
|
+
const result = permission.permission({ type: 'user', expirationTime: undefined })
|
|
133
|
+
assert.isUndefined(result.expirationTime)
|
|
134
|
+
})
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
test.group('userPermission()', (group) => {
|
|
138
|
+
let permission: Permission
|
|
139
|
+
|
|
140
|
+
group.each.setup(() => {
|
|
141
|
+
permission = new Permission()
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
test('returns an object', ({ assert }) => {
|
|
145
|
+
const result = permission.userPermission()
|
|
146
|
+
assert.typeOf(result, 'object')
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
test('has type set to user', ({ assert }) => {
|
|
150
|
+
const result = permission.userPermission()
|
|
151
|
+
assert.equal(result.type, 'user')
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
test('has displayName', ({ assert }) => {
|
|
155
|
+
const result = permission.userPermission()
|
|
156
|
+
assert.typeOf(result.displayName, 'string')
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
test('has expirationTime', ({ assert }) => {
|
|
160
|
+
const result = permission.userPermission()
|
|
161
|
+
assert.typeOf(result.expirationTime, 'number')
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
test('uses passed init values', ({ assert }) => {
|
|
165
|
+
const result = permission.userPermission({ role: 'owner', itemId: 'item-123' })
|
|
166
|
+
assert.equal(result.type, 'user')
|
|
167
|
+
assert.equal(result.role, 'owner')
|
|
168
|
+
assert.equal(result.itemId, 'item-123')
|
|
169
|
+
})
|
|
170
|
+
})
|
|
171
|
+
|
|
172
|
+
test.group('groupPermission()', (group) => {
|
|
173
|
+
let permission: Permission
|
|
174
|
+
|
|
175
|
+
group.each.setup(() => {
|
|
176
|
+
permission = new Permission()
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
test('returns an object', ({ assert }) => {
|
|
180
|
+
const result = permission.groupPermission()
|
|
181
|
+
assert.typeOf(result, 'object')
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
test('has type set to group', ({ assert }) => {
|
|
185
|
+
const result = permission.groupPermission()
|
|
186
|
+
assert.equal(result.type, 'group')
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
test('has displayName', ({ assert }) => {
|
|
190
|
+
const result = permission.groupPermission()
|
|
191
|
+
assert.typeOf(result.displayName, 'string')
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
test('has expirationTime', ({ assert }) => {
|
|
195
|
+
const result = permission.groupPermission()
|
|
196
|
+
assert.typeOf(result.expirationTime, 'number')
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
test('uses passed init values', ({ assert }) => {
|
|
200
|
+
const result = permission.groupPermission({ role: 'commenter', granteeId: 'group-456' })
|
|
201
|
+
assert.equal(result.type, 'group')
|
|
202
|
+
assert.equal(result.role, 'commenter')
|
|
203
|
+
assert.equal(result.granteeId, 'group-456')
|
|
204
|
+
})
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
test.group('organizationPermission()', (group) => {
|
|
208
|
+
let permission: Permission
|
|
209
|
+
|
|
210
|
+
group.each.setup(() => {
|
|
211
|
+
permission = new Permission()
|
|
212
|
+
})
|
|
213
|
+
|
|
214
|
+
test('returns an object', ({ assert }) => {
|
|
215
|
+
const result = permission.organizationPermission()
|
|
216
|
+
assert.typeOf(result, 'object')
|
|
217
|
+
})
|
|
218
|
+
|
|
219
|
+
test('has type set to organization', ({ assert }) => {
|
|
220
|
+
const result = permission.organizationPermission()
|
|
221
|
+
assert.equal(result.type, 'organization')
|
|
222
|
+
})
|
|
223
|
+
|
|
224
|
+
test('has displayName', ({ assert }) => {
|
|
225
|
+
const result = permission.organizationPermission()
|
|
226
|
+
assert.typeOf(result.displayName, 'string')
|
|
227
|
+
})
|
|
228
|
+
|
|
229
|
+
test('does not have expirationTime', ({ assert }) => {
|
|
230
|
+
const result = permission.organizationPermission()
|
|
231
|
+
assert.isUndefined(result.expirationTime)
|
|
232
|
+
})
|
|
233
|
+
|
|
234
|
+
test('uses passed init values', ({ assert }) => {
|
|
235
|
+
const result = permission.organizationPermission({ role: 'reader', addingUser: 'admin-789' })
|
|
236
|
+
assert.equal(result.type, 'organization')
|
|
237
|
+
assert.equal(result.role, 'reader')
|
|
238
|
+
assert.equal(result.addingUser, 'admin-789')
|
|
239
|
+
})
|
|
240
|
+
})
|
|
241
|
+
|
|
242
|
+
test.group('permissions()', (group) => {
|
|
243
|
+
let permission: Permission
|
|
244
|
+
|
|
245
|
+
group.each.setup(() => {
|
|
246
|
+
permission = new Permission()
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
test('returns an array', ({ assert }) => {
|
|
250
|
+
const result = permission.permissions()
|
|
251
|
+
assert.isArray(result)
|
|
252
|
+
})
|
|
253
|
+
|
|
254
|
+
test('returns 25 items by default', ({ assert }) => {
|
|
255
|
+
const result = permission.permissions()
|
|
256
|
+
assert.lengthOf(result, 25)
|
|
257
|
+
})
|
|
258
|
+
|
|
259
|
+
test('returns specified number of items', ({ assert }) => {
|
|
260
|
+
const result = permission.permissions(10)
|
|
261
|
+
assert.lengthOf(result, 10)
|
|
262
|
+
})
|
|
263
|
+
|
|
264
|
+
test('all items have the correct kind', ({ assert }) => {
|
|
265
|
+
const result = permission.permissions(5)
|
|
266
|
+
result.forEach((item) => {
|
|
267
|
+
assert.equal(item.kind, PermissionKind)
|
|
268
|
+
})
|
|
269
|
+
})
|
|
270
|
+
|
|
271
|
+
test('uses passed init values for all items', ({ assert }) => {
|
|
272
|
+
const result = permission.permissions(5, { type: 'user', role: 'owner' })
|
|
273
|
+
result.forEach((item) => {
|
|
274
|
+
assert.equal(item.type, 'user')
|
|
275
|
+
assert.equal(item.role, 'owner')
|
|
276
|
+
})
|
|
277
|
+
})
|
|
278
|
+
|
|
279
|
+
test('generates unique keys', ({ assert }) => {
|
|
280
|
+
const result = permission.permissions(10)
|
|
281
|
+
const keys = result.map((item) => item.key)
|
|
282
|
+
const uniqueKeys = new Set(keys)
|
|
283
|
+
assert.equal(keys.length, uniqueKeys.size)
|
|
284
|
+
})
|
|
285
|
+
})
|