Skip to content

Commit deb6e79

Browse files
committed
test
1 parent a388e3a commit deb6e79

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
@@ -7,6 +7,7 @@ import { IHttpConnectionOptions } from "../src/IHttpConnectionOptions";
77
import { HttpTransportType, ITransport, TransferFormat } from "../src/ITransport";
88

99
import { HttpError } from "../src/Errors";
10+
import { ILogger, LogLevel } from "../src/ILogger";
1011
import { NullLogger } from "../src/Loggers";
1112
import { EventSourceConstructor, WebSocketConstructor } from "../src/Polyfills";
1213

@@ -1124,6 +1125,53 @@ describe("HttpConnection", () => {
11241125
"Failed to start the transport 'WebSockets': Error: There was an error with the transport.");
11251126
});
11261127

1128+
it("logMessageContent displays correctly with binary data", async () => {
1129+
await VerifyLogger.run(async (logger) => {
1130+
const availableTransport = { transport: "LongPolling", transferFormats: ["Text", "Binary"] };
1131+
1132+
let sentMessage = "";
1133+
const captureLogger: ILogger = {
1134+
log: (logLevel: LogLevel, message: string) => {
1135+
if (logLevel === LogLevel.Trace && message.search("data of length") > 0) {
1136+
sentMessage = message;
1137+
}
1138+
1139+
logger.log(logLevel, message);
1140+
},
1141+
};
1142+
1143+
let httpClientGetCount = 0;
1144+
const options: IHttpConnectionOptions = {
1145+
...commonOptions,
1146+
httpClient: new TestHttpClient()
1147+
.on("POST", () => ({ connectionId: "42", availableTransports: [availableTransport] }))
1148+
.on("GET", () => {
1149+
httpClientGetCount++;
1150+
if (httpClientGetCount === 1) {
1151+
// First long polling request must succeed so start completes
1152+
return "";
1153+
}
1154+
return Promise.resolve();
1155+
})
1156+
.on("DELETE", () => new HttpResponse(202)),
1157+
logMessageContent: true,
1158+
logger: captureLogger,
1159+
transport: HttpTransportType.LongPolling,
1160+
} as IHttpConnectionOptions;
1161+
1162+
const connection = new HttpConnection("http://tempuri.org", options);
1163+
connection.onreceive = () => null;
1164+
try {
1165+
await connection.start(TransferFormat.Binary);
1166+
await connection.send(new Uint8Array([104, 105, 32, 58, 41]));
1167+
} finally {
1168+
await connection.stop();
1169+
}
1170+
1171+
expect(sentMessage).toBe("(LongPolling transport) sending data. Binary data of length 5. Content: '0x68 0x69 0x20 0x3a 0x29'.");
1172+
});
1173+
});
1174+
11271175
describe(".constructor", () => {
11281176
it("throws if no Url is provided", async () => {
11291177
// Force TypeScript to let us call the constructor incorrectly :)

0 commit comments

Comments
 (0)