Skip to content
Open
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: 7 additions & 2 deletions src/tools/auth0/handlers/resourceServers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,8 +199,13 @@ export default class ResourceServersHandler extends DefaultHandler {
id: string,
update: ResourceServer
): Promise<Management.UpdateResourceServerResponseContent> {
// Exclude name from update as it cannot be modified for system resource servers like Auth0 My Account API
if (update.is_system === true || update.name === 'Auth0 My Account API') {
// Exclude name from update as it cannot be modified for system resource servers like the
// Auth0 My Account API or the Auth0 My Organization API. `is_system` is listed in
// `stripUpdateFields`, so it has already been removed from `update` by the time this runs -
// read it off the existing resource server instead, which `getType()` retains it on.
const existing = this.existing?.find((resourceServer) => resourceServer.id === id);

if (existing?.is_system === true) {
const updateFields: Management.UpdateResourceServerRequestContent = {
token_lifetime: update.token_lifetime,
proof_of_possession: update.proof_of_possession,
Expand Down
42 changes: 42 additions & 0 deletions test/tools/auth0/handlers/resourceServers.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -964,5 +964,47 @@ describe('#resourceServers handler', () => {
await stageFn.apply(handler, [data]);
expect(updateCalled).to.equal(true);
});

it('should update a system resource server other than "Auth0 My Account API" without name', async () => {
let updateCalled = false;
const existingResourceServer = {
id: 'rs_my_organization',
identifier: 'https://auth0.com/my-organization/my-org/',
name: 'Auth0 My Organization API',
is_system: true,
};

const auth0 = {
resourceServers: {
create: () => Promise.resolve({ data: [] }),
update: function (id, data) {
updateCalled = true;
expect(id).to.equal('rs_my_organization');
expect(data.name).to.equal(undefined);
expect(data.is_system).to.equal(undefined);
expect(data.token_lifetime).to.equal(600);
return Promise.resolve({ data });
},
delete: () => Promise.resolve({ data: [] }),
list: (params) => mockPagedData(params, 'resource_servers', [existingResourceServer]),
},
pool,
};

const handler = new resourceServers.default({ client: pageClient(auth0), config });
const stageFn = Object.getPrototypeOf(handler).processChanges;
const data = {
resourceServers: [
{
name: 'Auth0 My Organization API',
identifier: 'https://auth0.com/my-organization/my-org/',
token_lifetime: 600,
},
],
};

await stageFn.apply(handler, [data]);
expect(updateCalled).to.equal(true);
});
});
});