From 6462fd38cd45a7d2ad44ac12e5740077410567ac Mon Sep 17 00:00:00 2001 From: Chaoyi Yuan Date: Fri, 2 Jun 2023 15:29:04 +0800 Subject: [PATCH] fix: no detail error message when botAadApp/create failed --- .../src/component/driver/botAadApp/create.ts | 6 ++++- .../component/driver/botAadApp/create.test.ts | 25 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/fx-core/src/component/driver/botAadApp/create.ts b/packages/fx-core/src/component/driver/botAadApp/create.ts index 82d4a02dfe..56d4023bd4 100644 --- a/packages/fx-core/src/component/driver/botAadApp/create.ts +++ b/packages/fx-core/src/component/driver/botAadApp/create.ts @@ -141,7 +141,7 @@ export class CreateBotAadAppDriver implements StepDriver { output: outputs, summaries: [summary], }; - } catch (error) { + } catch (error: any) { if (error instanceof UserError || error instanceof SystemError) { context.logProvider?.error( getLocalizedString(logMessageKeys.failExecuteDriver, actionName, error.displayMessage) @@ -161,6 +161,10 @@ export class CreateBotAadAppDriver implements StepDriver { } } + if (error.name === "AadCreateAppError") { + throw new UnhandledUserError(new Error(error.details[0]), actionName); + } + const message = JSON.stringify(error); context.logProvider?.error( getLocalizedString(logMessageKeys.failExecuteDriver, actionName, message) diff --git a/packages/fx-core/tests/component/driver/botAadApp/create.test.ts b/packages/fx-core/tests/component/driver/botAadApp/create.test.ts index fc019f23b5..19723b7801 100644 --- a/packages/fx-core/tests/component/driver/botAadApp/create.test.ts +++ b/packages/fx-core/tests/component/driver/botAadApp/create.test.ts @@ -17,6 +17,7 @@ import { UnhandledError, UnhandledUserError, } from "../../../../src/error/common"; +import { CreateAADAppError } from "../../../../src/component/resource/botService/errors"; chai.use(chaiAsPromised); const expect = chai.expect; @@ -209,6 +210,30 @@ describe("botAadAppCreate", async () => { .and.is.instanceOf(UserError); }); + it("should show detailed error when GraphClient throws CreateAADAppError", async () => { + sinon.stub(GraphClient, "registerAadApp").callsFake(() => { + throw new CreateAADAppError({ + response: { + data: { + error: { + message: "Quota exceeded", + }, + }, + }, + }); + }); + const args: any = { + name: expectedDisplayName, + }; + await expect(createBotAadAppDriver.handler(args, mockedDriverContext)).to.be.rejected.then( + (error) => { + console.log(JSON.stringify(error)); + expect(error instanceof UnhandledUserError).to.be.true; + expect(error.message).contains("Quota exceeded"); + } + ); + }); + it("should be good when reusing existing bot in env", async () => { envRestore = mockedEnv({ [outputKeys.BOT_ID]: expectedClientId,