public void StartCannotBeCalledTwice() { var exploitState = new ExploitState { Id = 1, Exploited = ExploitStatus.NotStarted, Value = null }; var exploit = new Mock <IExploitRunner>(); var exploitRunners = new IExploitRunner[] { exploit.Object }; // On construction var sut = new ExploitsOrchestrator(exploitRunners); // Started sut.Start(); var ex = Assert.Throws <InvalidOperationException>(() => sut.Start() ); Assert.Contains("Unable to restart exploits - can only be run once", ex.Message); }
public void GoesThroughExpectedStates() { var exploitState = new ExploitState { Id = 1, Exploited = ExploitStatus.NotStarted, Value = null }; var exploit = new Mock <IExploitRunner>(); exploit.Setup(x => x.Start()).Callback(() => { exploitState.Exploited = ExploitStatus.Running; }); exploit.Setup(x => x.CurrentState).Returns( exploitState ); var exploitRunners = new IExploitRunner[] { exploit.Object }; // On construction var sut = new ExploitsOrchestrator(exploitRunners); Assert.False(sut.Started); Assert.False(sut.Finished); Assert.Equal(ExploitStatus.NotStarted, sut.GetExploitStates().ToArray()[0].Exploited); // Started sut.Start(); Assert.True(sut.Started); Assert.False(sut.Finished); Assert.Equal(ExploitStatus.Running, sut.GetExploitStates().ToArray()[0].Exploited); // Finished // Started exploitState.Exploited = ExploitStatus.Successful; exploitState.Value = "Secret1234"; Assert.True(sut.Started); Assert.True(sut.Finished); Assert.Equal(ExploitStatus.Successful, sut.GetExploitStates().ToArray()[0].Exploited); Assert.Equal("Secret1234", sut.GetExploitStates().ToArray()[0].Value); }