public async Task OpenLockTest_HasAccess_And_Successful() { //Arrange var fakeUserId = Guid.NewGuid(); var fakeLockId = Guid.NewGuid(); var fakeSecurityCode = ""; OpenLockInfo openLockInfo = new OpenLockInfo(fakeUserId, fakeUserId, fakeSecurityCode); _userAccessServiceMock.Setup(x => x.HasAccess ( It.IsAny <Guid>(), It.IsAny <Guid>() )) .Returns(Task.FromResult <bool>(true)); var lockingController = new Services.Locking.API.Controllers.LockingController( _logger, _userAccessServiceMock.Object, _lockingServiceMock.Object, _auditLogServiceMock.Object); //Act var actionResultSuccessful = await lockingController.Lock(openLockInfo); //Assert var okObjectResult = actionResultSuccessful as OkObjectResult; Assert.NotNull(okObjectResult); Assert.Equal(1, (okObjectResult.Value as LockOpenSuccessful).ResponseCode); }
public async Task <IActionResult> Lock([FromBody] OpenLockInfo openLockInfo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var result = new LockingResult(); OpenLockResult lockingResult = new OpenLockResult(); try { _logger.LogInformation($"User {openLockInfo.UserId} request {"Open"} Lock with Id= {openLockInfo.LockId}"); Guid auditLogId = await _auditLogService.LogLockRequest(openLockInfo.LockId, openLockInfo.UserId, Model.LockCommand.Open); if (_userAccessService.HasAccess(openLockInfo.UserId, openLockInfo.LockId).Result) { lockingResult = await _lockingService.OpenLock(openLockInfo.LockId); var auditsult = await _auditLogService.LogLockResult(auditLogId, lockingResult); if (lockingResult == OpenLockResult.Opened) { _logger.LogInformation($"Request {"Open"} for Lock with Id={openLockInfo.LockId} has been successful."); return(Ok(new LockOpenSuccessful())); } else { _logger.LogWarning($"Request {"Open"} for Lock with Id={openLockInfo.LockId} has been faild."); return(Ok(new LockOpenFailed())); } } else { var auditsult = await _auditLogService.LogLockResult(auditLogId, OpenLockResult.UserAccessDenied); return(Ok(new UserAccessDenied())); } } catch (Exception ex) { _logger.LogError(ex, "Error in Lock Service API"); return(Ok(new LockingResult(-1, "Internal Error"))); } }