public async Task WritesFileOnSuccess() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var console = new TestConsole(); var file = new byte[ushort.MaxValue]; Stream writer(string s) => new MemoryStream(file); var command = new NailgunCommand(http, writer, console); var settings = new NailgunSettings { URL = new Uri("http://localhost"), Requests = 1, Filename = "test.png" }; //act var result = await command.ExecuteAsync(null !, settings); //assert var contents = Encoding.UTF8.GetString(file); Assert.Empty(console.Output); Assert.Equal(0, result); Assert.NotEmpty(contents); }
public async Task ShowsExceptionOnFailure() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var console = new TestConsole(); var command = new NailgunCommand(http, null !, console); var settings = new NailgunSettings(); //act var result = await command.ExecuteAsync(null !, settings); //assert Assert.Equal(1, result); Assert.Contains("exception", console.Output, StringComparison.InvariantCultureIgnoreCase); }
public void URLIsRequired() { //arrange var settings = new NailgunSettings { Requests = 1, Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.False(result.Successful); }
public void NumberOfRequestsIsRequired() { //arrange var settings = new NailgunSettings { URL = new Uri("http://localhost"), Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.False(result.Successful); }
public void SuccessWhenAllExist() { //arrange var settings = new NailgunSettings { URL = new Uri("http://localhost"), Requests = 1, Filename = "test.png" }; //act var result = settings.Validate(); //assert Assert.True(result.Successful); }
public void CanNail() { //arrange var http = new HttpClient(new MockHttpMessageHandler()); var task = new ProgressTask(123, "test", 0, false); var options = new NailgunSettings() { URL = new Uri("http://localhost"), Requests = 5 }; var driller = new Nailer(http, task, options); //act var results = driller.Run(); //assert Assert.Equal(5, results.Count); }
public Nailer(HttpClient http, ProgressTask task, NailgunSettings settings) { task.MaxValue(settings.Requests); _tool = new Nailgun(http, () => Factory.Message(settings), () => task.Increment(1), settings.Requests); }