Exemplo n.º 1
0
        public async Task TestInvokeMethodWithResponsePayload()
        {
            var identity = Mock.Of <IIdentity>(i => i.Id == "edgedevice/module1");
            ActionExecutingContext actionExecutingContext = this.GetActionExecutingContextMock(identity);

            string responsePayload      = "{ \"resp1\" : \"respvalue1\" }";
            var    directMethodResponse = new DirectMethodResponse(Guid.NewGuid().ToString(), Encoding.UTF8.GetBytes(responsePayload), 200);
            var    edgeHub = new Mock <IEdgeHub>();

            edgeHub.Setup(e => e.InvokeMethodAsync(It.Is <string>(i => i == identity.Id), It.IsAny <DirectMethodRequest>()))
            .ReturnsAsync(directMethodResponse);

            var validator = new Mock <IValidator <MethodRequest> >();

            validator.Setup(v => v.Validate(It.IsAny <MethodRequest>()));

            var testController = new TwinsController(Task.FromResult(edgeHub.Object), validator.Object);

            testController.OnActionExecuting(actionExecutingContext);

            string toDeviceId = "device1";
            string command    = "showdown";
            string payload    = "{ \"prop1\" : \"value1\" }";

            var           methodRequest = new MethodRequest(command, new JRaw(payload));
            IActionResult actionResult  = await testController.InvokeDeviceMethodAsync(toDeviceId, methodRequest);

            Assert.NotNull(actionResult);
            var objectResult = actionResult as ObjectResult;

            Assert.NotNull(objectResult);
            var methodResult = objectResult.Value as MethodResult;

            Assert.NotNull(methodResult);
            Assert.Equal(200, methodResult.Status);
            Assert.Equal(new JRaw(responsePayload), methodResult.Payload);
            Assert.Equal(objectResult.StatusCode, (int)HttpStatusCode.OK);
        }
Exemplo n.º 2
0
 internal static MethodResult GetMethodResult(DirectMethodResponse directMethodResponse) =>
 directMethodResponse.Exception.Map(e => new MethodErrorResult(directMethodResponse.Status, null, e.Message, string.Empty) as MethodResult)
 .GetOrElse(() => new MethodResult(directMethodResponse.Status, GetRawJson(directMethodResponse.Data)));
Exemplo n.º 3
0
 internal static MethodResult GetMethodResult(DirectMethodResponse directMethodResponse) =>
 directMethodResponse.Exception.Map(e => new MethodErrorResult(directMethodResponse.HttpStatusCode, e.Message) as MethodResult)
 .GetOrElse(() => new MethodSuccessResult(directMethodResponse.Status, GetRawJson(directMethodResponse.Data)));
Exemplo n.º 4
0
        private static Task <IEdgeHub> CreateEdgeHubGetter(string targetDevice, Option <string> targetModule, DirectMethodResponse directMethodResponse)
        {
            string targetId = targetDevice + targetModule.Match(module => $"/{module}", () => string.Empty);

            var edgeHub = new Mock <IEdgeHub>();

            edgeHub.Setup(e => e.InvokeMethodAsync(It.Is <string>(i => i == actorId), It.Is <DirectMethodRequest>(r => r.Id == targetId)))
            .ReturnsAsync(directMethodResponse);
            edgeHub.Setup(e => e.GetEdgeDeviceId())
            .Returns(actorDevice);

            return(Task.FromResult(edgeHub.Object));
        }