public void ShouldNotUpdateWhenNoNewEvent() { // Run the test Mock <IContractWrapper> cwMock = new Mock <IContractWrapper>(MockBehavior.Loose); cwMock .Setup(mock => mock.HasNewUpdate()) .Returns(() => Task.FromResult(false)) .Verifiable("Contract was not checked for update event"); UpdateWatch uw = new UpdateWatch(new UpdateWatchOptions { RpcEndpoint = "http://example.com", ContractAddress = "0x0", ValidatorAddress = "0x0", DockerStackPath = "./path", DockerControl = new MockDockerControl(), ConfigurationProvider = new MockConfigProvider(), ContractWrapper = cwMock.Object }, new MockLogger()); bool checkResult = uw.CheckForUpdates(); checkResult.Should().Be(false); cwMock.Verify(); cwMock.VerifyNoOtherCalls(); }
public void ShouldNotUpdateWhenEqualState() { // Run the test Mock <IContractWrapper> cwMock = new Mock <IContractWrapper>(MockBehavior.Loose); cwMock .Setup(mock => mock.HasNewUpdate()) .Returns(() => Task.FromResult(true)) .Verifiable("Contract was not checked for update event"); cwMock .Setup(mock => mock.GetExpectedState()) .Returns(() => Task.FromResult(new NodeState { DockerImage = "parity/parity:v2.3.3", DockerChecksum = "a783cc3d9b971ea268eb723eb8c653519f39abfa3d6819c1ee1f0292970cf514", ChainspecUrl = "https://example.com", IsSigning = false, ChainspecChecksum = "a783cc3d9b971ea268eb723eb8c653519f39abfa3d6819c1ee1f0292970cf514", UpdateIntroducedBlock = new BigInteger(20) })) .Verifiable("Contract was not queried for state"); // Prime config provider with equal state but older MockConfigProvider confMock = new MockConfigProvider { CurrentState = new NodeState { DockerImage = "parity/parity:v2.3.3", DockerChecksum = "a783cc3d9b971ea268eb723eb8c653519f39abfa3d6819c1ee1f0292970cf514", ChainspecUrl = "https://example.com", IsSigning = false, ChainspecChecksum = "a783cc3d9b971ea268eb723eb8c653519f39abfa3d6819c1ee1f0292970cf514", UpdateIntroducedBlock = new BigInteger(10) } }; UpdateWatch uw = new UpdateWatch(new UpdateWatchOptions { RpcEndpoint = "http://example.com", ContractAddress = "0x0", ValidatorAddress = "0x0", DockerStackPath = "./path", DockerControl = new MockDockerControl(), ConfigurationProvider = confMock, ContractWrapper = cwMock.Object }, new MockLogger()); // Should yield not update actions and therefore should return false bool checkResult = uw.CheckForUpdates(); checkResult.Should().Be(false); cwMock.Verify(); cwMock.VerifyNoOtherCalls(); }
public void ShouldUpdateWhenDifferentState(NodeState currentState, NodeState expectedState, bool shouldTriggerUpdate) { // Run the test Mock <IContractWrapper> cwMock = new Mock <IContractWrapper>(MockBehavior.Loose); cwMock .Setup(mock => mock.HasNewUpdate()) .Returns(() => Task.FromResult(true)) .Verifiable("Contract was not checked for update event"); // Mock expected state from contract cwMock .Setup(mock => mock.GetExpectedState()) .Returns(() => Task.FromResult(expectedState)) .Verifiable("Contract was not queried for state"); cwMock .Setup(mock => mock.ConfirmUpdate()) .Returns(() => Task.CompletedTask) .Verifiable("Contract was not called to confirm update"); // Prime config provider with equal state but older MockConfigProvider confMock = new MockConfigProvider { CurrentState = currentState }; UpdateWatch uw = new UpdateWatch(new UpdateWatchOptions { RpcEndpoint = "https://example.com", ContractAddress = "0x0", ValidatorAddress = "0x0", DockerStackPath = "./path", DockerControl = new MockDockerControl(expectedState.DockerChecksum), ConfigurationProvider = confMock, ContractWrapper = cwMock.Object, WaitTimeAfterUpdate = 1000 // shorten time to wait }, new MockLogger()); // Should yield update actions and therefore should return true bool checkResult = uw.CheckForUpdates(); checkResult.Should().Be(shouldTriggerUpdate); cwMock.Verify(); cwMock.VerifyNoOtherCalls(); }