public void GetRawJsonTest(byte[] input, JRaw expectedOutput) { // Act JRaw output = TwinsController.GetRawJson(input); // Assert Assert.Equal(expectedOutput, output); }
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); }
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); }
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); }
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); }