Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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
     });
 }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }