Skip to content

Commit 36fb14a

Browse files
authored
feat: Add resource_type_slug to createOrganizationRole to create resource-scoped custom roles (#1549)
1 parent 9ce59b5 commit 36fb14a

File tree

3 files changed

+47
-2
lines changed

3 files changed

+47
-2
lines changed

src/authorization/authorization.spec.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,48 @@ describe('Authorization', () => {
291291
type: 'OrganizationRole',
292292
});
293293
});
294+
295+
it('creates an organization role with resourceTypeSlug', async () => {
296+
fetchOnce(organizationRoleFixture, { status: 201 });
297+
298+
const role = await workos.authorization.createOrganizationRole(
299+
testOrgId,
300+
{
301+
slug: 'org-admin',
302+
name: 'Org Admin',
303+
resourceTypeSlug: 'organization',
304+
},
305+
);
306+
307+
expect(fetchBody()).toEqual({
308+
slug: 'org-admin',
309+
name: 'Org Admin',
310+
resource_type_slug: 'organization',
311+
});
312+
expect(role.resourceTypeSlug).toEqual('organization');
313+
});
314+
315+
it('creates an organization role without slug', async () => {
316+
fetchOnce(organizationRoleFixture, { status: 201 });
317+
318+
const role = await workos.authorization.createOrganizationRole(
319+
testOrgId,
320+
{
321+
name: 'Org Admin',
322+
description: 'Organization administrator',
323+
},
324+
);
325+
326+
expect(fetchBody()).toEqual({
327+
name: 'Org Admin',
328+
description: 'Organization administrator',
329+
});
330+
expect(role).toMatchObject({
331+
object: 'role',
332+
name: 'Org Admin',
333+
type: 'OrganizationRole',
334+
});
335+
});
294336
});
295337

296338
describe('listOrganizationRoles', () => {
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
export interface CreateOrganizationRoleOptions {
2-
slug: string;
2+
slug?: string;
33
name: string;
44
description?: string;
5+
resourceTypeSlug?: string;
56
}
67

78
export interface SerializedCreateOrganizationRoleOptions {
8-
slug: string;
9+
slug?: string;
910
name: string;
1011
description?: string;
12+
resource_type_slug?: string;
1113
}

src/authorization/serializers/create-organization-role-options.serializer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ export const serializeCreateOrganizationRoleOptions = (
99
slug: options.slug,
1010
name: options.name,
1111
description: options.description,
12+
resource_type_slug: options.resourceTypeSlug,
1213
});

0 commit comments

Comments
 (0)