public void ShouldReadResponseWithSimpleStringCorrectly() { var responseByteString = "42696E010000000B0000000300000003426C61"; var responseStream = BinaryUtils.CreateByteStream(responseByteString); var converter = new MessageConverter(); var output = new StringWriter(); var builder = new JsonMessageBuilder(output); converter.Convert(new HmBinaryMessageReader(responseStream), builder); var response = output.ToString(); response.ShouldBe("\"Bla\""); }
public void ShouldReadResponseWithVoidContent() { var voidString = "0000000300000000"; var responseByteString = "42696E0100000008" + voidString; var responseStream = BinaryUtils.CreateByteStream(responseByteString); var converter = new MessageConverter(); var output = new StringWriter(); var builder = new JsonMessageBuilder(output); converter.Convert(new HmBinaryMessageReader(responseStream), builder); var response = output.ToString(); response.ShouldBe("\"\""); }
public void BinaryWriterSupportsObjectBuilderInterface() { var converter = new MessageConverter(); var requestByteString = "42696E400000002F000000010000000D417574686F72697A6174696F6E0000001642617369632064326C72615470775A57527059513D3D000000250000001273797374656D2E6C6973744D6574686F6473000000010000000300000003426C61"; var requestStream = BinaryUtils.CreateByteStream(requestByteString); var output = new MemoryStream(); var requestReader = new HmBinaryMessageReader(requestStream); converter.Convert(requestReader, new HmBinaryMessageWriter(output)); var outputFormatted = BinaryUtils.FormatMemoryStream(output); outputFormatted.ShouldBe(requestByteString); }
public void ShouldReadRequestsCorrectly() { var converter = new MessageConverter(); var requestByteString = "42696E400000002F000000010000000D417574686F72697A6174696F6E0000001642617369632064326C72615470775A57527059513D3D000000250000001273797374656D2E6C6973744D6574686F6473000000010000000300000003426C61"; var requestStream = BinaryUtils.CreateByteStream(requestByteString); var requestReader = new HmBinaryMessageReader(requestStream); var messageBuilder = new MessageBuilder(); converter.Convert(requestReader, messageBuilder); var request = messageBuilder.Result.ShouldBeOfType<Request>(); request.Headers.Count.ShouldBe(1); var authHeader = string.Concat("Basic ", Convert.ToBase64String(Encoding.UTF8.GetBytes("wiki:pedia"))); request.Headers.ShouldContainKeyAndValue("Authorization", authHeader); request.Method.ShouldBe("system.listMethods"); request.Parameters.Count.ShouldBe(1); request.Parameters.First().ShouldBe("Bla"); }
public void WorksWithRequestResponseProtocol() { var request = new Request { Method = "test", Parameters = { "param1", new List<object> { "nested param" } } }; var reader = new MessageReader(request); var converter = new MessageConverter(); var messageBuilder = new MessageBuilder(); converter.Convert(reader, messageBuilder); var request2 = messageBuilder.Result.ShouldBeOfType<Request>(); request2.Method.ShouldBe("test"); request2.Parameters.Count.ShouldBe(2); request2.Parameters.First().ShouldBe("param1"); var param2 = request2.Parameters.Skip(1).First().ShouldBeAssignableTo<ICollection<object>>(); param2.First().ShouldBe("nested param"); }
public void ShouldWriteStringResponseCorrectly() { var responseMessage = "TEST123"; var output = new MemoryStream(); var converter = new MessageConverter(); var response = new Response { Content = responseMessage }; converter.Convert(new MessageReader(response), new HmBinaryMessageWriter(output)); output.Seek(0, SeekOrigin.Begin); var jsonOutput = new StringWriter(); converter.Convert(new HmBinaryMessageReader(output), new JsonMessageBuilder(jsonOutput)); var expected = "\"" + responseMessage + "\""; jsonOutput.ToString().ShouldBe(expected); }
public void ShouldWriteRequestsCorrectly() { var testRequest = new Request() { Method = "system.listMethods", Parameters = { "Bla" } }; testRequest.SetAuthorization("wiki", "pedia"); var output = new MemoryStream(); var converter = new MessageConverter(); converter.Convert(new MessageReader(testRequest), new HmBinaryMessageWriter(output)); var outputFormatted = BinaryUtils.FormatMemoryStream(output); var expected = "42696E400000002F000000010000000D417574686F72697A6174696F6E0000001642617369632064326C72615470775A57527059513D3D000000250000001273797374656D2E6C6973744D6574686F6473000000010000000300000003426C61"; outputFormatted.ShouldBe(expected); }
public void ShouldWriteErrorResponseCorrectly() { var errorMessage = "TEST123"; var output = new MemoryStream(); var converter = new MessageConverter(); var errorResponse = new ErrorResponse { Code = -10, Message = errorMessage }; var errorReader = new MessageReader(errorResponse); converter.Convert(errorReader, new HmBinaryMessageWriter(output)); output.Seek(0, SeekOrigin.Begin); var jsonOutput = new StringWriter(); converter.Convert(new HmBinaryMessageReader(output), new JsonMessageBuilder(jsonOutput)); var expected = "{\"faultCode\":-10,\"faultString\":\"" + errorMessage + "\"}"; jsonOutput.ToString().ShouldBe(expected); }
public void StringResponsesAreWrittenCorrectly() { var input = new MemoryStream(); var writer = new HmBinaryMessageWriter(input); writer.BeginMessage(MessageType.Request); writer.BeginContent(); writer.SetMethod("newDevices"); writer.BeginArray(1); writer.BeginItem(); //parameter 1 writer.BeginArray(2); writer.BeginItem(); writer.BeginStruct(2); writer.BeginItem(); writer.WritePropertyName("CHILDREN"); var items = 3; writer.BeginArray(items); for (; items > 0; items--) { writer.BeginItem(); writer.WriteStringValue("value " + items); writer.EndItem(); } writer.EndArray(); writer.EndItem(); writer.BeginItem(); writer.WritePropertyName("FIRMWARE"); writer.WriteStringValue("1.505"); writer.EndItem(); writer.EndStruct(); writer.EndItem(); writer.BeginItem(); writer.BeginStruct(3); writer.BeginItem(); writer.WritePropertyName("ADDRESS"); writer.WriteStringValue("BidCoS-RF"); writer.EndItem(); writer.BeginItem(); writer.WritePropertyName("CHILDREN"); var items2 = 5; writer.BeginArray(items2); for (; items2 > 0; items2--) { writer.BeginItem(); writer.WriteStringValue("value " + items2); writer.EndItem(); } writer.EndArray(); writer.EndItem(); writer.BeginItem(); writer.WritePropertyName("FIRMWARE"); writer.WriteStringValue("1.505"); writer.EndItem(); writer.EndStruct(); writer.EndItem(); //end parameter 1 writer.EndArray(); writer.EndItem(); //end params writer.EndArray(); writer.EndContent(); writer.EndMessage(); var result = BinaryUtils.FormatMemoryStream(input); input.Seek(0, SeekOrigin.Begin); var converter = new MessageConverter(); var outputReader = new JsonMessageBuilder(); converter.Convert(new HmBinaryMessageReader(input), outputReader); result.ShouldBe("42696E00000001180000000A6E6577446576696365730000000100000100000000020000010100000002000000084348494C4452454E0000010000000003000000030000000776616C75652033000000030000000776616C75652032000000030000000776616C75652031000000084649524D574152450000000300000005312E353035000001010000000300000007414444524553530000000300000009426964436F532D5246000000084348494C4452454E0000010000000005000000030000000776616C75652035000000030000000776616C75652034000000030000000776616C75652033000000030000000776616C75652032000000030000000776616C75652031000000084649524D574152450000000300000005312E353035"); }