Example #1
0
        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\"");
        }
Example #2
0
        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("\"\"");
        }
Example #3
0
        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);
        }
Example #4
0
        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");
        }
Example #5
0
        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");
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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");
        }