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(); }
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); }
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); }
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); }