Exemplo n.º 1
0
        public async Task Handle_Failed_NotSaved()
        {
            Random random = new Random();
            Guid   id     = random.NextGuid();

            DHCPv4Listener listener = new DHCPv4Listener();

            listener.Load(new DomainEvent[] {
                new DHCPv4ListenerCreatedEvent
                {
                    Id      = id,
                    Address = random.GetIPv4Address().ToString(),
                }
            });

            var command = new DeleteDHCPv4InterfaceListenerCommand(id);

            Mock <IDHCPv4StorageEngine> storageMock = new Mock <IDHCPv4StorageEngine>(MockBehavior.Strict);

            storageMock.Setup(x => x.CheckIfAggrerootExists <DHCPv4Listener>(id)).ReturnsAsync(true).Verifiable();
            storageMock.Setup(x => x.GetAggregateRoot <DHCPv4Listener>(id)).ReturnsAsync(listener).Verifiable();
            storageMock.Setup(x => x.Save(listener)).ReturnsAsync(false).Verifiable();

            var handler = new DeleteDHCPv4InterfaceListenerCommandHandler(
                Mock.Of <IDHCPv4InterfaceEngine>(MockBehavior.Strict), storageMock.Object, Mock.Of <ILogger <DeleteDHCPv4InterfaceListenerCommandHandler> >());

            Boolean actual = await handler.Handle(command, CancellationToken.None);

            Assert.False(actual);

            storageMock.Verify();
        }
Exemplo n.º 2
0
        public IEnumerable <DHCPv4Listener> GetPossibleListeners()
        {
            List <DHCPv4Listener> result = new List <DHCPv4Listener>();

            foreach (var nic in NetworkInterface.GetAllNetworkInterfaces())
            {
                var properites = nic.GetIPProperties();
                if (properites == null)
                {
                    continue;
                }

                foreach (var ipAddress in properites.UnicastAddresses)
                {
                    if (ipAddress.Address.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        continue;
                    }

                    DHCPv4Listener listener = DHCPv4Listener.FromNIC(nic, ipAddress.Address);
                    result.Add(listener);
                }
            }

            return(result);
        }
Exemplo n.º 3
0
        public async Task <Guid?> Handle(CreateDHCPv4InterfaceListenerCommand request, CancellationToken cancellationToken)
        {
            _logger.LogDebug("Handle started");

            var listener = DHCPv4Listener.Create(
                request.NicId,
                DHCPListenerName.FromString(request.Name),
                IPv4Address.FromString(request.IPv4Addres));

            var possibleListeners = _interfaceEngine.GetPossibleListeners();

            if (possibleListeners.Count(x => x.Address == listener.Address && x.PhysicalInterfaceId == listener.PhysicalInterfaceId) == 0)
            {
                return(null);
            }

            var activeListeners = await _interfaceEngine.GetActiveListeners();

            if (activeListeners.Count(x => x.Address == listener.Address && x.PhysicalInterfaceId == listener.PhysicalInterfaceId) > 0)
            {
                return(null);
            }

            if (await _storageEngine.Save(listener) == false)
            {
                return(null);
            }

            _interfaceEngine.OpenListener(listener);

            return(listener.Id);
        }
Exemplo n.º 4
0
        public async Task <IEnumerable <DHCPv4Listener> > GetDHCPv4Listener()
        {
            var result = await DHCPv4Interfaces.AsQueryable()
                         .OrderBy(x => x.Name).ToListAsync();

            List <DHCPv4Listener> listeners = new List <DHCPv4Listener>(result.Count);

            foreach (var item in result)
            {
                var listener = new DHCPv4Listener();
                listener.Load(new DomainEvent[]
                {
                    new DHCPv4ListenerCreatedEvent {
                        Id          = item.Id,
                        Name        = item.Name,
                        InterfaceId = item.InterfaceId,
                        Address     = item.IPv4Address,
                    }
                });

                listeners.Add(listener);
            }

            return(listeners);
        }