Exemplo n.º 1
0
        public async Task ConfirmsMessageAfterSent()
        {
            var capturedLockId = default(string);
            var capturedStatus = (FeedbackStatus)(-1);

            var connectionRegistry = GetConnectionRegistry(
                confirmAction: (lockId, status) =>
            {
                capturedLockId = lockId;
                capturedStatus = status;
            });

            var connector = GetConnector();

            var identity = new DeviceIdentity("hub", "device_id");
            var message  = new EdgeMessage
                           .Builder(new byte[] { 0x01, 0x02, 0x03 })
                           .SetSystemProperties(new Dictionary <string, string>()
            {
                [SystemProperties.LockToken] = "12345"
            })
                           .Build();

            var sut = new Cloud2DeviceMessageHandler(connectionRegistry);

            sut.SetConnector(connector);

            await sut.SendC2DMessageAsync(message, identity);

            Assert.Equal("12345", capturedLockId);
            Assert.Equal(FeedbackStatus.Complete, capturedStatus);
        }
Exemplo n.º 2
0
        public async Task EncodesPropertiesInTopic()
        {
            var capture            = new SendCapture();
            var connector          = GetConnector(capture);
            var connectionRegistry = GetConnectionRegistry();
            var identity           = new DeviceIdentity("hub", "device_id");
            var message            = new EdgeMessage
                                     .Builder(new byte[] { 0x01, 0x02, 0x03 })
                                     .SetProperties(new Dictionary <string, string>()
            {
                ["prop1"] = "value1", ["prop2"] = "value2"
            })
                                     .SetSystemProperties(new Dictionary <string, string>()
            {
                ["userId"] = "userid", ["cid"] = "corrid"
            })
                                     .Build();

            var sut = new Cloud2DeviceMessageHandler(connectionRegistry);

            sut.SetConnector(connector);

            await sut.SendC2DMessageAsync(message, identity);

            Assert.StartsWith("$edgehub/device_id/messages/c2d/post/", capture.Topic);
            Assert.Contains("prop1=value1", capture.Topic);
            Assert.Contains("prop2=value2", capture.Topic);
            Assert.Contains("%24.uid=userid", capture.Topic);
            Assert.Contains("%24.cid=corrid", capture.Topic);
        }
Exemplo n.º 3
0
        public async Task SendsMessageDataAsPayload()
        {
            var capture            = new SendCapture();
            var connector          = GetConnector(capture);
            var connectionRegistry = GetConnectionRegistry();
            var identity           = new DeviceIdentity("hub", "device_id");
            var message            = new EdgeMessage
                                     .Builder(new byte[] { 0x01, 0x02, 0x03 })
                                     .Build();

            var sut = new Cloud2DeviceMessageHandler(connectionRegistry);

            sut.SetConnector(connector);

            await sut.SendC2DMessageAsync(message, identity);

            Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, capture.Content);
        }
Exemplo n.º 4
0
        public async Task EncodesDeviceNameInTopic()
        {
            var capture            = new SendCapture();
            var connector          = GetConnector(capture);
            var connectionRegistry = GetConnectionRegistry();
            var identity           = new DeviceIdentity("hub", "device_id");
            var message            = new EdgeMessage
                                     .Builder(new byte[] { 0x01, 0x02, 0x03 })
                                     .Build();

            var sut = new Cloud2DeviceMessageHandler(connectionRegistry);

            sut.SetConnector(connector);

            await sut.SendC2DMessageAsync(message, identity);

            Assert.Equal("$edgehub/device_id/messages/c2d/post/", capture.Topic);
        }
Exemplo n.º 5
0
        public async Task DoesNotSendToModule()
        {
            var connector          = GetConnector();
            var connectionRegistry = GetConnectionRegistry();
            var identity           = new ModuleIdentity("hub", "device_id", "module_id");
            var message            = new EdgeMessage
                                     .Builder(new byte[] { 0x01, 0x02, 0x03 })
                                     .Build();

            var sut = new Cloud2DeviceMessageHandler(connectionRegistry);

            sut.SetConnector(connector);

            await sut.SendC2DMessageAsync(message, identity);

            Mock.Get(connector)
            .Verify(c => c.SendAsync(It.IsAny <string>(), It.IsAny <byte[]>()), Times.Never());
        }
        public async Task SendsMessageDataAsPayload()
        {
            var capture            = new SendCapture();
            var connector          = GetConnector(capture);
            var connectionRegistry = GetConnectionRegistry();
            var identity           = new DeviceIdentity("hub", "device_id");
            var message            = new EdgeMessage
                                     .Builder(new byte[] { 0x01, 0x02, 0x03 })
                                     .SetSystemProperties(new Dictionary <string, string>()
            {
                [SystemProperties.LockToken] = "12345"
            })
                                     .Build();

            var sut = new Cloud2DeviceMessageHandler(connectionRegistry);

            sut.SetConnector(connector);

            await sut.SendC2DMessageAsync(message, identity, true);

            Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, capture.Content);
        }