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);
    }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
 public Nailer(HttpClient http, ProgressTask task, NailgunSettings settings)
 {
     task.MaxValue(settings.Requests);
     _tool = new Nailgun(http, () => Factory.Message(settings), () => task.Increment(1), settings.Requests);
 }