Skip to content

Commit 1fb7aae

Browse files
authored
Merge pull request #845 from salesforcecli/cd/improve-html-res-handle
fix(org status): improve err handling
2 parents 979614b + 38de6c6 commit 1fb7aae

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/shared/orgListUtil.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,6 @@ const authErrorHandler = async (err: unknown, username: string): Promise<string>
378378
// Orgs under maintenace return html as the error message.
379379
if (error.message.includes('maintenance')) return 'Down (Maintenance)';
380380
// handle other potential html responses
381-
if (error.message.includes('<html>')) return 'Bad Response';
381+
if (error.message.includes('<html>') || error.message.includes('<!DOCTYPE HTML>')) return 'Bad Response';
382382
return (error.code ?? error.message) as string;
383383
};

test/shared/orgListUtil.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,30 @@ describe('orgListUtil tests', () => {
235235
expect(checkNonScratchOrgIsDevHub.called).to.be.false;
236236
});
237237

238+
it('handles html responses for deactivated/expired non-scratch orgs', async () => {
239+
determineConnectedStatusForNonScratchOrg.restore();
240+
stubMethod(sandbox, Org, 'create').returns(Org.prototype);
241+
stubMethod(sandbox, Org.prototype, 'getField').returns(undefined);
242+
stubMethod(sandbox, Org.prototype, 'getUsername').returns(devHubConfigFields.username);
243+
stubMethod(sandbox, Org.prototype, 'refreshAuth').rejects({
244+
message: `
245+
<!DOCTYPE HTML>
246+
<html lang=en-US>
247+
248+
<head>
249+
<meta charset=UTF-8>
250+
<title>Error Page</title>
251+
<style>
252+
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ html { font-family: sans-serif; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100% } body { margin: 0 } article, aside, details, figcaption, figure, footer, header, hgroup, …if (result.success === hostnames.length) { clearInterval(interval); success(); return; } if (Date.now() - startTime > totalThresholdDelay) { clearInterval(interval); failure(); return; } for (var i = 0; i < hostnames.length; i++) { if (result["host" + i] === undefined) { result["host" + i] = false; } if (!result["host" + i]) { test(i); } } }, retry); } start(hosts); </script> </body> </html>
253+
`,
254+
});
255+
256+
const orgGroups = await OrgListUtil.readLocallyValidatedMetaConfigsGroupedByOrgType(fileNames, false);
257+
expect(orgGroups.nonScratchOrgs).to.have.length(1);
258+
expect(orgGroups.nonScratchOrgs[0].connectedStatus).to.equal('Bad Response');
259+
expect(checkNonScratchOrgIsDevHub.called).to.be.false;
260+
});
261+
238262
it('handles auth file problems for non-scratch orgs', async () => {
239263
determineConnectedStatusForNonScratchOrg.restore();
240264
stubMethod(sandbox, Org, 'create').rejects({ message: 'bad file' });

0 commit comments

Comments
 (0)