From 736542433abecbf8f6abb046815d7bc60f3d0abf Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Tue, 7 Jul 2020 18:38:50 -0700 Subject: [PATCH] [Service Bus] Invalid param tests don't need live resources --- .../test/invalidParameters.spec.ts | 393 ++++-------------- 1 file changed, 73 insertions(+), 320 deletions(-) diff --git a/sdk/servicebus/service-bus/test/invalidParameters.spec.ts b/sdk/servicebus/service-bus/test/invalidParameters.spec.ts index d29608e60b9e..a17e4f42bbf6 100644 --- a/sdk/servicebus/service-bus/test/invalidParameters.spec.ts +++ b/sdk/servicebus/service-bus/test/invalidParameters.spec.ts @@ -8,10 +8,10 @@ import chaiAsPromised from "chai-as-promised"; chai.use(chaiAsPromised); import { TestClientType, TestMessage } from "./utils/testUtils"; import { ServiceBusClientForTests, createServiceBusClientForTests } from "./utils/testutils2"; -import { Receiver } from "../src/receivers/receiver"; import { Sender } from "../src/sender"; import { SessionReceiver } from "../src/receivers/sessionReceiver"; import { ReceivedMessageWithLock } from "../src/serviceBusMessage"; +import { ServiceBusClient } from '../src'; describe("invalid parameters", () => { let serviceBusClient: ServiceBusClientForTests; @@ -24,277 +24,6 @@ describe("invalid parameters", () => { return serviceBusClient.test.after(); }); - describe("Invalid parameters in Sender/ReceiverClients for PartitionedQueue", function(): void { - let receiver: Receiver; - - // Since, the below tests never actually make use of any AMQP links, there is no need to create - // new sender/receiver clients before each test. Doing it once for each describe block. - before(async () => { - const entityNames = await serviceBusClient.test.createTestEntities( - TestClientType.PartitionedQueue - ); - - receiver = await serviceBusClient.test.getPeekLockReceiver(entityNames); - }); - - after(async () => { - await serviceBusClient.test.afterEach(); - }); - - it("Peek: Invalid maxMessageCount for Queue", async function(): Promise { - const peekedMessages = await receiver.peekMessages(-100); - should.equal(peekedMessages.length, 0); - }); - - it("Peek: Wrong type maxMessageCount for Queue", async function(): Promise { - let caughtError: Error | undefined; - try { - // @ts-expect-error - await receiver.peekMessages("somestring"); - } catch (error) { - caughtError = error; - } - should.equal(caughtError && caughtError.name, "TypeError"); - should.equal( - caughtError && caughtError.message, - `The parameter "maxMessageCount" should be of type "number"` - ); - }); - - it("PeekBySequenceNumber: Invalid maxMessageCount for Queue", async function(): Promise { - const peekedMessages = await receiver.peekMessages(-100, { - fromSequenceNumber: Long.ZERO - }); - should.equal(peekedMessages.length, 0); - }); - - it("PeekBySequenceNumber: Wrong type maxMessageCount for Queue", async function(): Promise< - void - > { - let caughtError: Error | undefined; - try { - // @ts-expect-error - await receiver.peekMessages("somestring", { - fromSequenceNumber: Long.ZERO - }); - } catch (error) { - caughtError = error; - } - should.equal(caughtError && caughtError.name, "TypeError"); - should.equal( - caughtError && caughtError.message, - `The parameter "maxMessageCount" should be of type "number"` - ); - }); - - it("PeekBySequenceNumber: Wrong type fromSequenceNumber for Queue", async function(): Promise< - void - > { - let caughtError: Error | undefined; - try { - await receiver.peekMessages(1, { fromSequenceNumber: "somestring" as any }); - } catch (error) { - caughtError = error; - } - should.equal(caughtError && caughtError.name, "TypeError"); - should.equal( - caughtError && caughtError.message, - `The parameter "fromSequenceNumber" should be of type "Long"` - ); - }); - }); - - describe("Invalid parameters in Sender/ReceiverClients for PartitionedSubscription", function(): void { - let subscriptionReceiverClient: Receiver; - // let subscriptionRuleManager: SubscriptionRuleManager; - - // Since, the below tests never actually make use of any AMQP links, there is no need to create - // new sender/receiver clients before each test. Doing it once for each describe block. - before(async () => { - const entityNames = await serviceBusClient.test.createTestEntities( - TestClientType.PartitionedSubscription - ); - - subscriptionReceiverClient = await serviceBusClient.test.getPeekLockReceiver(entityNames); - - // subscriptionRuleManager = serviceBusClient.test.addToCleanup( - // serviceBusClient.getSubscriptionRuleManager(entityNames.topic!, entityNames.subscription!) - // ); - }); - - after(() => { - return serviceBusClient.test.afterEach(); - }); - - it("Peek: Invalid maxMessageCount for Subscription", async function(): Promise { - const browsedMessages = await subscriptionReceiverClient.peekMessages(-100); - should.equal(browsedMessages.length, 0); - }); - - it("Peek: Wrong type maxMessageCount for Subscription", async function(): Promise { - let caughtError: Error | undefined; - try { - // @ts-expect-error - await subscriptionReceiverClient.peekMessages("somestring"); - } catch (error) { - caughtError = error; - } - should.equal(caughtError && caughtError.name, "TypeError"); - should.equal( - caughtError && caughtError.message, - `The parameter "maxMessageCount" should be of type "number"` - ); - }); - - it("PeekBySequenceNumber: Invalid maxMessageCount for Subscription", async function(): Promise< - void - > { - const browsedMessages = await subscriptionReceiverClient.peekMessages(-100, { - fromSequenceNumber: Long.ZERO - }); - should.equal(browsedMessages.length, 0); - }); - - it("PeekBySequenceNumber: Wrong type maxMessageCount for Subscription", async function(): Promise< - void - > { - let caughtError: Error | undefined; - try { - // @ts-expect-error - await subscriptionReceiverClient.peekMessages("somestring", { - fromSequenceNumber: Long.ZERO - }); - } catch (error) { - caughtError = error; - } - should.equal(caughtError && caughtError.name, "TypeError"); - should.equal( - caughtError && caughtError.message, - `The parameter "maxMessageCount" should be of type "number"` - ); - }); - - it("PeekBySequenceNumber: Wrong type fromSequenceNumber for Subscription", async function(): Promise< - void - > { - let caughtError: Error | undefined; - try { - await subscriptionReceiverClient.peekMessages(1, { - fromSequenceNumber: "somestring" as any - }); - } catch (error) { - caughtError = error; - } - should.equal(caughtError && caughtError.name, "TypeError"); - should.equal( - caughtError && caughtError.message, - `The parameter "fromSequenceNumber" should be of type "Long"` - ); - }); - - // it("AddRule: Missing ruleName", async function(): Promise { - // let caughtError: Error | undefined; - // try { - // await subscriptionRuleManager.addRule(undefined as any, undefined as any); - // } catch (error) { - // caughtError = error; - // } - // should.equal(caughtError && caughtError.name, "TypeError"); - // should.equal(caughtError && caughtError.message, `Missing parameter "ruleName"`); - // }); - - // it("AddRule: Empty string as ruleName", async function(): Promise { - // let caughtError: Error | undefined; - // try { - // await subscriptionRuleManager.addRule("", false); - // } catch (error) { - // caughtError = error; - // } - // should.equal(caughtError && caughtError.name, "TypeError"); - // should.equal( - // caughtError && caughtError.message, - // `Empty string not allowed in parameter "ruleName"` - // ); - // }); - - // it("AddRule: Missing filter", async function(): Promise { - // let caughtError: Error | undefined; - // try { - // await subscriptionRuleManager.addRule("myrule", undefined as any); - // } catch (error) { - // caughtError = error; - // } - // should.equal(caughtError && caughtError.name, "TypeError"); - // should.equal(caughtError && caughtError.message, `Missing parameter "filter"`); - // }); - - // it("AddRule: Invalid filter", async function(): Promise { - // let caughtError: Error | undefined; - // try { - // await subscriptionRuleManager.addRule("myrule", { random: "value" } as any); - // } catch (error) { - // caughtError = error; - // } - // should.equal(caughtError && caughtError.name, "TypeError"); - // should.equal( - // caughtError && caughtError.message, - // `The parameter "filter" should be either a boolean, string or implement the CorrelationFilter interface.` - // ); - // }); - - // it("RemoveRule: Missing ruleName", async function(): Promise { - // let caughtError: Error | undefined; - // try { - // await subscriptionRuleManager.removeRule(undefined as any); - // } catch (error) { - // caughtError = error; - // } - // should.equal(caughtError && caughtError.name, "TypeError"); - // should.equal(caughtError && caughtError.message, `Missing parameter "ruleName"`); - // }); - - // it("RemoveRule: Empty string as ruleName", async function(): Promise { - // let caughtError: Error | undefined; - // try { - // await subscriptionRuleManager.removeRule(""); - // } catch (error) { - // caughtError = error; - // } - // should.equal(caughtError && caughtError.name, "TypeError"); - // should.equal( - // caughtError && caughtError.message, - // `Empty string not allowed in parameter "ruleName"` - // ); - // }); - - // it("Add and Remove Rule: Coerce RuleName into string", async function(): Promise { - // // Clean up existing rules - // let rules = await subscriptionRuleManager.getRules(); - // await Promise.all(rules.map((rule) => subscriptionRuleManager.removeRule(rule.name))); - - // // Add rule with number as name - // await subscriptionRuleManager.addRule(123 as any, true); - // rules = await subscriptionRuleManager.getRules(); - // should.equal( - // rules.some((rule) => rule.name === "123"), - // true, - // "Added rule not found" - // ); - - // // Remove rule with number as name - // await subscriptionRuleManager.removeRule(123 as any); - // rules = await subscriptionRuleManager.getRules(); - // should.equal( - // rules.some((rule) => rule.name === "123"), - // false, - // "Removed rule still found" - // ); - - // // Add default rule so that other tests are not affected - // await subscriptionRuleManager.addRule(subscriptionRuleManager.defaultRuleName, true); - // }); - }); - describe("Invalid parameters in SessionReceiver", function(): void { let sender: Sender; let receiver: SessionReceiver; @@ -500,37 +229,15 @@ describe("invalid parameters", () => { }); describe("Invalid parameters in Receiver", function(): void { - let sender: Sender; - let receiver: Receiver; - - // Since, the below tests never actually make use of any AMQP links, there is no need to create - // new sender/receiver clients before each test. Doing it once for each describe block. - before(async () => { - const entityNames = await serviceBusClient.test.createTestEntities( - TestClientType.PartitionedQueueWithSessions - ); - - sender = serviceBusClient.test.addToCleanup( - serviceBusClient.createSender(entityNames.queue!) - ); - - receiver = await serviceBusClient.test.getPeekLockReceiver(entityNames); - - await sender.sendMessages(TestMessage.getSessionSample()); - }); - - after(async () => { - return serviceBusClient.test.afterEach(); - }); + const mockConnectionString = "Endpoint=sb://test/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=test"; + const sbClient = new ServiceBusClient(mockConnectionString); + const receiver = sbClient.createReceiver("dummyQueue", "peekLock"); it("Receiver: Missing ReceiveMode", async function(): Promise { let errorCaught: string = ""; try { - const { queue } = serviceBusClient.test.getTestEntities( - TestClientType.PartitionedQueueWithSessions - ); - - await serviceBusClient.createReceiver(queue!, undefined as any); + // @ts-expect-error + sbClient.createReceiver("dummyQueue"); } catch (error) { errorCaught = error.message; } @@ -544,11 +251,8 @@ describe("invalid parameters", () => { it("Receiver: Invalid ReceiveMode", async function(): Promise { let errorCaught: string = ""; try { - const { queue } = serviceBusClient.test.getTestEntities( - TestClientType.PartitionedQueueWithSessions - ); - - await serviceBusClient.createReceiver(queue!, 123 as any); + // @ts-expect-error + sbClient.createReceiver("dummyQueue", 123); } catch (error) { errorCaught = error.message; } @@ -559,6 +263,68 @@ describe("invalid parameters", () => { ); }); + it("Peek: Invalid maxMessageCount for Queue", async function(): Promise { + const peekedMessages = await receiver.peekMessages(-100); + should.equal(peekedMessages.length, 0); + }); + + it("Peek: Wrong type maxMessageCount for Queue", async function(): Promise { + let caughtError: Error | undefined; + try { + // @ts-expect-error + await receiver.peekMessages("somestring"); + } catch (error) { + caughtError = error; + } + should.equal(caughtError && caughtError.name, "TypeError"); + should.equal( + caughtError && caughtError.message, + `The parameter "maxMessageCount" should be of type "number"` + ); + }); + + it("PeekBySequenceNumber: Invalid maxMessageCount for Queue", async function(): Promise { + const peekedMessages = await receiver.peekMessages(-100, { + fromSequenceNumber: Long.ZERO + }); + should.equal(peekedMessages.length, 0); + }); + + it("PeekBySequenceNumber: Wrong type maxMessageCount for Queue", async function(): Promise< + void + > { + let caughtError: Error | undefined; + try { + // @ts-expect-error + await receiver.peekMessages("somestring", { + fromSequenceNumber: Long.ZERO + }); + } catch (error) { + caughtError = error; + } + should.equal(caughtError && caughtError.name, "TypeError"); + should.equal( + caughtError && caughtError.message, + `The parameter "maxMessageCount" should be of type "number"` + ); + }); + + it("PeekBySequenceNumber: Wrong type fromSequenceNumber for Queue", async function(): Promise< + void + > { + let caughtError: Error | undefined; + try { + await receiver.peekMessages(1, { fromSequenceNumber: "somestring" as any }); + } catch (error) { + caughtError = error; + } + should.equal(caughtError && caughtError.name, "TypeError"); + should.equal( + caughtError && caughtError.message, + `The parameter "fromSequenceNumber" should be of type "Long"` + ); + }); + it("RegisterMessageHandler: Missing onMessage in Receiver", async function(): Promise { let caughtError: Error | undefined; try { @@ -630,22 +396,9 @@ describe("invalid parameters", () => { }); describe("Invalid parameters in Sender", function(): void { - let sender: Sender; - - // Since, the below tests never actually make use of any AMQP links, there is no need to create - // new sender/receiver clients before each test. Doing it once for each describe block. - before(async () => { - const { queue } = await serviceBusClient.test.createTestEntities( - TestClientType.PartitionedQueue - ); - - // const clients = await getSenderReceiverClients(TestClientType.PartitionedQueue, "peekLock"); - sender = serviceBusClient.test.addToCleanup(serviceBusClient.createSender(queue!)); - }); - - after(() => { - return serviceBusClient.test.afterEach(); - }); + const mockConnectionString = "Endpoint=sb://test/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=test"; + const sbClient = new ServiceBusClient(mockConnectionString); + const sender = sbClient.createSender("dummyQueue"); it("ScheduledMessages: Missing date in Sender", async function(): Promise { let caughtError: Error | undefined;