public async Task <Result> AddGateway(GatewayDto gateway) { Result result = new Result(); IPAddress.TryParse(gateway.IPV4Address, out IPAddress ipv4Address); if (ipv4Address == null || ipv4Address.AddressFamily != AddressFamily.InterNetwork) { result.AddError("Invalid IPV4 address"); } else if (gateway.Name == null || gateway.Name == "") { result.AddError("Please, specify a name."); } else if (gateway.SerialNumber == null || gateway.SerialNumber == "") { result.AddError("Please, specify a serial number."); } else if (this._repository.GetAll().Any(x => x.SerialNumber == gateway.SerialNumber)) { result.AddError("There is already a gateway with the specified serial number"); } else { try { await this._repository.Insert(_mapper.Map <Domain.Gateway>(gateway)); } catch (System.Exception) { result.AddError("Unexpected error adding a device"); } } return(result); }
public async Task <ActionResult> UpdateGateway(string id, [FromBody] GatewayDto gatewayDto) { if (gatewayDto == null) { return(BadRequest("Gateway object is null")); } if (!ModelState.IsValid) { return(BadRequest("Invalid model object")); } var gatewayEntity = await repoWrapper.Gateway.GetGatewayById(id); if (gatewayEntity == null) { return(NotFound()); } mapper.Map(gatewayDto, gatewayEntity); repoWrapper.Gateway.Update(gatewayEntity); var response = await repoWrapper.SaveAsync(); if (!response.Success) { return(BadRequest(response.Message)); } var gatewayResult = mapper.Map <Gateway, GatewayDetailedDto>(gatewayEntity); return(Ok(gatewayResult)); }
public async Task TestCreateFailureDueToDuplicateSerial() { IGatewayBusiness gatewayBusiness = ServiceProvider.GetService <IGatewayBusiness>(); string serial = DateTime.Now.Ticks.ToString(); GatewayDto gateway = new GatewayDto { SerialNumber = serial, FirmwareVersion = "Test firmware version", State = "Test state" }; var result = await gatewayBusiness.Add(gateway); Assert.True(result.Success, result.Message); Assert.True(result.Data.Id > 0); GatewayDto duplicate = new GatewayDto { SerialNumber = serial, FirmwareVersion = "Test firmware version 1", State = "Test state 1" }; result = await gatewayBusiness.Add(duplicate); Assert.False(result.Success, result.Message); }
private void ConfigureData() { gateway = new Domain.Gateway() { Id = 1, SerialNumber = "G1", IPV4Address = "12.12.1.2", Name = "G1" }; gatewayDto = new GatewayDto() { Id = 1, SerialNumber = "G1", IPV4Address = "12.12.1.2", Name = "G1" }; gatewayDetailsDto = new GatewayDetailsDto() { Id = 1, SerialNumber = "G1", IPV4Address = "12.12.1.2", Name = "G1", Devices = new List <DeviceDto>() }; mapper = new MapperConfiguration(c => c.AddProfile <AutoMapping>()).CreateMapper(); gatewayRepositoryMock.Get(gateway.Id).Returns(Task <Domain.Gateway> .FromResult(gateway)); gatewayRepositoryMock.Insert(gateway).Returns(Task <Domain.Gateway> .FromResult(gateway)); gatewayRepositoryMock.Delete(gateway).Returns(Task <Domain.Gateway> .FromResult(gateway)); service = new GatewayService(this.gatewayRepositoryMock, mapper); }
public async Task <ActionResult> CreateGateway([FromBody] GatewayDto gatewayDto) { if (gatewayDto == null) { return(BadRequest("Gateway object is null")); } if (!ModelState.IsValid) { return(BadRequest("Invalid model object")); } var gatewayEntity = mapper.Map <Gateway>(gatewayDto); repoWrapper.Gateway.Create(gatewayEntity); var result = await repoWrapper.SaveAsync(); if (!result.Success) { return(BadRequest(result.Message)); } var gatewayResult = mapper.Map <Gateway, GatewayDetailedDto>(gatewayEntity); return(CreatedAtRoute("GatewayById", new { id = gatewayEntity.SerialNumber }, gatewayResult)); }
public async Task CreateGateway_ResultOK() { var correctGateway = new GatewayDto { Name = "Network 1", Address = "192.168.1.1" }; var result = await controller.CreateGateway(correctGateway); Assert.IsType <CreatedAtRouteResult>(result); }
public async Task UpdateGateway__ReturnsOk() { const string id = "6521-1434-3451-4531"; var inputGateway = new GatewayDto { Name = "Network one", Address = "192.168.1.11" }; var updateResult = await controller.UpdateGateway(id, inputGateway); Assert.IsType <OkObjectResult>(updateResult); }
public async Task CreateGateway_ReturnsBadRequest() { var missingSerialGateway = new GatewayDto { Name = "Network 1", Address = "192.168.1.665" }; controller.ModelState.AddModelError("Address", "Not valid"); var result = await controller.CreateGateway(missingSerialGateway); Assert.IsType <BadRequestObjectResult>(result); }
public async Task CreateValidGateway_AddItem() { var correctGateway = new GatewayDto { Name = "Network 1", Address = "192.168.1.1" }; await controller.CreateGateway(correctGateway); var getResult = await controller.GetGateways(); var okResult = getResult.Result as OkObjectResult; var items = okResult?.Value as IEnumerable <GatewayDetailedDto>; Assert.Equal(5, items?.Count()); }
public async Task TestCreateSucess() { IGatewayBusiness gatewayBusiness = ServiceProvider.GetService <IGatewayBusiness>(); GatewayDto gateway = new GatewayDto { SerialNumber = DateTime.Now.Ticks.ToString(), FirmwareVersion = "Test firmware version", State = "Test state" }; var result = await gatewayBusiness.Add(gateway); Assert.True(result.Success, result.Message); Assert.True(result.Data.Id > 0); }
public async Task UpdateGateway__ReturnsUpdatedItem() { const string id = "6521-1434-3451-4531"; var inputGateway = new GatewayDto { Name = "Network one", Address = "192.168.1.11" }; await controller.UpdateGateway(id, inputGateway); var getAction = await controller.GetGatewayById(id); var okGetResult = getAction.Result as OkObjectResult; var updatedGatewayDb = okGetResult?.Value as GatewayDetailedDto; Assert.Equal(updatedGatewayDb?.Name, inputGateway.Name); Assert.Equal(updatedGatewayDb?.Address, inputGateway.Address); }
public async Task <OperationResultModel <GatewayDto> > Add(GatewayDto model) { var result = new OperationResultModel <GatewayDto>(); try { bool existAlready = await _gatewayDao.GetBySerialNumber(model.SerialNumber) != null; if (existAlready) { result.SetMessage("The gateway is already registered"); return(result); } var device = await _gatewayDao.Add(new Gateway { SerialNumber = model.SerialNumber, FirmwareVersion = model.FirmwareVersion, State = model.State, IP = model.IP, Port = model.Port }); model.Id = device.Id; result .SetStatus(true) .SetMessage("Gateway has been registered successfully") .SetData(model); } catch (Exception ex) { _logger.LogError(ex.Message); result.SetMessage("Error creating a gateway"); } return(result); }
public async Task <Result> Post(GatewayDto input) { return(await _gatewayService.AddGateway(input)); }
private GatewayDto GetInputModel() { GatewayDto gatewayDto = new GatewayDto(); Console.Write("\nSerial number: "); gatewayDto.SerialNumber = Console.ReadLine(); while (string.IsNullOrEmpty(gatewayDto.SerialNumber)) { Console.WriteLine("\nSerial number must not be empty"); Console.Write("\nSerial number: "); gatewayDto.SerialNumber = Console.ReadLine(); } Console.Write("\nFirmware version: "); gatewayDto.FirmwareVersion = Console.ReadLine(); if (string.IsNullOrEmpty(gatewayDto.FirmwareVersion)) { gatewayDto.FirmwareVersion = null; } Console.Write("\nState: "); gatewayDto.State = Console.ReadLine(); if (string.IsNullOrEmpty(gatewayDto.State)) { gatewayDto.State = null; } Console.Write("\nIP: "); gatewayDto.IP = Console.ReadLine(); if (string.IsNullOrEmpty(gatewayDto.IP)) { gatewayDto.IP = null; } if (gatewayDto.IP != null) { while (!_deviceSpecsValidator.IsValidIPv4Address(gatewayDto.IP) && !_deviceSpecsValidator.IsValidIPv6Address(gatewayDto.IP)) { Console.WriteLine("\nInvalid IP address"); Console.Write("\nIP: "); gatewayDto.IP = Console.ReadLine(); } } Console.Write("\nPort: "); string portInput = Console.ReadLine(); if (!string.IsNullOrEmpty(portInput)) { bool validPort = int.TryParse(portInput, out int port) && _deviceSpecsValidator.IsValidPort(port); while (!validPort) { Console.WriteLine("\nInvalid port number"); Console.Write("\nPort: "); portInput = Console.ReadLine(); validPort = int.TryParse(portInput, out port) && _deviceSpecsValidator.IsValidPort(port); } gatewayDto.Port = port; } Console.WriteLine("Registering...\n"); return(gatewayDto); }