@azure/web-pubsub 1.1.3-alpha.20240110.1 → 1.1.3-alpha.20240112.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,12 +21,12 @@ describe("Group client working with a group", function () {
21
21
  });
22
22
  it("can broadcast to groups", async () => {
23
23
  await client.sendToAll("hello", { contentType: "text/plain", onResponse });
24
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
24
+ assert.equal(lastResponse?.status, 202);
25
25
  await client.sendToAll({ x: 1, y: 2 }, { onResponse });
26
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
26
+ assert.equal(lastResponse?.status, 202);
27
27
  const binaryMessage = new Uint8Array(10);
28
28
  await client.sendToAll(binaryMessage.buffer, { onResponse });
29
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
29
+ assert.equal(lastResponse?.status, 202);
30
30
  });
31
31
  it("can broadcast to group with filter", async () => {
32
32
  await client.sendToAll("hello", {
@@ -35,7 +35,7 @@ describe("Group client working with a group", function () {
35
35
  messageTtlSeconds: 60,
36
36
  onResponse,
37
37
  });
38
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
38
+ assert.equal(lastResponse?.status, 202);
39
39
  let error;
40
40
  try {
41
41
  await client.sendToAll("hello", {
@@ -62,13 +62,13 @@ describe("Group client working with a group", function () {
62
62
  error = e;
63
63
  }
64
64
  assert.exists(error);
65
- assert.strictEqual(error === null || error === void 0 ? void 0 : error.name, "RestError");
65
+ assert.strictEqual(error?.name, "RestError");
66
66
  try {
67
67
  await client.removeConnection("xxxx", { onResponse });
68
68
  }
69
69
  catch (e) {
70
70
  assert.exists(error);
71
- assert.strictEqual(error === null || error === void 0 ? void 0 : error.name, "RestError");
71
+ assert.strictEqual(error?.name, "RestError");
72
72
  }
73
73
  });
74
74
  // skipping until we can record better tests with an actual user active.
@@ -102,7 +102,7 @@ describe("client working with multiple groups", function () {
102
102
  await hubClient.addConnectionsToGroups(["group1", "group2"], "userId eq 'user 1'", {
103
103
  onResponse,
104
104
  });
105
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 200);
105
+ assert.equal(lastResponse?.status, 200);
106
106
  let error;
107
107
  try {
108
108
  await hubClient.addConnectionsToGroups(["group1", "group2"], "invalid filter");
@@ -120,7 +120,7 @@ describe("client working with multiple groups", function () {
120
120
  await hubClient.removeConnectionsFromGroups(["group1", "group2"], "userId eq 'user 1'", {
121
121
  onResponse,
122
122
  });
123
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 200);
123
+ assert.equal(lastResponse?.status, 200);
124
124
  let error;
125
125
  try {
126
126
  await hubClient.removeConnectionsFromGroups(["group1", "group2"], "invalid filter");
@@ -1 +1 @@
1
- {"version":3,"file":"groups.spec.js","sourceRoot":"","sources":["../../test/groups.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/* eslint-disable no-invalid-this */\nimport { Recorder, assertEnvironmentVariable } from \"@azure-tools/test-recorder\";\nimport { WebPubSubServiceClient, WebPubSubGroup } from \"../src\";\nimport { assert } from \"chai\";\nimport recorderOptions from \"./testEnv\";\nimport { FullOperationResponse } from \"@azure/core-client\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\n/* eslint-disable @typescript-eslint/no-invalid-this */\n\ndescribe(\"Group client working with a group\", function () {\n let recorder: Recorder;\n let client: WebPubSubGroup;\n let lastResponse: FullOperationResponse | undefined;\n function onResponse(response: FullOperationResponse): void {\n lastResponse = response;\n }\n beforeEach(async function () {\n recorder = new Recorder(this.currentTest);\n await recorder.start(recorderOptions);\n const hubClient = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"),\n \"simplechat\",\n recorder.configureClientOptions({}),\n );\n\n client = hubClient.group(\"group\");\n });\n\n it(\"can broadcast to groups\", async () => {\n await client.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await client.sendToAll({ x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await client.sendToAll(binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can broadcast to group with filter\", async () => {\n await client.sendToAll(\"hello\", {\n contentType: \"text/plain\",\n filter: \"userId ne 'user1'\",\n messageTtlSeconds: 60,\n onResponse,\n });\n assert.equal(lastResponse?.status, 202);\n\n let error;\n try {\n await client.sendToAll(\"hello\", {\n contentType: \"text/plain\",\n filter: \"invalid filter\",\n });\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n\n it(\"can manage connections\", async () => {\n // this endpoint returns 404 for connections not on the hub\n let error: RestError | undefined;\n try {\n await client.addConnection(\"xxxx\");\n } catch (e: any) {\n error = e;\n }\n\n assert.exists(error);\n assert.strictEqual(error?.name, \"RestError\");\n\n try {\n await client.removeConnection(\"xxxx\", { onResponse });\n } catch (e: any) {\n assert.exists(error);\n assert.strictEqual(error?.name, \"RestError\");\n }\n });\n\n // skipping until we can record better tests with an actual user active.\n it.skip(\"can manage users\", async () => {\n // service returns 404, this should likely be raised as an error but isn't\n // due to the swagger design\n await client.addUser(\"brian\");\n\n // service returns 404 and this throws.\n await client.removeUser(\"brian\");\n });\n\n afterEach(async function () {\n await recorder.stop();\n });\n});\n\ndescribe(\"client working with multiple groups\", function () {\n let recorder: Recorder;\n let lastResponse: FullOperationResponse | undefined;\n let hubClient: WebPubSubServiceClient;\n function onResponse(response: FullOperationResponse): void {\n lastResponse = response;\n }\n beforeEach(async function () {\n recorder = new Recorder(this.currentTest);\n await recorder.start(recorderOptions);\n hubClient = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"),\n \"simplechat\",\n recorder.configureClientOptions({}),\n );\n });\n\n afterEach(async function () {\n await recorder.stop();\n });\n\n it(\"can join multiple groups with filter\", async (): Promise<void> => {\n await hubClient.addConnectionsToGroups([\"group1\", \"group2\"], \"userId eq 'user 1'\", {\n onResponse,\n });\n assert.equal(lastResponse?.status, 200);\n\n let error;\n try {\n await hubClient.addConnectionsToGroups([\"group1\", \"group2\"], \"invalid filter\");\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n\n it(\"can leave multiple groups with filter\", async () => {\n await hubClient.removeConnectionsFromGroups([\"group1\", \"group2\"], \"userId eq 'user 1'\", {\n onResponse,\n });\n assert.equal(lastResponse?.status, 200);\n\n let error;\n try {\n await hubClient.removeConnectionsFromGroups([\"group1\", \"group2\"], \"invalid filter\");\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n});\n"]}
1
+ {"version":3,"file":"groups.spec.js","sourceRoot":"","sources":["../../test/groups.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/* eslint-disable no-invalid-this */\nimport { Recorder, assertEnvironmentVariable } from \"@azure-tools/test-recorder\";\nimport { WebPubSubServiceClient, WebPubSubGroup } from \"../src\";\nimport { assert } from \"chai\";\nimport recorderOptions from \"./testEnv\";\nimport { FullOperationResponse } from \"@azure/core-client\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\n/* eslint-disable @typescript-eslint/no-invalid-this */\n\ndescribe(\"Group client working with a group\", function () {\n let recorder: Recorder;\n let client: WebPubSubGroup;\n let lastResponse: FullOperationResponse | undefined;\n function onResponse(response: FullOperationResponse): void {\n lastResponse = response;\n }\n beforeEach(async function () {\n recorder = new Recorder(this.currentTest);\n await recorder.start(recorderOptions);\n const hubClient = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"),\n \"simplechat\",\n recorder.configureClientOptions({}),\n );\n\n client = hubClient.group(\"group\");\n });\n\n it(\"can broadcast to groups\", async () => {\n await client.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await client.sendToAll({ x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await client.sendToAll(binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can broadcast to group with filter\", async () => {\n await client.sendToAll(\"hello\", {\n contentType: \"text/plain\",\n filter: \"userId ne 'user1'\",\n messageTtlSeconds: 60,\n onResponse,\n });\n assert.equal(lastResponse?.status, 202);\n\n let error;\n try {\n await client.sendToAll(\"hello\", {\n contentType: \"text/plain\",\n filter: \"invalid filter\",\n });\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n\n it(\"can manage connections\", async () => {\n // this endpoint returns 404 for connections not on the hub\n let error: RestError | undefined;\n try {\n await client.addConnection(\"xxxx\");\n } catch (e: any) {\n error = e;\n }\n\n assert.exists(error);\n assert.strictEqual(error?.name, \"RestError\");\n\n try {\n await client.removeConnection(\"xxxx\", { onResponse });\n } catch (e: any) {\n assert.exists(error);\n assert.strictEqual(error?.name, \"RestError\");\n }\n });\n\n // skipping until we can record better tests with an actual user active.\n it.skip(\"can manage users\", async () => {\n // service returns 404, this should likely be raised as an error but isn't\n // due to the swagger design\n await client.addUser(\"brian\");\n\n // service returns 404 and this throws.\n await client.removeUser(\"brian\");\n });\n\n afterEach(async function () {\n await recorder.stop();\n });\n});\n\ndescribe(\"client working with multiple groups\", function () {\n let recorder: Recorder;\n let lastResponse: FullOperationResponse | undefined;\n let hubClient: WebPubSubServiceClient;\n function onResponse(response: FullOperationResponse): void {\n lastResponse = response;\n }\n beforeEach(async function () {\n recorder = new Recorder(this.currentTest);\n await recorder.start(recorderOptions);\n hubClient = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"),\n \"simplechat\",\n recorder.configureClientOptions({}),\n );\n });\n\n afterEach(async function () {\n await recorder.stop();\n });\n\n it(\"can join multiple groups with filter\", async (): Promise<void> => {\n await hubClient.addConnectionsToGroups([\"group1\", \"group2\"], \"userId eq 'user 1'\", {\n onResponse,\n });\n assert.equal(lastResponse?.status, 200);\n\n let error;\n try {\n await hubClient.addConnectionsToGroups([\"group1\", \"group2\"], \"invalid filter\");\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n\n it(\"can leave multiple groups with filter\", async () => {\n await hubClient.removeConnectionsFromGroups([\"group1\", \"group2\"], \"userId eq 'user 1'\", {\n onResponse,\n });\n assert.equal(lastResponse?.status, 200);\n\n let error;\n try {\n await hubClient.removeConnectionsFromGroups([\"group1\", \"group2\"], \"invalid filter\");\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n});\n"]}
@@ -50,12 +50,12 @@ describe("HubClient", function () {
50
50
  });
51
51
  it("can broadcast", async () => {
52
52
  await client.sendToAll("hello", { contentType: "text/plain", onResponse });
53
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
53
+ assert.equal(lastResponse?.status, 202);
54
54
  await client.sendToAll({ x: 1, y: 2 }, { onResponse });
55
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
55
+ assert.equal(lastResponse?.status, 202);
56
56
  const binaryMessage = new Uint8Array(10);
57
57
  await client.sendToAll(binaryMessage.buffer, { onResponse });
58
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
58
+ assert.equal(lastResponse?.status, 202);
59
59
  });
60
60
  it("can broadcast with filter", async () => {
61
61
  await client.sendToAll("hello", {
@@ -64,7 +64,7 @@ describe("HubClient", function () {
64
64
  messageTtlSeconds: 60,
65
65
  onResponse,
66
66
  });
67
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
67
+ assert.equal(lastResponse?.status, 202);
68
68
  let error;
69
69
  try {
70
70
  await client.sendToAll("hello", {
@@ -84,36 +84,36 @@ describe("HubClient", function () {
84
84
  it("can broadcast using the DAC", async () => {
85
85
  const dacClient = new WebPubSubServiceClient(assertEnvironmentVariable("WPS_ENDPOINT"), credential, "simplechat", recorder.configureClientOptions({}));
86
86
  await dacClient.sendToAll("hello", { contentType: "text/plain", onResponse });
87
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
87
+ assert.equal(lastResponse?.status, 202);
88
88
  await dacClient.sendToAll({ x: 1, y: 2 }, { onResponse });
89
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
89
+ assert.equal(lastResponse?.status, 202);
90
90
  const binaryMessage = new Uint8Array(10);
91
91
  await dacClient.sendToAll(binaryMessage.buffer, { onResponse });
92
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
92
+ assert.equal(lastResponse?.status, 202);
93
93
  });
94
94
  it("can broadcast using APIM", async () => {
95
95
  const apimClient = new WebPubSubServiceClient(assertEnvironmentVariable("WPS_CONNECTION_STRING"), "simplechat", recorder.configureClientOptions({
96
96
  reverseProxyEndpoint: assertEnvironmentVariable("WPS_REVERSE_PROXY_ENDPOINT"),
97
97
  }));
98
98
  await apimClient.sendToAll("hello", { contentType: "text/plain", onResponse });
99
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
99
+ assert.equal(lastResponse?.status, 202);
100
100
  await apimClient.sendToAll({ x: 1, y: 2 }, { onResponse });
101
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
101
+ assert.equal(lastResponse?.status, 202);
102
102
  const binaryMessage = new Uint8Array(10);
103
103
  await apimClient.sendToAll(binaryMessage.buffer, { onResponse });
104
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
104
+ assert.equal(lastResponse?.status, 202);
105
105
  });
106
106
  it("can send messages to a user", async () => {
107
107
  await client.sendToUser("brian", "hello", {
108
108
  contentType: "text/plain",
109
109
  onResponse,
110
110
  });
111
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
111
+ assert.equal(lastResponse?.status, 202);
112
112
  await client.sendToUser("brian", { x: 1, y: 2 }, { onResponse });
113
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
113
+ assert.equal(lastResponse?.status, 202);
114
114
  const binaryMessage = new Uint8Array(10);
115
115
  await client.sendToUser("brian", binaryMessage.buffer, { onResponse });
116
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
116
+ assert.equal(lastResponse?.status, 202);
117
117
  });
118
118
  it("can send to a user with filter", async () => {
119
119
  await client.sendToUser("vic", "hello", {
@@ -121,7 +121,7 @@ describe("HubClient", function () {
121
121
  filter: "userId ne 'user1'",
122
122
  onResponse,
123
123
  });
124
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
124
+ assert.equal(lastResponse?.status, 202);
125
125
  let error;
126
126
  try {
127
127
  await client.sendToUser("brian", "hello", {
@@ -140,22 +140,22 @@ describe("HubClient", function () {
140
140
  });
141
141
  it("can send messages to a connection", async () => {
142
142
  await client.sendToConnection("xxxx", "hello", { contentType: "text/plain", onResponse });
143
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
143
+ assert.equal(lastResponse?.status, 202);
144
144
  await client.sendToConnection("xxxx", { x: 1, y: 2 }, { onResponse });
145
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
145
+ assert.equal(lastResponse?.status, 202);
146
146
  const binaryMessage = new Uint8Array(10);
147
147
  await client.sendToConnection("xxxx", binaryMessage.buffer, { onResponse });
148
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 202);
148
+ assert.equal(lastResponse?.status, 202);
149
149
  });
150
150
  it("can manage users", async () => {
151
151
  const res = await client.userExists("foo");
152
152
  assert.ok(!res);
153
153
  await client.removeUserFromAllGroups("brian", { onResponse });
154
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 204);
154
+ assert.equal(lastResponse?.status, 204);
155
155
  });
156
156
  it("can manage connections", async () => {
157
157
  await client.removeConnectionFromAllGroups("xxx", { onResponse });
158
- assert.equal(lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.status, 204);
158
+ assert.equal(lastResponse?.status, 204);
159
159
  });
160
160
  it("can check if a connection exists", async function () {
161
161
  // likely bug in recorder for this test - recording not generating properly
@@ -188,9 +188,17 @@ describe("HubClient", function () {
188
188
  it("can trace through the various options", async function () {
189
189
  await assert.supportsTracing(async (options) => {
190
190
  const promises = [
191
- client.sendToAll("hello", Object.assign({ contentType: "text/plain", onResponse }, options)),
192
- client.sendToUser("brian", "hello", Object.assign({ contentType: "text/plain", onResponse }, options)),
193
- client.sendToConnection("xxxx", "hello", Object.assign({ contentType: "text/plain", onResponse }, options)),
191
+ client.sendToAll("hello", { contentType: "text/plain", onResponse, ...options }),
192
+ client.sendToUser("brian", "hello", {
193
+ contentType: "text/plain",
194
+ onResponse,
195
+ ...options,
196
+ }),
197
+ client.sendToConnection("xxxx", "hello", {
198
+ contentType: "text/plain",
199
+ onResponse,
200
+ ...options,
201
+ }),
194
202
  client.connectionExists("xxxx", options),
195
203
  client.closeConnection("xxxx", options),
196
204
  client.closeAllConnections(options),
@@ -198,8 +206,8 @@ describe("HubClient", function () {
198
206
  client.removeUserFromAllGroups("foo", options),
199
207
  client.groupExists("foo", options),
200
208
  client.userExists("foo", options),
201
- client.grantPermission("xxxx", "joinLeaveGroup", Object.assign({ targetName: "x" }, options)),
202
- client.hasPermission("xxxx", "joinLeaveGroup", Object.assign({ targetName: "x" }, options)),
209
+ client.grantPermission("xxxx", "joinLeaveGroup", { targetName: "x", ...options }),
210
+ client.hasPermission("xxxx", "joinLeaveGroup", { targetName: "x", ...options }),
203
211
  client.revokePermission("xxxx", "joinLeaveGroup", options),
204
212
  client.getClientAccessToken(options),
205
213
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"hubs.spec.js","sourceRoot":"","sources":["../../test/hubs.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/* eslint-disable no-invalid-this */\nimport { Recorder, isLiveMode, assertEnvironmentVariable } from \"@azure-tools/test-recorder\";\nimport { WebPubSubServiceClient, AzureKeyCredential } from \"../src\";\nimport { assert } from \"@azure/test-utils\";\nimport recorderOptions from \"./testEnv\";\nimport { FullOperationResponse } from \"@azure/core-client\";\nimport { createTestCredential } from \"@azure-tools/test-credential\";\n/* eslint-disable @typescript-eslint/no-invalid-this */\n\ndescribe(\"HubClient\", function () {\n describe(\"Constructing a HubClient\", () => {\n const credential = createTestCredential();\n it(\"takes a connection string, hub name, and options\", () => {\n assert.doesNotThrow(() => {\n new WebPubSubServiceClient(assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"), \"test-hub\", {\n retryOptions: { maxRetries: 2 },\n });\n });\n });\n\n it(\"takes an endpoint, an API key, a hub name, and options\", () => {\n assert.doesNotThrow(() => {\n new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_ENDPOINT\"),\n new AzureKeyCredential(assertEnvironmentVariable(\"WPS_API_KEY\")),\n \"test-hub\",\n {\n retryOptions: { maxRetries: 2 },\n },\n );\n });\n });\n\n it(\"takes an endpoint, DefaultAzureCredential, a hub name, and options\", () => {\n assert.doesNotThrow(() => {\n new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_ENDPOINT\"),\n credential,\n \"test-hub\",\n {\n retryOptions: { maxRetries: 2 },\n },\n );\n });\n });\n });\n\n describe(\"Working with a hub\", function () {\n let recorder: Recorder;\n let client: WebPubSubServiceClient;\n let lastResponse: FullOperationResponse | undefined;\n const credential = createTestCredential();\n function onResponse(response: FullOperationResponse): void {\n lastResponse = response;\n }\n beforeEach(async function () {\n recorder = new Recorder(this.currentTest);\n await recorder.start(recorderOptions);\n\n client = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"),\n \"simplechat\",\n recorder.configureClientOptions({}),\n );\n });\n\n afterEach(async function () {\n await recorder.stop();\n });\n\n it(\"can broadcast\", async () => {\n await client.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await client.sendToAll({ x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await client.sendToAll(binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can broadcast with filter\", async () => {\n await client.sendToAll(\"hello\", {\n contentType: \"text/plain\",\n filter: \"userId ne 'user1'\",\n messageTtlSeconds: 60,\n onResponse,\n });\n assert.equal(lastResponse?.status, 202);\n\n let error;\n try {\n await client.sendToAll(\"hello\", {\n contentType: \"text/plain\",\n filter: \"invalid filter\",\n });\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n\n it(\"can broadcast using the DAC\", async () => {\n const dacClient = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_ENDPOINT\"),\n credential,\n \"simplechat\",\n recorder.configureClientOptions({}),\n );\n\n await dacClient.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await dacClient.sendToAll({ x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await dacClient.sendToAll(binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can broadcast using APIM\", async () => {\n const apimClient = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"),\n \"simplechat\",\n recorder.configureClientOptions({\n reverseProxyEndpoint: assertEnvironmentVariable(\"WPS_REVERSE_PROXY_ENDPOINT\"),\n }),\n );\n\n await apimClient.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await apimClient.sendToAll({ x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await apimClient.sendToAll(binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can send messages to a user\", async () => {\n await client.sendToUser(\"brian\", \"hello\", {\n contentType: \"text/plain\",\n onResponse,\n });\n assert.equal(lastResponse?.status, 202);\n\n await client.sendToUser(\"brian\", { x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await client.sendToUser(\"brian\", binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can send to a user with filter\", async () => {\n await client.sendToUser(\"vic\", \"hello\", {\n contentType: \"text/plain\",\n filter: \"userId ne 'user1'\",\n onResponse,\n });\n assert.equal(lastResponse?.status, 202);\n\n let error;\n try {\n await client.sendToUser(\"brian\", \"hello\", {\n contentType: \"text/plain\",\n filter: \"invalid filter\",\n });\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n\n it(\"can send messages to a connection\", async () => {\n await client.sendToConnection(\"xxxx\", \"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await client.sendToConnection(\"xxxx\", { x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n const binaryMessage = new Uint8Array(10);\n\n await client.sendToConnection(\"xxxx\", binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can manage users\", async () => {\n const res = await client.userExists(\"foo\");\n assert.ok(!res);\n await client.removeUserFromAllGroups(\"brian\", { onResponse });\n assert.equal(lastResponse?.status, 204);\n });\n\n it(\"can manage connections\", async () => {\n await client.removeConnectionFromAllGroups(\"xxx\", { onResponse });\n assert.equal(lastResponse?.status, 204);\n });\n\n it(\"can check if a connection exists\", async function () {\n // likely bug in recorder for this test - recording not generating properly\n if (!isLiveMode()) this.skip();\n const res = await client.connectionExists(\"xxx\");\n assert.ok(!res);\n });\n\n it(\"can grant permissions to connections\", async () => {\n let error;\n try {\n await client.grantPermission(\"xxx\", \"joinLeaveGroup\", { targetName: \"x\" });\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n // grantPermission validates connection ids, so we expect an error here.\n assert.equal(error.statusCode, 404);\n });\n\n it(\"can revoke permissions from connections\", async function () {\n // likely bug in recorder for this test - recording not generating properly\n if (!isLiveMode()) this.skip();\n await client.revokePermission(\"invalid-id\", \"joinLeaveGroup\", { targetName: \"x\" });\n // Service doesn't throw error for invalid connection-ids\n });\n\n it(\"can trace through the various options\", async function () {\n await assert.supportsTracing(\n async (options) => {\n const promises: Promise<any>[] = [\n client.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse, ...options }),\n client.sendToUser(\"brian\", \"hello\", {\n contentType: \"text/plain\",\n onResponse,\n ...options,\n }),\n client.sendToConnection(\"xxxx\", \"hello\", {\n contentType: \"text/plain\",\n onResponse,\n ...options,\n }),\n client.connectionExists(\"xxxx\", options),\n client.closeConnection(\"xxxx\", options),\n client.closeAllConnections(options),\n client.closeUserConnections(\"xxxx\", options),\n client.removeUserFromAllGroups(\"foo\", options),\n client.groupExists(\"foo\", options),\n client.userExists(\"foo\", options),\n client.grantPermission(\"xxxx\", \"joinLeaveGroup\", { targetName: \"x\", ...options }),\n client.hasPermission(\"xxxx\", \"joinLeaveGroup\", { targetName: \"x\", ...options }),\n client.revokePermission(\"xxxx\", \"joinLeaveGroup\", options),\n client.getClientAccessToken(options),\n ];\n // We don't care about errors, only that we created (and closed) the appropriate spans.\n await Promise.all(promises.map((p) => p.catch(() => undefined)));\n },\n [\n \"WebPubSubServiceClient.sendToAll\",\n \"WebPubSubServiceClient.sendToUser\",\n \"WebPubSubServiceClient.sendToConnection\",\n \"WebPubSubServiceClient.connectionExists\",\n \"WebPubSubServiceClient.closeConnection\",\n \"WebPubSubServiceClient.closeAllConnections\",\n \"WebPubSubServiceClient.closeUserConnections\",\n \"WebPubSubServiceClient.removeUserFromAllGroups\",\n \"WebPubSubServiceClient.groupExists\",\n \"WebPubSubServiceClient.userExists\",\n \"WebPubSubServiceClient.grantPermission\",\n \"WebPubSubServiceClient.hasPermission\",\n \"WebPubSubServiceClient.revokePermission\",\n \"WebPubSubServiceClient.getClientAccessToken\",\n ],\n );\n });\n\n it(\"can generate client tokens\", async () => {\n const res = await client.getClientAccessToken({\n userId: \"brian\",\n groups: [\"group1\"],\n });\n const url = new URL(res.url);\n assert.ok(url.searchParams.has(\"access_token\"));\n assert.equal(url.host, new URL(client.endpoint).host);\n assert.equal(url.pathname, `/client/hubs/${client.hubName}`);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"hubs.spec.js","sourceRoot":"","sources":["../../test/hubs.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/* eslint-disable no-invalid-this */\nimport { Recorder, isLiveMode, assertEnvironmentVariable } from \"@azure-tools/test-recorder\";\nimport { WebPubSubServiceClient, AzureKeyCredential } from \"../src\";\nimport { assert } from \"@azure/test-utils\";\nimport recorderOptions from \"./testEnv\";\nimport { FullOperationResponse } from \"@azure/core-client\";\nimport { createTestCredential } from \"@azure-tools/test-credential\";\n/* eslint-disable @typescript-eslint/no-invalid-this */\n\ndescribe(\"HubClient\", function () {\n describe(\"Constructing a HubClient\", () => {\n const credential = createTestCredential();\n it(\"takes a connection string, hub name, and options\", () => {\n assert.doesNotThrow(() => {\n new WebPubSubServiceClient(assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"), \"test-hub\", {\n retryOptions: { maxRetries: 2 },\n });\n });\n });\n\n it(\"takes an endpoint, an API key, a hub name, and options\", () => {\n assert.doesNotThrow(() => {\n new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_ENDPOINT\"),\n new AzureKeyCredential(assertEnvironmentVariable(\"WPS_API_KEY\")),\n \"test-hub\",\n {\n retryOptions: { maxRetries: 2 },\n },\n );\n });\n });\n\n it(\"takes an endpoint, DefaultAzureCredential, a hub name, and options\", () => {\n assert.doesNotThrow(() => {\n new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_ENDPOINT\"),\n credential,\n \"test-hub\",\n {\n retryOptions: { maxRetries: 2 },\n },\n );\n });\n });\n });\n\n describe(\"Working with a hub\", function () {\n let recorder: Recorder;\n let client: WebPubSubServiceClient;\n let lastResponse: FullOperationResponse | undefined;\n const credential = createTestCredential();\n function onResponse(response: FullOperationResponse): void {\n lastResponse = response;\n }\n beforeEach(async function () {\n recorder = new Recorder(this.currentTest);\n await recorder.start(recorderOptions);\n\n client = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"),\n \"simplechat\",\n recorder.configureClientOptions({}),\n );\n });\n\n afterEach(async function () {\n await recorder.stop();\n });\n\n it(\"can broadcast\", async () => {\n await client.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await client.sendToAll({ x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await client.sendToAll(binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can broadcast with filter\", async () => {\n await client.sendToAll(\"hello\", {\n contentType: \"text/plain\",\n filter: \"userId ne 'user1'\",\n messageTtlSeconds: 60,\n onResponse,\n });\n assert.equal(lastResponse?.status, 202);\n\n let error;\n try {\n await client.sendToAll(\"hello\", {\n contentType: \"text/plain\",\n filter: \"invalid filter\",\n });\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n\n it(\"can broadcast using the DAC\", async () => {\n const dacClient = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_ENDPOINT\"),\n credential,\n \"simplechat\",\n recorder.configureClientOptions({}),\n );\n\n await dacClient.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await dacClient.sendToAll({ x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await dacClient.sendToAll(binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can broadcast using APIM\", async () => {\n const apimClient = new WebPubSubServiceClient(\n assertEnvironmentVariable(\"WPS_CONNECTION_STRING\"),\n \"simplechat\",\n recorder.configureClientOptions({\n reverseProxyEndpoint: assertEnvironmentVariable(\"WPS_REVERSE_PROXY_ENDPOINT\"),\n }),\n );\n\n await apimClient.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await apimClient.sendToAll({ x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await apimClient.sendToAll(binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can send messages to a user\", async () => {\n await client.sendToUser(\"brian\", \"hello\", {\n contentType: \"text/plain\",\n onResponse,\n });\n assert.equal(lastResponse?.status, 202);\n\n await client.sendToUser(\"brian\", { x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n\n const binaryMessage = new Uint8Array(10);\n await client.sendToUser(\"brian\", binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can send to a user with filter\", async () => {\n await client.sendToUser(\"vic\", \"hello\", {\n contentType: \"text/plain\",\n filter: \"userId ne 'user1'\",\n onResponse,\n });\n assert.equal(lastResponse?.status, 202);\n\n let error;\n try {\n await client.sendToUser(\"brian\", \"hello\", {\n contentType: \"text/plain\",\n filter: \"invalid filter\",\n });\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n assert.equal(error.statusCode, 400);\n assert.equal(\n JSON.parse(error.message).message,\n \"Invalid syntax for 'invalid filter': Syntax error at position 14 in 'invalid filter'. (Parameter 'filter')\",\n );\n });\n\n it(\"can send messages to a connection\", async () => {\n await client.sendToConnection(\"xxxx\", \"hello\", { contentType: \"text/plain\", onResponse });\n assert.equal(lastResponse?.status, 202);\n\n await client.sendToConnection(\"xxxx\", { x: 1, y: 2 }, { onResponse });\n assert.equal(lastResponse?.status, 202);\n const binaryMessage = new Uint8Array(10);\n\n await client.sendToConnection(\"xxxx\", binaryMessage.buffer, { onResponse });\n assert.equal(lastResponse?.status, 202);\n });\n\n it(\"can manage users\", async () => {\n const res = await client.userExists(\"foo\");\n assert.ok(!res);\n await client.removeUserFromAllGroups(\"brian\", { onResponse });\n assert.equal(lastResponse?.status, 204);\n });\n\n it(\"can manage connections\", async () => {\n await client.removeConnectionFromAllGroups(\"xxx\", { onResponse });\n assert.equal(lastResponse?.status, 204);\n });\n\n it(\"can check if a connection exists\", async function () {\n // likely bug in recorder for this test - recording not generating properly\n if (!isLiveMode()) this.skip();\n const res = await client.connectionExists(\"xxx\");\n assert.ok(!res);\n });\n\n it(\"can grant permissions to connections\", async () => {\n let error;\n try {\n await client.grantPermission(\"xxx\", \"joinLeaveGroup\", { targetName: \"x\" });\n } catch (e: any) {\n if (e.name !== \"RestError\") {\n throw e;\n }\n\n error = e;\n }\n // grantPermission validates connection ids, so we expect an error here.\n assert.equal(error.statusCode, 404);\n });\n\n it(\"can revoke permissions from connections\", async function () {\n // likely bug in recorder for this test - recording not generating properly\n if (!isLiveMode()) this.skip();\n await client.revokePermission(\"invalid-id\", \"joinLeaveGroup\", { targetName: \"x\" });\n // Service doesn't throw error for invalid connection-ids\n });\n\n it(\"can trace through the various options\", async function () {\n await assert.supportsTracing(\n async (options) => {\n const promises: Promise<any>[] = [\n client.sendToAll(\"hello\", { contentType: \"text/plain\", onResponse, ...options }),\n client.sendToUser(\"brian\", \"hello\", {\n contentType: \"text/plain\",\n onResponse,\n ...options,\n }),\n client.sendToConnection(\"xxxx\", \"hello\", {\n contentType: \"text/plain\",\n onResponse,\n ...options,\n }),\n client.connectionExists(\"xxxx\", options),\n client.closeConnection(\"xxxx\", options),\n client.closeAllConnections(options),\n client.closeUserConnections(\"xxxx\", options),\n client.removeUserFromAllGroups(\"foo\", options),\n client.groupExists(\"foo\", options),\n client.userExists(\"foo\", options),\n client.grantPermission(\"xxxx\", \"joinLeaveGroup\", { targetName: \"x\", ...options }),\n client.hasPermission(\"xxxx\", \"joinLeaveGroup\", { targetName: \"x\", ...options }),\n client.revokePermission(\"xxxx\", \"joinLeaveGroup\", options),\n client.getClientAccessToken(options),\n ];\n // We don't care about errors, only that we created (and closed) the appropriate spans.\n await Promise.all(promises.map((p) => p.catch(() => undefined)));\n },\n [\n \"WebPubSubServiceClient.sendToAll\",\n \"WebPubSubServiceClient.sendToUser\",\n \"WebPubSubServiceClient.sendToConnection\",\n \"WebPubSubServiceClient.connectionExists\",\n \"WebPubSubServiceClient.closeConnection\",\n \"WebPubSubServiceClient.closeAllConnections\",\n \"WebPubSubServiceClient.closeUserConnections\",\n \"WebPubSubServiceClient.removeUserFromAllGroups\",\n \"WebPubSubServiceClient.groupExists\",\n \"WebPubSubServiceClient.userExists\",\n \"WebPubSubServiceClient.grantPermission\",\n \"WebPubSubServiceClient.hasPermission\",\n \"WebPubSubServiceClient.revokePermission\",\n \"WebPubSubServiceClient.getClientAccessToken\",\n ],\n );\n });\n\n it(\"can generate client tokens\", async () => {\n const res = await client.getClientAccessToken({\n userId: \"brian\",\n groups: [\"group1\"],\n });\n const url = new URL(res.url);\n assert.ok(url.searchParams.has(\"access_token\"));\n assert.equal(url.host, new URL(client.endpoint).host);\n assert.equal(url.pathname, `/client/hubs/${client.hubName}`);\n });\n });\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure/web-pubsub",
3
- "version": "1.1.3-alpha.20240110.1",
3
+ "version": "1.1.3-alpha.20240112.1",
4
4
  "description": "Azure client library for Azure Web PubSub",
5
5
  "sdk-type": "client",
6
6
  "main": "dist/index.js",