Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 public async Task <Result> Post(GatewayDto input)
 {
     return(await _gatewayService.AddGateway(input));
 }
Esempio n. 14
0
        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);
        }