@scalekit-sdk/node 2.2.0-beta.1 → 2.2.1

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.
Files changed (226) hide show
  1. package/README.md +5 -5
  2. package/{reference.md → REFERENCE.md} +530 -748
  3. package/lib/auth.d.ts +9 -6
  4. package/lib/auth.js +4 -20
  5. package/lib/auth.js.map +1 -1
  6. package/lib/connect.d.ts +3 -3
  7. package/lib/connect.js +1 -2
  8. package/lib/connect.js.map +1 -1
  9. package/lib/connection.d.ts +2 -2
  10. package/lib/connection.js +4 -4
  11. package/lib/connection.js.map +1 -1
  12. package/lib/core.js +2 -2
  13. package/lib/core.js.map +1 -1
  14. package/lib/directory.d.ts +2 -2
  15. package/lib/directory.js +7 -7
  16. package/lib/directory.js.map +1 -1
  17. package/lib/domain.d.ts +6 -5
  18. package/lib/domain.js +4 -5
  19. package/lib/domain.js.map +1 -1
  20. package/lib/errors/base-exception.d.ts +1 -1
  21. package/lib/errors/base-exception.js +1 -1
  22. package/lib/errors/base-exception.js.map +1 -1
  23. package/lib/organization.d.ts +10 -9
  24. package/lib/organization.js +11 -9
  25. package/lib/organization.js.map +1 -1
  26. package/lib/passwordless.d.ts +2 -2
  27. package/lib/passwordless.js +8 -7
  28. package/lib/passwordless.js.map +1 -1
  29. package/lib/permission.d.ts +6 -5
  30. package/lib/permission.js +10 -11
  31. package/lib/permission.js.map +1 -1
  32. package/lib/pkg/grpc/buf/validate/validate_pb.d.ts +7 -0
  33. package/lib/pkg/grpc/buf/validate/validate_pb.js +25 -0
  34. package/lib/pkg/grpc/buf/validate/validate_pb.js.map +1 -0
  35. package/lib/pkg/grpc/google/api/annotations_pb.d.ts +7 -0
  36. package/lib/pkg/grpc/google/api/annotations_pb.js +25 -0
  37. package/lib/pkg/grpc/google/api/annotations_pb.js.map +1 -0
  38. package/lib/pkg/grpc/google/api/field_behavior_pb.d.ts +7 -0
  39. package/lib/pkg/grpc/google/api/field_behavior_pb.js +25 -0
  40. package/lib/pkg/grpc/google/api/field_behavior_pb.js.map +1 -0
  41. package/lib/pkg/grpc/google/api/visibility_pb.d.ts +7 -0
  42. package/lib/pkg/grpc/google/api/visibility_pb.js +25 -0
  43. package/lib/pkg/grpc/google/api/visibility_pb.js.map +1 -0
  44. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.d.ts +7 -0
  45. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.js +25 -0
  46. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.js.map +1 -0
  47. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.d.ts +48 -42
  48. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js +27 -263
  49. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js.map +1 -1
  50. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.d.ts +371 -325
  51. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js +132 -835
  52. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js.map +1 -1
  53. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.d.ts +113 -87
  54. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.js +45 -201
  55. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.js.map +1 -1
  56. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.d.ts +262 -265
  57. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.js +92 -938
  58. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.js.map +1 -1
  59. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.d.ts +162 -157
  60. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js +42 -313
  61. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js.map +1 -1
  62. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.d.ts +1488 -1459
  63. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js +353 -2362
  64. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js.map +1 -1
  65. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.d.ts +520 -483
  66. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js +224 -1555
  67. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js.map +1 -1
  68. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.d.ts +219 -191
  69. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js +96 -553
  70. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js.map +1 -1
  71. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.d.ts +76 -102
  72. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js +37 -393
  73. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js.map +1 -1
  74. package/lib/pkg/grpc/scalekit/v1/options/options_pb.d.ts +36 -26
  75. package/lib/pkg/grpc/scalekit/v1/options/options_pb.js +20 -69
  76. package/lib/pkg/grpc/scalekit/v1/options/options_pb.js.map +1 -1
  77. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.d.ts +447 -400
  78. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js +163 -1238
  79. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js.map +1 -1
  80. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.d.ts +622 -556
  81. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js +201 -1718
  82. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js.map +1 -1
  83. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.d.ts +135 -132
  84. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js +55 -518
  85. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js.map +1 -1
  86. package/lib/pkg/grpc/scalekit/v1/users/users_pb.d.ts +445 -413
  87. package/lib/pkg/grpc/scalekit/v1/users/users_pb.js +142 -1490
  88. package/lib/pkg/grpc/scalekit/v1/users/users_pb.js.map +1 -1
  89. package/lib/role.d.ts +8 -7
  90. package/lib/role.js +14 -14
  91. package/lib/role.js.map +1 -1
  92. package/lib/scalekit.d.ts +0 -4
  93. package/lib/scalekit.js +0 -4
  94. package/lib/scalekit.js.map +1 -1
  95. package/lib/session.js +15 -24
  96. package/lib/session.js.map +1 -1
  97. package/lib/user.d.ts +6 -5
  98. package/lib/user.js +17 -20
  99. package/lib/user.js.map +1 -1
  100. package/lib/webauthn.js +6 -5
  101. package/lib/webauthn.js.map +1 -1
  102. package/package.json +12 -10
  103. package/.github/dependabot.yml +0 -10
  104. package/.nvmrc +0 -1
  105. package/buf.gen.yaml +0 -24
  106. package/jest.config.js +0 -15
  107. package/lib/connected-accounts.d.ts +0 -119
  108. package/lib/connected-accounts.js +0 -241
  109. package/lib/connected-accounts.js.map +0 -1
  110. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.d.ts +0 -19
  111. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.js +0 -27
  112. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.js.map +0 -1
  113. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.d.ts +0 -118
  114. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.js +0 -126
  115. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.js.map +0 -1
  116. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.d.ts +0 -37
  117. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.js +0 -45
  118. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.js.map +0 -1
  119. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.d.ts +0 -82
  120. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.js +0 -90
  121. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.js.map +0 -1
  122. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.d.ts +0 -87
  123. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js +0 -95
  124. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js.map +0 -1
  125. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.d.ts +0 -718
  126. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js +0 -893
  127. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js.map +0 -1
  128. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.d.ts +0 -172
  129. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.js +0 -180
  130. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.js.map +0 -1
  131. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.d.ts +0 -154
  132. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.js +0 -162
  133. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.js.map +0 -1
  134. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.d.ts +0 -73
  135. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.js +0 -81
  136. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.js.map +0 -1
  137. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.d.ts +0 -171
  138. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.js +0 -179
  139. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.js.map +0 -1
  140. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.d.ts +0 -250
  141. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.js +0 -258
  142. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.js.map +0 -1
  143. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.d.ts +0 -46
  144. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.js +0 -54
  145. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.js.map +0 -1
  146. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.d.ts +0 -75
  147. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js +0 -83
  148. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js.map +0 -1
  149. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.d.ts +0 -431
  150. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js +0 -627
  151. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js.map +0 -1
  152. package/lib/pkg/grpc/scalekit/v1/users/users_connect.d.ts +0 -173
  153. package/lib/pkg/grpc/scalekit/v1/users/users_connect.js +0 -181
  154. package/lib/pkg/grpc/scalekit/v1/users/users_connect.js.map +0 -1
  155. package/lib/tools.d.ts +0 -75
  156. package/lib/tools.js +0 -127
  157. package/lib/tools.js.map +0 -1
  158. package/src/auth.ts +0 -99
  159. package/src/connect.ts +0 -33
  160. package/src/connected-accounts.ts +0 -358
  161. package/src/connection.ts +0 -267
  162. package/src/constants/user.ts +0 -22
  163. package/src/core.ts +0 -139
  164. package/src/directory.ts +0 -431
  165. package/src/domain.ts +0 -272
  166. package/src/errors/base-exception.ts +0 -262
  167. package/src/errors/index.ts +0 -3
  168. package/src/errors/specific-exceptions.ts +0 -88
  169. package/src/index.ts +0 -10
  170. package/src/organization.ts +0 -568
  171. package/src/passwordless.ts +0 -138
  172. package/src/permission.ts +0 -310
  173. package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.ts +0 -26
  174. package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.ts +0 -342
  175. package/src/pkg/grpc/scalekit/v1/auth/auth_connect.ts +0 -125
  176. package/src/pkg/grpc/scalekit/v1/auth/auth_pb.ts +0 -1213
  177. package/src/pkg/grpc/scalekit/v1/auth/passwordless_connect.ts +0 -44
  178. package/src/pkg/grpc/scalekit/v1/auth/passwordless_pb.ts +0 -336
  179. package/src/pkg/grpc/scalekit/v1/auth/webauthn_connect.ts +0 -89
  180. package/src/pkg/grpc/scalekit/v1/auth/webauthn_pb.ts +0 -1263
  181. package/src/pkg/grpc/scalekit/v1/commons/commons_pb.ts +0 -573
  182. package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.ts +0 -94
  183. package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.ts +0 -1294
  184. package/src/pkg/grpc/scalekit/v1/connections/connections_connect.ts +0 -179
  185. package/src/pkg/grpc/scalekit/v1/connections/connections_pb.ts +0 -3846
  186. package/src/pkg/grpc/scalekit/v1/directories/directories_connect.ts +0 -161
  187. package/src/pkg/grpc/scalekit/v1/directories/directories_pb.ts +0 -2119
  188. package/src/pkg/grpc/scalekit/v1/domains/domains_connect.ts +0 -80
  189. package/src/pkg/grpc/scalekit/v1/domains/domains_pb.ts +0 -855
  190. package/src/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.ts +0 -524
  191. package/src/pkg/grpc/scalekit/v1/options/options_pb.ts +0 -230
  192. package/src/pkg/grpc/scalekit/v1/organizations/organizations_connect.ts +0 -178
  193. package/src/pkg/grpc/scalekit/v1/organizations/organizations_pb.ts +0 -1766
  194. package/src/pkg/grpc/scalekit/v1/roles/roles_connect.ts +0 -257
  195. package/src/pkg/grpc/scalekit/v1/roles/roles_pb.ts +0 -2395
  196. package/src/pkg/grpc/scalekit/v1/sessions/sessions_connect.ts +0 -53
  197. package/src/pkg/grpc/scalekit/v1/sessions/sessions_pb.ts +0 -749
  198. package/src/pkg/grpc/scalekit/v1/tools/tools_connect.ts +0 -82
  199. package/src/pkg/grpc/scalekit/v1/tools/tools_pb.ts +0 -847
  200. package/src/pkg/grpc/scalekit/v1/users/users_connect.ts +0 -180
  201. package/src/pkg/grpc/scalekit/v1/users/users_pb.ts +0 -2151
  202. package/src/role.ts +0 -461
  203. package/src/scalekit.ts +0 -809
  204. package/src/session.ts +0 -337
  205. package/src/tools.ts +0 -166
  206. package/src/types/auth.ts +0 -73
  207. package/src/types/organization.ts +0 -12
  208. package/src/types/scalekit.ts +0 -50
  209. package/src/types/user.ts +0 -21
  210. package/src/user.ts +0 -825
  211. package/src/webauthn.ts +0 -98
  212. package/tests/README.md +0 -25
  213. package/tests/connected-accounts.test.ts +0 -472
  214. package/tests/connection.test.ts +0 -42
  215. package/tests/directory.test.ts +0 -46
  216. package/tests/domain.test.ts +0 -293
  217. package/tests/organization.test.ts +0 -81
  218. package/tests/passwordless.test.ts +0 -108
  219. package/tests/permission.test.ts +0 -399
  220. package/tests/role.test.ts +0 -323
  221. package/tests/scalekit.test.ts +0 -104
  222. package/tests/setup.ts +0 -34
  223. package/tests/tools.test.ts +0 -239
  224. package/tests/users.test.ts +0 -168
  225. package/tests/utils/test-data.ts +0 -481
  226. package/tsconfig.json +0 -19
@@ -1,399 +0,0 @@
1
- import ScalekitClient from '../src/scalekit';
2
- import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
3
- import { TestDataGenerator, TestOrganizationManager, TestRoleManager, TestPermissionManager } from './utils/test-data';
4
-
5
- describe('Permissions', () => {
6
- let client: ScalekitClient;
7
- let testOrg: string;
8
- let testRoleName: string | null = null;
9
- let testPermissionName: string | null = null;
10
- let testPermissionName2: string | null = null;
11
-
12
- beforeEach(async () => {
13
- // Use global client
14
- client = global.client;
15
-
16
- // Create test organization for each test
17
- testOrg = await TestOrganizationManager.createTestOrganization(client);
18
- });
19
-
20
- afterEach(async () => {
21
- // Clean up test resources
22
- if (testRoleName) {
23
- await TestRoleManager.cleanupTestRole(client, testRoleName);
24
- testRoleName = null;
25
- }
26
-
27
- if (testPermissionName) {
28
- await TestPermissionManager.cleanupTestPermission(client, testPermissionName);
29
- testPermissionName = null;
30
- }
31
-
32
- if (testPermissionName2) {
33
- await TestPermissionManager.cleanupTestPermission(client, testPermissionName2);
34
- testPermissionName2 = null;
35
- }
36
-
37
- // Clean up test organization
38
- await TestOrganizationManager.cleanupTestOrganization(client, testOrg);
39
- });
40
-
41
- describe('PermissionClient', () => {
42
- it('should have permission client available', () => {
43
- expect(client.permission).toBeDefined();
44
- expect(typeof client.permission.createPermission).toBe('function');
45
- expect(typeof client.permission.getPermission).toBe('function');
46
- expect(typeof client.permission.listPermissions).toBe('function');
47
- expect(typeof client.permission.updatePermission).toBe('function');
48
- expect(typeof client.permission.deletePermission).toBe('function');
49
- });
50
-
51
- it('should have role-permission management methods available', () => {
52
- expect(typeof client.permission.listRolePermissions).toBe('function');
53
- expect(typeof client.permission.addPermissionsToRole).toBe('function');
54
- expect(typeof client.permission.removePermissionFromRole).toBe('function');
55
- expect(typeof client.permission.listEffectiveRolePermissions).toBe('function');
56
- });
57
- });
58
-
59
- describe('Permission API Integration Tests', () => {
60
- describe('createPermission', () => {
61
- it('should create a new permission', async () => {
62
- const permissionData = TestDataGenerator.generatePermissionData();
63
-
64
- const response = await client.permission.createPermission(permissionData);
65
-
66
- expect(response).toBeDefined();
67
- expect(response.permission).toBeDefined();
68
- expect(response.permission?.name).toBe(permissionData.name);
69
- expect(response.permission?.description).toBe(permissionData.description);
70
-
71
- testPermissionName = response.permission?.name || null;
72
- });
73
-
74
- it('should throw error when permission name is missing', async () => {
75
- const permissionData = TestDataGenerator.generatePermissionData({ name: '' });
76
-
77
- await expect(
78
- client.permission.createPermission(permissionData)
79
- ).rejects.toThrow();
80
- });
81
-
82
- it('should allow empty permission description', async () => {
83
- const permissionData = TestDataGenerator.generatePermissionData({ description: '' });
84
-
85
- const response = await client.permission.createPermission(permissionData);
86
-
87
- expect(response).toBeDefined();
88
- expect(response.permission).toBeDefined();
89
- expect(response.permission?.name).toBe(permissionData.name);
90
- expect(response.permission?.description).toBe('');
91
- });
92
- });
93
-
94
- describe('getPermission', () => {
95
- it('should get permission by name', async () => {
96
- // Create a test permission first
97
- const permissionData = TestDataGenerator.generatePermissionData();
98
- const createResponse = await client.permission.createPermission(permissionData);
99
- testPermissionName = createResponse.permission?.name || null;
100
-
101
- const response = await client.permission.getPermission(testPermissionName!);
102
-
103
- expect(response).toBeDefined();
104
- expect(response.permission).toBeDefined();
105
- expect(response.permission?.name).toBe(testPermissionName);
106
- expect(response.permission?.description).toBe(permissionData.description);
107
- });
108
-
109
- it('should throw error when permission does not exist', async () => {
110
- await expect(
111
- client.permission.getPermission('non.existent.permission')
112
- ).rejects.toThrow();
113
- });
114
- });
115
-
116
- describe('listPermissions', () => {
117
- it('should list all permissions', async () => {
118
- // Create a test permission first
119
- const permissionData = TestDataGenerator.generatePermissionData();
120
- const createResponse = await client.permission.createPermission(permissionData);
121
- testPermissionName = createResponse.permission?.name || null;
122
-
123
- const response = await client.permission.listPermissions();
124
-
125
- expect(response).toBeDefined();
126
- expect(response.permissions).toBeDefined();
127
- expect(Array.isArray(response.permissions)).toBe(true);
128
- expect(response.permissions.length).toBeGreaterThan(0);
129
-
130
- // Verify our test permission is in the list
131
- const testPermission = response.permissions.find(permission => permission.name === testPermissionName);
132
- expect(testPermission).toBeDefined();
133
- expect(testPermission?.description).toBe(permissionData.description);
134
- });
135
-
136
- it('should handle pagination', async () => {
137
- // Create multiple test permissions
138
- const permissionData1 = TestDataGenerator.generatePermissionData();
139
- const createResponse1 = await client.permission.createPermission(permissionData1);
140
- testPermissionName = createResponse1.permission?.name || null;
141
-
142
- const permissionData2 = TestDataGenerator.generatePermissionData();
143
- const createResponse2 = await client.permission.createPermission(permissionData2);
144
- testPermissionName2 = createResponse2.permission?.name || null;
145
-
146
- // List permissions with pagination
147
- const firstPage = await client.permission.listPermissions(undefined, 1);
148
-
149
- expect(firstPage).toBeDefined();
150
- expect(firstPage.permissions.length).toBeLessThanOrEqual(1);
151
-
152
- if (firstPage.nextPageToken) {
153
- const secondPage = await client.permission.listPermissions(firstPage.nextPageToken, 1);
154
-
155
- expect(secondPage).toBeDefined();
156
- expect(secondPage.permissions).toBeDefined();
157
- }
158
- });
159
- });
160
-
161
- describe('updatePermission', () => {
162
- it('should update an existing permission', async () => {
163
- // Create a test permission first
164
- const permissionData = TestDataGenerator.generatePermissionData();
165
- const createResponse = await client.permission.createPermission(permissionData);
166
- testPermissionName = createResponse.permission?.name || null;
167
-
168
- const updateData = TestDataGenerator.generatePermissionData({
169
- name: testPermissionName!,
170
- description: 'Updated permission description'
171
- });
172
- const response = await client.permission.updatePermission(testPermissionName!, updateData);
173
-
174
- expect(response).toBeDefined();
175
- expect(response.permission).toBeDefined();
176
- expect(response.permission?.name).toBe(testPermissionName);
177
- expect(response.permission?.description).toBe(updateData.description);
178
- });
179
-
180
- it('should throw error when updating non-existent permission', async () => {
181
- const updateData = TestDataGenerator.generatePermissionData();
182
-
183
- await expect(
184
- client.permission.updatePermission('non.existent.permission', updateData)
185
- ).rejects.toThrow();
186
- });
187
- });
188
-
189
- describe('deletePermission', () => {
190
- it('should delete an existing permission', async () => {
191
- // Create a test permission first
192
- const permissionData = TestDataGenerator.generatePermissionData();
193
- const createResponse = await client.permission.createPermission(permissionData);
194
- const permissionName = createResponse.permission?.name || null;
195
-
196
- const response = await client.permission.deletePermission(permissionName!);
197
-
198
- expect(response).toBeDefined();
199
-
200
- // Verify permission is deleted
201
- await expect(
202
- client.permission.getPermission(permissionName!)
203
- ).rejects.toThrow();
204
- });
205
- });
206
- });
207
-
208
- describe('Role-Permission Management API Integration Tests', () => {
209
- beforeEach(async () => {
210
- // Create a test role for role-permission tests
211
- const roleData = TestDataGenerator.generateRoleData();
212
- const createResponse = await client.role.createRole(roleData);
213
- testRoleName = createResponse.role?.name || null;
214
- });
215
-
216
- describe('listRolePermissions', () => {
217
- it('should list permissions for a role', async () => {
218
- const response = await client.permission.listRolePermissions(testRoleName!);
219
-
220
- expect(response).toBeDefined();
221
- expect(response.permissions).toBeDefined();
222
- expect(Array.isArray(response.permissions)).toBe(true);
223
- });
224
-
225
- it('should throw error when role does not exist', async () => {
226
- await expect(
227
- client.permission.listRolePermissions('non-existent-role')
228
- ).rejects.toThrow();
229
- });
230
- });
231
-
232
- describe('addPermissionsToRole', () => {
233
- it('should add permissions to a role', async () => {
234
- // Create test permissions
235
- const permissionData1 = TestDataGenerator.generatePermissionData();
236
- const createResponse1 = await client.permission.createPermission(permissionData1);
237
- testPermissionName = createResponse1.permission?.name || null;
238
-
239
- const permissionData2 = TestDataGenerator.generatePermissionData();
240
- const createResponse2 = await client.permission.createPermission(permissionData2);
241
- testPermissionName2 = createResponse2.permission?.name || null;
242
-
243
- // Add permissions to role
244
- const response = await client.permission.addPermissionsToRole(testRoleName!, [
245
- testPermissionName!,
246
- testPermissionName2!
247
- ]);
248
-
249
- expect(response).toBeDefined();
250
- expect(response.permissions).toBeDefined();
251
- expect(Array.isArray(response.permissions)).toBe(true);
252
- expect(response.permissions.length).toBe(2);
253
-
254
- // Verify permissions were added
255
- const rolePermissions = await client.permission.listRolePermissions(testRoleName!);
256
- const addedPermissions = rolePermissions.permissions.filter(p =>
257
- p.name === testPermissionName || p.name === testPermissionName2
258
- );
259
- expect(addedPermissions.length).toBe(2);
260
- });
261
-
262
- it('should add single permission to a role', async () => {
263
- // Create test permission
264
- const permissionData = TestDataGenerator.generatePermissionData();
265
- const createResponse = await client.permission.createPermission(permissionData);
266
- testPermissionName = createResponse.permission?.name || null;
267
-
268
- // Add permission to role
269
- const response = await client.permission.addPermissionsToRole(testRoleName!, [testPermissionName!]);
270
-
271
- expect(response).toBeDefined();
272
- expect(response.permissions).toBeDefined();
273
- expect(Array.isArray(response.permissions)).toBe(true);
274
- expect(response.permissions.length).toBe(1);
275
- });
276
-
277
- it('should throw error when role does not exist', async () => {
278
- const permissionData = TestDataGenerator.generatePermissionData();
279
- const createResponse = await client.permission.createPermission(permissionData);
280
- testPermissionName = createResponse.permission?.name || null;
281
-
282
- await expect(
283
- client.permission.addPermissionsToRole('non-existent-role', [testPermissionName!])
284
- ).rejects.toThrow();
285
- });
286
-
287
- it('should throw error when permission does not exist', async () => {
288
- await expect(
289
- client.permission.addPermissionsToRole(testRoleName!, ['non.existent.permission'])
290
- ).rejects.toThrow();
291
- });
292
- });
293
-
294
- describe('removePermissionFromRole', () => {
295
- it('should remove permission from a role', async () => {
296
- // Create test permission
297
- const permissionData = TestDataGenerator.generatePermissionData();
298
- const createResponse = await client.permission.createPermission(permissionData);
299
- testPermissionName = createResponse.permission?.name || null;
300
-
301
- // Add permission to role first
302
- await client.permission.addPermissionsToRole(testRoleName!, [testPermissionName!]);
303
-
304
- // Remove permission from role
305
- const response = await client.permission.removePermissionFromRole(testRoleName!, testPermissionName!);
306
-
307
- expect(response).toBeDefined();
308
-
309
- // Verify permission was removed
310
- const rolePermissions = await client.permission.listRolePermissions(testRoleName!);
311
- const removedPermission = rolePermissions.permissions.find(p => p.name === testPermissionName);
312
- expect(removedPermission).toBeUndefined();
313
- });
314
-
315
- it('should throw error when role does not exist', async () => {
316
- const permissionData = TestDataGenerator.generatePermissionData();
317
- const createResponse = await client.permission.createPermission(permissionData);
318
- testPermissionName = createResponse.permission?.name || null;
319
-
320
- await expect(
321
- client.permission.removePermissionFromRole('non-existent-role', testPermissionName!)
322
- ).rejects.toThrow();
323
- });
324
-
325
- it('should throw error when permission does not exist', async () => {
326
- await expect(
327
- client.permission.removePermissionFromRole(testRoleName!, 'non.existent.permission')
328
- ).rejects.toThrow();
329
- });
330
- });
331
-
332
- describe('listEffectiveRolePermissions', () => {
333
- it('should list effective permissions for a role', async () => {
334
- // Create test permission
335
- const permissionData = TestDataGenerator.generatePermissionData();
336
- const createResponse = await client.permission.createPermission(permissionData);
337
- testPermissionName = createResponse.permission?.name || null;
338
-
339
- // Add permission to role
340
- await client.permission.addPermissionsToRole(testRoleName!, [testPermissionName!]);
341
-
342
- // Get effective permissions
343
- const response = await client.permission.listEffectiveRolePermissions(testRoleName!);
344
-
345
- expect(response).toBeDefined();
346
- expect(response.permissions).toBeDefined();
347
- expect(Array.isArray(response.permissions)).toBe(true);
348
-
349
- // Verify our permission is in the effective permissions
350
- const effectivePermission = response.permissions.find(p => p.name === testPermissionName);
351
- expect(effectivePermission).toBeDefined();
352
- });
353
-
354
- it('should list effective permissions for role with inheritance', async () => {
355
- // Create base role with permission
356
- const baseRoleData = TestDataGenerator.generateRoleData();
357
- const baseResponse = await client.role.createRole(baseRoleData);
358
- const baseRoleName = baseResponse.role?.name;
359
-
360
- const permissionData = TestDataGenerator.generatePermissionData();
361
- const createResponse = await client.permission.createPermission(permissionData);
362
- testPermissionName = createResponse.permission?.name || null;
363
-
364
- // Add permission to base role
365
- await client.permission.addPermissionsToRole(baseRoleName!, [testPermissionName!]);
366
-
367
- // Create extended role
368
- const extendedRoleData = TestDataGenerator.generateRoleData({
369
- extends: baseRoleName
370
- });
371
- const extendedResponse = await client.role.createRole(extendedRoleData);
372
- const extendedRoleName = extendedResponse.role?.name;
373
-
374
- // Get effective permissions for extended role (should include inherited permissions)
375
- const response = await client.permission.listEffectiveRolePermissions(extendedRoleName!);
376
-
377
- expect(response).toBeDefined();
378
- expect(response.permissions).toBeDefined();
379
- expect(Array.isArray(response.permissions)).toBe(true);
380
-
381
- // Clean up base role
382
- if (baseRoleName) {
383
- await TestRoleManager.cleanupTestRole(client, baseRoleName);
384
- }
385
-
386
- // Clean up extended role
387
- if (extendedRoleName) {
388
- await TestRoleManager.cleanupTestRole(client, extendedRoleName);
389
- }
390
- });
391
-
392
- it('should throw error when role does not exist', async () => {
393
- await expect(
394
- client.permission.listEffectiveRolePermissions('non-existent-role')
395
- ).rejects.toThrow();
396
- });
397
- });
398
- });
399
- });