Пример #1
0
        public void GetRawJsonTest(byte[] input, JRaw expectedOutput)
        {
            // Act
            JRaw output = TwinsController.GetRawJson(input);

            // Assert
            Assert.Equal(expectedOutput, output);
        }
Пример #2
0
        private static TwinsController SetupController(string id, Task <IEdgeHub> edgeHubGetter)
        {
            var identity = Mock.Of <IIdentity>(i => i.Id == id);
            ActionExecutingContext actionExecutingContext = GetActionExecutingContextMock(identity);

            var controller = new TwinsController(edgeHubGetter, CreateLetThroughValidator());

            controller.OnActionExecuting(actionExecutingContext);
            SetupControllerContext(controller);

            return(controller);
        }
Пример #3
0
        private static TwinsController SetupController(Task <IEdgeHub> edgeHubGetter)
        {
            var authenticator = new Mock <IHttpRequestAuthenticator>();

            authenticator.Setup(a => a.AuthenticateAsync(It.IsAny <string>(), It.IsAny <Option <string> >(), It.IsAny <Option <string> >(), It.IsAny <HttpContext>()))
            .ReturnsAsync(new HttpAuthResult(true, string.Empty));

            var controller = new TwinsController(edgeHubGetter, Task.FromResult(authenticator.Object), CreateLetThroughValidator());

            SetupControllerContext(controller);

            return(controller);
        }
Пример #4
0
        public async Task TestInvokeMethodWithException()
        {
            var identity = Mock.Of <IIdentity>(i => i.Id == "edgedevice/module1");
            ActionExecutingContext actionExecutingContext = this.GetActionExecutingContextMock(identity);

            var timeoutException     = new EdgeHubTimeoutException("EdgeHub timed out");
            var directMethodResponse = new DirectMethodResponse(timeoutException, HttpStatusCode.GatewayTimeout);
            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 {
                MethodName = command, Payload = 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 MethodErrorResult;

            Assert.NotNull(methodResult);
            Assert.Equal(0, methodResult.Status);
            Assert.Equal(null, methodResult.Payload);
            Assert.Equal(timeoutException.Message, methodResult.Message);
            Assert.Equal(objectResult.StatusCode, (int)HttpStatusCode.GatewayTimeout);
        }
Пример #5
0
        public async Task TestInvokeMethodOnModuleWithResponsePayload()
        {
            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 <Http.MethodRequest> >();

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

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

            testController.OnActionExecuting(actionExecutingContext);

            string toDeviceId = "edgedevice";
            string toModuleId = "module2";
            string command    = "showdown";
            string payload    = "{ \"prop1\" : \"value1\" }";

            var methodRequest = new Http.MethodRequest {
                MethodName = command, Payload = new JRaw(payload)
            };
            IActionResult actionResult = await testController.InvokeModuleMethodAsync(WebUtility.UrlEncode(toDeviceId), WebUtility.UrlEncode(toModuleId), 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);
        }
        public async Task TestInvokeMethod()
        {
            var identity = Mock.Of <IIdentity>(i => i.Id == "edgedevice/module1");
            ActionExecutingContext actionExecutingContext = this.GetActionExecutingContextMock(identity);

            var directMethodResponse = new DirectMethodResponse(Guid.NewGuid().ToString(), new byte[0], 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 {
                MethodName = command, Payload = new JRaw(payload)
            };
            IActionResult actionResult = await testController.InvokeDeviceMethodAsync(toDeviceId, methodRequest);

            Assert.NotNull(actionResult);
            var jsonResult = actionResult as JsonResult;

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

            Assert.NotNull(methodResult);
            Assert.Equal(200, methodResult.Status);
            Assert.Equal(null, methodResult.Payload);
        }