From 571428c07fdd715e31cb8e704b0c454e770a3452 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Fri, 5 Jun 2020 14:58:01 -0700 Subject: [PATCH 1/4] Add "@azure/identity" to the external list for test rollup --- sdk/servicebus/service-bus/rollup.base.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/servicebus/service-bus/rollup.base.config.js b/sdk/servicebus/service-bus/rollup.base.config.js index 8f53410ffc34..3850e09b1696 100644 --- a/sdk/servicebus/service-bus/rollup.base.config.js +++ b/sdk/servicebus/service-bus/rollup.base.config.js @@ -79,7 +79,8 @@ export function nodeConfig({ test = false, production = false } = {}) { "fs", "path", "@azure/arm-servicebus", - "@azure/ms-rest-nodeauth" + "@azure/ms-rest-nodeauth", + "@azure/identity" ); baseConfig.onwarn = ignoreKnownWarnings; From 815832631f59e347e6e7ab074a115dfec7985d04 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Fri, 5 Jun 2020 15:04:11 -0700 Subject: [PATCH 2/4] undo AAD test comments --- .../service-bus/test/serviceBusClient.spec.ts | 142 +++++++++--------- 1 file changed, 73 insertions(+), 69 deletions(-) diff --git a/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts b/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts index 8cf666f59d7a..ca6e79261349 100644 --- a/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts +++ b/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts @@ -1,34 +1,33 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +import { EnvironmentCredential } from "@azure/identity"; import chai from "chai"; import chaiAsPromised from "chai-as-promised"; +import * as dotenv from "dotenv"; import Long from "long"; import { MessagingError, Receiver, ServiceBusClient, SessionReceiver } from "../src"; import { Sender } from "../src/sender"; -import { getReceiverClosedErrorMsg, getSenderClosedErrorMsg } from "../src/util/errors"; -import { TestClientType, TestMessage, checkWithTimeout, isMessagingError } from "./utils/testUtils"; import { DispositionType, ReceivedMessageWithLock, ServiceBusMessage } from "../src/serviceBusMessage"; - -const should = chai.should(); -chai.use(chaiAsPromised); - -import { getEnvVars, isNode } from "../test/utils/envVarUtils"; -import * as dotenv from "dotenv"; -dotenv.config(); - -// import { EnvironmentCredential } from "@azure/identity"; +import { getReceiverClosedErrorMsg, getSenderClosedErrorMsg } from "../src/util/errors"; +import { EnvVarNames, getEnvVars, isNode } from "../test/utils/envVarUtils"; +import { checkWithTimeout, isMessagingError, TestClientType, TestMessage } from "./utils/testUtils"; import { + createServiceBusClientForTests, EntityName, ServiceBusClientForTests, - createServiceBusClientForTests, testPeekMsgsLength } from "./utils/testutils2"; +const should = chai.should(); +chai.use(chaiAsPromised); + +dotenv.config(); + describe("Create ServiceBusClient", function(): void { let sbClient: ServiceBusClient; @@ -63,7 +62,7 @@ describe("Random scheme in the endpoint from connection string", function(): voi sbClientWithRelaxedEndPoint = new ServiceBusClient( getEnvVars().SERVICEBUS_CONNECTION_STRING.replace("sb://", "CheeseBurger://") ); - sender = sbClientWithRelaxedEndPoint.createSender(entities.queue!); + sender = await sbClientWithRelaxedEndPoint.createSender(entities.queue!); receiver = !entities.usesSessions ? sbClientWithRelaxedEndPoint.createReceiver(entities.queue!, "peekLock") : await sbClientWithRelaxedEndPoint.createSessionReceiver(entities.queue!, "peekLock", { @@ -283,29 +282,28 @@ describe("Test ServiceBusClient creation", function(): void { "Endpoint=sb://((.*).servicebus.windows.net)" ) || "")[1]; - // `keytar` being used in `@azure/identity` is causing the build to fail when imported for the tests. - // /** - // * Utility to create EnvironmentCredential using `@azure/identity` - // */ - // function getDefaultTokenCredential() { - // should.exist( - // env[EnvVarNames.AZURE_CLIENT_ID], - // "define AZURE_CLIENT_ID in your environment before running integration tests." - // ); - // should.exist( - // env[EnvVarNames.AZURE_TENANT_ID], - // "define AZURE_TENANT_ID in your environment before running integration tests." - // ); - // should.exist( - // env[EnvVarNames.AZURE_CLIENT_SECRET], - // "define AZURE_CLIENT_SECRET in your environment before running integration tests." - // ); - // should.exist( - // env[EnvVarNames.SERVICEBUS_CONNECTION_STRING], - // "define SERVICEBUS_CONNECTION_STRING in your environment before running integration tests." - // ); - // return new EnvironmentCredential(); - // } + /** + * Utility to create EnvironmentCredential using `@azure/identity` + */ + function getDefaultTokenCredential() { + should.exist( + env[EnvVarNames.AZURE_CLIENT_ID], + "define AZURE_CLIENT_ID in your environment before running integration tests." + ); + should.exist( + env[EnvVarNames.AZURE_TENANT_ID], + "define AZURE_TENANT_ID in your environment before running integration tests." + ); + should.exist( + env[EnvVarNames.AZURE_CLIENT_SECRET], + "define AZURE_CLIENT_SECRET in your environment before running integration tests." + ); + should.exist( + env[EnvVarNames.SERVICEBUS_CONNECTION_STRING], + "define SERVICEBUS_CONNECTION_STRING in your environment before running integration tests." + ); + return new EnvironmentCredential(); + } it("throws error for invalid tokenCredentials", async function(): Promise { try { @@ -337,39 +335,45 @@ describe("Test ServiceBusClient creation", function(): void { should.equal(errorWasThrown, true, "Error thrown flag must be true"); }); - // if (isNode) { - // it("Coerces input to string for host in credential based constructor", async function(): Promise< - // void - // > { - // const tokenCreds = getDefaultTokenCredential(); - // sbClient = new ServiceBusClient(123 as any, tokenCreds); - // should.equal(sbClient.name, "sb://123/", "Name of the namespace is different than expected"); - // }); - - // it("sends a message to the ServiceBus entity", async function(): Promise { - // const tokenCreds = getDefaultTokenCredential(); - - // const serviceBusClient = createServiceBusClientForTests(); - // const entities = await serviceBusClient.test.createTestEntities( - // TestClientType.UnpartitionedQueue - // ); - // await serviceBusClient.close(); - - // const sbClient = new ServiceBusClient(serviceBusEndpoint, tokenCreds); - // sbClient.should.be.an.instanceof(ServiceBusClient); - - // const sender = sbClient.createSender(entities.queue!); - // const receiver = await sbClient.createReceiver(entities.queue!, "peekLock"); - // const testMessages = TestMessage.getSample(); - // await sender.send(testMessages); - // const msgs = await receiver.receiveBatch(1); - - // should.equal(Array.isArray(msgs), true, "`ReceivedMessages` is not an array"); - // should.equal(msgs[0].body, testMessages.body, "MessageBody is different than expected"); - // should.equal(msgs.length, 1, "Unexpected number of messages"); - // await sbClient.close(); - // }); - // } + if (isNode) { + it("throws error for invalid host name", async function(): Promise { + try { + new ServiceBusClient(123 as any, getDefaultTokenCredential()); + } catch (error) { + errorWasThrown = true; + should.equal( + error.message, + "`host` parameter is not a string", + "ErrorMessage is different than expected" + ); + } + should.equal(errorWasThrown, true, "Error thrown flag must be true"); + }); + + it("sends a message to the ServiceBus entity", async function(): Promise { + const tokenCreds = getDefaultTokenCredential(); + + const serviceBusClient = createServiceBusClientForTests(); + const entities = await serviceBusClient.test.createTestEntities( + TestClientType.UnpartitionedQueue + ); + await serviceBusClient.close(); + + const sbClient = new ServiceBusClient(serviceBusEndpoint, tokenCreds); + sbClient.should.be.an.instanceof(ServiceBusClient); + + const sender = sbClient.createSender(entities.queue!); + const receiver = sbClient.createReceiver(entities.queue!, "peekLock"); + const testMessages = TestMessage.getSample(); + await sender.send(testMessages); + const msgs = await receiver.receiveBatch(1); + + should.equal(Array.isArray(msgs), true, "`ReceivedMessages` is not an array"); + should.equal(msgs[0].body, testMessages.body, "MessageBody is different than expected"); + should.equal(msgs.length, 1, "Unexpected number of messages"); + await sbClient.close(); + }); + } }); describe("Errors after close()", function(): void { From ba70b348bca6aa34d56c04bd348835c2f06b63a2 Mon Sep 17 00:00:00 2001 From: Harsha Nalluru Date: Fri, 5 Jun 2020 15:29:12 -0700 Subject: [PATCH 3/4] Update sdk/servicebus/service-bus/test/serviceBusClient.spec.ts Co-authored-by: Richard Park <51494936+richardpark-msft@users.noreply.github.com> --- sdk/servicebus/service-bus/test/serviceBusClient.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts b/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts index ca6e79261349..e003e4cd2e68 100644 --- a/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts +++ b/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts @@ -62,7 +62,7 @@ describe("Random scheme in the endpoint from connection string", function(): voi sbClientWithRelaxedEndPoint = new ServiceBusClient( getEnvVars().SERVICEBUS_CONNECTION_STRING.replace("sb://", "CheeseBurger://") ); - sender = await sbClientWithRelaxedEndPoint.createSender(entities.queue!); + sender = sbClientWithRelaxedEndPoint.createSender(entities.queue!); receiver = !entities.usesSessions ? sbClientWithRelaxedEndPoint.createReceiver(entities.queue!, "peekLock") : await sbClientWithRelaxedEndPoint.createSessionReceiver(entities.queue!, "peekLock", { From d71e9631b98fafbfe7ba7f69e2a38f2b64805045 Mon Sep 17 00:00:00 2001 From: HarshaNalluru Date: Mon, 8 Jun 2020 12:33:33 -0700 Subject: [PATCH 4/4] remove unnecessary check --- sdk/servicebus/service-bus/test/serviceBusClient.spec.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts b/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts index e003e4cd2e68..6c7213208117 100644 --- a/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts +++ b/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts @@ -360,8 +360,6 @@ describe("Test ServiceBusClient creation", function(): void { await serviceBusClient.close(); const sbClient = new ServiceBusClient(serviceBusEndpoint, tokenCreds); - sbClient.should.be.an.instanceof(ServiceBusClient); - const sender = sbClient.createSender(entities.queue!); const receiver = sbClient.createReceiver(entities.queue!, "peekLock"); const testMessages = TestMessage.getSample();