public void HandleDecline_AcceptDecline_RequesAddressExits_LeaseExists_LeaseIsPending_AddressIsNotSuspended() { Random random = new Random(); IPv4Address leasedAddress = IPv4Address.FromString("192.168.178.3"); DHCPv4Packet requestPacket = GetDeclinePacket(random, leasedAddress); Mock <IScopeResolverManager <DHCPv4Packet, IPv4Address> > scopeResolverMock = new Mock <IScopeResolverManager <DHCPv4Packet, IPv4Address> >(MockBehavior.Strict); var resolverInformations = new CreateScopeResolverInformation { Typename = nameof(DHCPv4RelayAgentSubnetResolver), }; Mock <IScopeResolver <DHCPv4Packet, IPv4Address> > resolverMock = new Mock <IScopeResolver <DHCPv4Packet, IPv4Address> >(MockBehavior.Strict); scopeResolverMock.Setup(x => x.InitializeResolver(resolverInformations)).Returns(resolverMock.Object); Guid scopeId = random.NextGuid(); Guid leaseId = random.NextGuid(); DateTime leaseCreatedAt = DateTime.UtcNow.AddHours(-1); DHCPv4RootScope rootScope = GetRootScope(scopeResolverMock); rootScope.Load(new List <DomainEvent> { new DHCPv4ScopeEvents.DHCPv4ScopeAddedEvent( new DHCPv4ScopeCreateInstruction { AddressProperties = new DHCPv4ScopeAddressProperties( IPv4Address.FromString("192.168.178.0"), IPv4Address.FromString("192.168.178.100"), new List <IPv4Address> { IPv4Address.FromString("192.168.178.0") }, leaseTime: TimeSpan.FromDays(1), acceptDecline: true), ResolverInformation = resolverInformations, Name = "Testscope", Id = scopeId, }), new DHCPv4LeaseCreatedEvent { EntityId = leaseId, Address = leasedAddress, ClientIdenfier = DHCPv4ClientIdentifier.FromHwAddress(requestPacket.ClientHardwareAddress).GetBytes(), ScopeId = scopeId, UniqueIdentifier = null, StartedAt = leaseCreatedAt, ValidUntil = DateTime.UtcNow.AddDays(1), }, }); DHCPv4Packet result = rootScope.HandleDecline(requestPacket); Assert.Equal(DHCPv4Packet.Empty, result); DHCPv4Lease lease = rootScope.GetScopeById(scopeId).Leases.GetLeaseById(leaseId); Assert.Equal(LeaseStates.Suspended, lease.State); CheckEventAmount(2, rootScope); CheckDeclineEvent(0, leaseId, leasedAddress, scopeId, rootScope); CheckDeclinedEvent(1, DeclineErros.NoError, requestPacket, rootScope, scopeId); }