public async Task PostDeviceRemote_Success_ReturnsSuccess() { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DevicesController>(); // Mock var mockReturnSucceed = new Mock <IDeviceService>(); mockReturnSucceed.Setup(x => x.RequestRemoteAsync(It.IsAny <RequestRemote>())) .ReturnsAsync(new Result(ResultCode.Succeed)); builder.ServiceCollection.AddTransient <IDeviceService>(_ => mockReturnSucceed.Object); var controller = builder.Build().GetService <DevicesController>(); var dviceId = 100; // 配信グループデータ更新パラメータ作成 var validDto = new DeviceRemoteRequestDto() { SessionCode = "100" }; var updateResponse = await controller.PostDeviceRemoteAsync( validDto, dviceId, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(updateResponse, typeof(OkObjectResult)); }
public async Task PostDeviceRemote_ExceptionThrown_Returns500Error() { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DevicesController>(); // Mock var mockReturnSucceed = new Mock <IDeviceService>(); mockReturnSucceed.Setup(x => x.RequestRemoteAsync(It.IsAny <RequestRemote>())) .ThrowsAsync(new System.Exception()); builder.ServiceCollection.AddTransient <IDeviceService>(_ => mockReturnSucceed.Object); var controller = builder.Build().GetService <DevicesController>(); var dviceId = 100; // 配信グループデータ更新パラメータ作成 var validDto = new DeviceRemoteRequestDto() { SessionCode = "100" }; var response = await controller.PostDeviceRemoteAsync( validDto, dviceId, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(response, typeof(StatusCodeResult)); Assert.AreEqual(StatusCodes.Status500InternalServerError, (response as StatusCodeResult).StatusCode); }
/// <summary> /// リクエストのDtoクラスパラメータをUtilityのパラメータに変換する /// </summary> /// <param name="dto">Dtoクラスパラメータ</param> /// <param name="deviceId">デバイスID</param> /// <returns>Utilityパラメータ</returns> public static RequestRemote ConvertDtoToUtility(this DeviceRemoteRequestDto dto, long deviceId) { // HACK: Serviceのモデルに変換しているが、リポジトリかUtilityのモデルにする必要があるかも。 return(new RequestRemote() { DeviceId = deviceId, SessionCode = dto.SessionCode }); }
public async Task PostDeviceRemote_InvalidParm_ReturnsBadRequest( string sessionCode) { // Target Create var builder = new TestDiProviderBuilder(); builder.ServiceCollection.AddTransient <DevicesController>(); var controller = builder.Build().GetService <DevicesController>(); // 配信グループデータ更新パラメータ作成 var dto = new DeviceRemoteRequestDto() { SessionCode = sessionCode }; // 制約違反の場合はBadRequestが返ることを確認する var updateResponse = await controller.PostDeviceRemoteAsync( dto, 100, UnitTestHelper.CreateLogger()); Assert.IsInstanceOfType(updateResponse, typeof(BadRequestObjectResult)); }
public async Task <IActionResult> PostDeviceRemoteAsync( [RequestBodyType(typeof(DeviceRemoteRequestDto), "リモート接続開始リクエスト")] [HttpTrigger(AuthorizationLevel.Function, "post", Route = "devices/{deviceId}/remote")] DeviceRemoteRequestDto request, long deviceId, ILogger log) { log.Enter($"{nameof(request)}: {{0}}, {nameof(deviceId)}: {{1}}", new object[] { request, deviceId }); ActionResult response = null; try { // リクエストパラメータチェック if (RequestValidator.IsBadRequestParameter(request, out var message)) { log.Error(nameof(Resources.CO_API_DRC_002), new object[] { message }); return(new BadRequestObjectResult(string.Empty)); } var requestRemote = request.ConvertDtoToUtility(deviceId); var resultParam = await _deviceService.RequestRemoteAsync(requestRemote); // Resultから返却ステータスを作成(レスポンスボディは空) response = SqlResultConverter.ConvertToActionResult(resultParam.ResultCode, resultParam.Message); } catch (Exception e) { log.Error(e, nameof(Resources.CO_API_DRC_001)); response = new StatusCodeResult(StatusCodes.Status500InternalServerError); } finally { log.Leave($"Response Status: {response}"); } return(response); }