Skip to content

Commit 1ade4e7

Browse files
authored
Fix: Bad request error when no email provider is configured (#1321)
Fix: Bad request error with Deploy CLI when no email provider is used
1 parent 7e07417 commit 1ade4e7

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

src/tools/auth0/handlers/emailProvider.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ export default class EmailProviderHandler extends DefaultHandler {
4444
// HTTP DELETE on emails/provider is not supported, as this is not part of our vNext SDK.
4545
if (Object.keys(emailProvider).length === 0) {
4646
if (this.config('AUTH0_ALLOW_DELETE') === true) {
47+
// If no existing provider, there is nothing to delete
48+
if (!existing.name) return;
4749
// await this.client.emails.delete(); is not supported
4850
if (isEmpty(existing.credentials)) {
4951
delete existing.credentials;

test/tools/auth0/handlers/emailProvider.tests.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,38 @@ describe('#emailProvider handler', () => {
8484
expect(wasUpdateCalled).to.equal(true);
8585
});
8686

87+
it('should not call update when emailProvider is empty and no existing provider exists, even when AUTH0_ALLOW_DELETE is true', async () => {
88+
const AUTH0_ALLOW_DELETE = true;
89+
let wasUpdateCalled = false;
90+
let wasCreateCalled = false;
91+
const auth0 = {
92+
emails: {
93+
provider: {
94+
create: () => {
95+
wasCreateCalled = true;
96+
return Promise.resolve({});
97+
},
98+
update: () => {
99+
wasUpdateCalled = true;
100+
return Promise.resolve({});
101+
},
102+
get: () => Promise.resolve({}),
103+
},
104+
},
105+
};
106+
107+
const handler = new emailProvider.default({
108+
client: auth0,
109+
config: () => AUTH0_ALLOW_DELETE,
110+
});
111+
const stageFn = Object.getPrototypeOf(handler).processChanges;
112+
113+
await stageFn.apply(handler, [{ emailProvider: {} }]);
114+
115+
expect(wasUpdateCalled).to.equal(false);
116+
expect(wasCreateCalled).to.equal(false);
117+
});
118+
87119
it('should not delete email provider if set to empty object and if AUTH0_ALLOW_DELETE is false', async () => {
88120
const AUTH0_ALLOW_DELETE = false;
89121

0 commit comments

Comments
 (0)