Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/tools/auth0/handlers/roles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ export default class RolesHandler extends DefaultHandler {
async createRole(data): Promise<Asset> {
const role = { ...data };
delete role.permissions;
// `type` is a read-only field returned by the roles GET endpoint but rejected
// by the roles create/update endpoints. Strip it to keep exports round-trippable.
delete role.type;

const created = await this.client.roles.create(role);

Expand Down Expand Up @@ -110,6 +113,9 @@ export default class RolesHandler extends DefaultHandler {

delete data.permissions;
delete data.id;
// `type` is read-only on the roles GET endpoint and rejected by update; strip it
// so files that already contain it (from a prior export) can still be imported.
delete data.type;

await this.client.roles.update(params.id, data);

Expand Down Expand Up @@ -201,6 +207,9 @@ export default class RolesHandler extends DefaultHandler {
);

(roles[index] as any).permissions = strippedPerms;
// `type` is a read-only field (e.g. 'tenant') that the roles create/update
// endpoints reject, so omit it from the export to keep the round-trip valid.
delete (roles[index] as any).type;
}
this.existing = roles;
return this.existing;
Expand Down
5 changes: 5 additions & 0 deletions test/tools/auth0/handlers/roles.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ describe('#roles handler', () => {
expect(data).to.be.an('object');
expect(data.name).to.equal('myRole');
expect(data.description).to.equal('myDescription');
expect(data).to.not.have.property('type');
return Promise.resolve(data);
},
update: () => Promise.resolve([]),
Expand Down Expand Up @@ -97,6 +98,7 @@ describe('#roles handler', () => {
name: 'myRole',
id: 'myRoleId',
description: 'myDescription',
type: 'tenant',
permissions: [],
},
],
Expand All @@ -118,6 +120,7 @@ describe('#roles handler', () => {
name: 'myRole',
id: 'myRoleId',
description: 'myDescription',
type: 'tenant',
},
]),
permissions: {
Expand Down Expand Up @@ -261,6 +264,7 @@ describe('#roles handler', () => {
expect(data).to.be.an('object');
expect(data.name).to.equal('myRole');
expect(data.description).to.equal('myDescription');
expect(data).to.not.have.property('type');

return Promise.resolve(data);
},
Expand Down Expand Up @@ -306,6 +310,7 @@ describe('#roles handler', () => {
name: 'myRole',
id: 'myRoleId',
description: 'myDescription',
type: 'tenant',
permissions: [
{
permission_name: 'Create:cal_entry',
Expand Down