From 63415b7dd280094f490dac0b46d82d7e78cf2549 Mon Sep 17 00:00:00 2001 From: Julius Date: Thu, 30 Apr 2020 21:46:31 +0200 Subject: [PATCH] Jfheins/improve error message (#21295) * Add test for empty URL * Throw if URL is empty, adjust test --- .../clients/ts/signalr/src/HubConnectionBuilder.ts | 1 + src/SignalR/clients/ts/signalr/src/Utils.ts | 5 +++++ .../clients/ts/signalr/tests/HubConnectionBuilder.test.ts | 8 +++++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/SignalR/clients/ts/signalr/src/HubConnectionBuilder.ts b/src/SignalR/clients/ts/signalr/src/HubConnectionBuilder.ts index fa5d7432b9..5537ec9124 100644 --- a/src/SignalR/clients/ts/signalr/src/HubConnectionBuilder.ts +++ b/src/SignalR/clients/ts/signalr/src/HubConnectionBuilder.ts @@ -122,6 +122,7 @@ export class HubConnectionBuilder { public withUrl(url: string, options: IHttpConnectionOptions): HubConnectionBuilder; public withUrl(url: string, transportTypeOrOptions?: IHttpConnectionOptions | HttpTransportType): HubConnectionBuilder { Arg.isRequired(url, "url"); + Arg.isNotEmpty(url, "url"); this.url = url; diff --git a/src/SignalR/clients/ts/signalr/src/Utils.ts b/src/SignalR/clients/ts/signalr/src/Utils.ts index dae2404807..065a5c30de 100644 --- a/src/SignalR/clients/ts/signalr/src/Utils.ts +++ b/src/SignalR/clients/ts/signalr/src/Utils.ts @@ -19,6 +19,11 @@ export class Arg { throw new Error(`The '${name}' argument is required.`); } } + public static isNotEmpty(val: string, name: string): void { + if (!val || val.match(/^\s*$/)) { + throw new Error(`The '${name}' argument should not be empty.`); + } + } public static isIn(val: any, values: any, name: string): void { // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself. diff --git a/src/SignalR/clients/ts/signalr/tests/HubConnectionBuilder.test.ts b/src/SignalR/clients/ts/signalr/tests/HubConnectionBuilder.test.ts index e43f3a336c..7b768a55ec 100644 --- a/src/SignalR/clients/ts/signalr/tests/HubConnectionBuilder.test.ts +++ b/src/SignalR/clients/ts/signalr/tests/HubConnectionBuilder.test.ts @@ -73,12 +73,14 @@ class CapturingConsole { registerUnhandledRejectionHandler(); describe("HubConnectionBuilder", () => { - eachMissingValue((val, name) => { - it(`withUrl throws if url is ${name}`, () => { + for (const val of [undefined, null, ""]) { + it(`withUrl throws if url is ${String(val)}`, () => { const builder = new HubConnectionBuilder(); - expect(() => builder.withUrl(val!)).toThrow("The 'url' argument is required."); + expect(() => builder.withUrl(val!)).toThrow(/The 'url' argument (is required|should not be empty)./); }); + } + eachMissingValue((val, name) => { it(`withHubProtocol throws if protocol is ${name}`, () => { const builder = new HubConnectionBuilder(); expect(() => builder.withHubProtocol(val!)).toThrow("The 'protocol' argument is required.");