Skip to content

Commit df57274

Browse files
committed
test
1 parent dcd5e47 commit df57274

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

src/SignalR/clients/ts/signalr/tests/HttpConnection.test.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { HttpTransportType, ITransport, TransferFormat } from "../src/ITransport
88
import { getUserAgentHeader } from "../src/Utils";
99

1010
import { HttpError } from "../src/Errors";
11+
import { ILogger, LogLevel } from "../src/ILogger";
1112
import { NullLogger } from "../src/Loggers";
1213
import { EventSourceConstructor, WebSocketConstructor } from "../src/Polyfills";
1314

@@ -1151,6 +1152,53 @@ describe("HttpConnection", () => {
11511152
}, "Failed to start the connection: Error: nope");
11521153
});
11531154

1155+
it("logMessageContent displays correctly with binary data", async () => {
1156+
await VerifyLogger.run(async (logger) => {
1157+
const availableTransport = { transport: "LongPolling", transferFormats: ["Text", "Binary"] };
1158+
1159+
let sentMessage = "";
1160+
const captureLogger: ILogger = {
1161+
log: (logLevel: LogLevel, message: string) => {
1162+
if (logLevel === LogLevel.Trace && message.search("data of length") > 0) {
1163+
sentMessage = message;
1164+
}
1165+
1166+
logger.log(logLevel, message);
1167+
},
1168+
};
1169+
1170+
let httpClientGetCount = 0;
1171+
const options: IHttpConnectionOptions = {
1172+
...commonOptions,
1173+
httpClient: new TestHttpClient()
1174+
.on("POST", () => ({ connectionId: "42", availableTransports: [availableTransport] }))
1175+
.on("GET", () => {
1176+
httpClientGetCount++;
1177+
if (httpClientGetCount === 1) {
1178+
// First long polling request must succeed so start completes
1179+
return "";
1180+
}
1181+
return Promise.resolve();
1182+
})
1183+
.on("DELETE", () => new HttpResponse(202)),
1184+
logMessageContent: true,
1185+
logger: captureLogger,
1186+
transport: HttpTransportType.LongPolling,
1187+
} as IHttpConnectionOptions;
1188+
1189+
const connection = new HttpConnection("http://tempuri.org", options);
1190+
connection.onreceive = () => null;
1191+
try {
1192+
await connection.start(TransferFormat.Binary);
1193+
await connection.send(new Uint8Array([104, 105, 32, 58, 41]));
1194+
} finally {
1195+
await connection.stop();
1196+
}
1197+
1198+
expect(sentMessage).toBe("(LongPolling transport) sending data. Binary data of length 5. Content: '0x68 0x69 0x20 0x3a 0x29'.");
1199+
});
1200+
});
1201+
11541202
describe(".constructor", () => {
11551203
it("throws if no Url is provided", async () => {
11561204
// Force TypeScript to let us call the constructor incorrectly :)

0 commit comments

Comments
 (0)