Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<Version>0.2.9</Version>
<Version>0.2.11</Version>
</PropertyGroup>
</Project>
25 changes: 25 additions & 0 deletions src/QAToolKit.Engine.HttpTester.Test/Fixtures/BicycleFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,31 @@ public static Bicycle Get()
};
}

public static Bicycle GetCannondale()
{
return new Bicycle
{
Id = 2,
Name = "CAADX",
Brand = "Cannondale",
Type = BicycleType.Gravel
};
}

public static List<Bicycle> GetCannondaleArray()
{
return new List<Bicycle>()
{
new Bicycle()
{
Id = 2,
Name = "CAADX",
Brand = "Cannondale",
Type = BicycleType.Gravel
}
};
}

public static Bicycle GetFoil()
{
return new Bicycle
Expand Down
4 changes: 2 additions & 2 deletions src/QAToolKit.Engine.HttpTester.Test/HttpTestAsserterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public async Task HttpTestAsserterSimple_Success()
var duration = client.Duration;
var assertResults = asserter
.ResponseContentContains("scott")
.RequestDurationEquals(duration, (x) => x < 1000)
.RequestDurationEquals(duration, (x) => x < 2000)
.ResponseStatusCodeEquals(HttpStatusCode.OK)
.ResponseHasHttpHeader("Date")
.AssertAll();
Expand Down Expand Up @@ -116,7 +116,7 @@ public async Task HttpTestAsserterHeaderMissing_Fails()
var duration = client.Duration;
Assert.Throws<ArgumentNullException>(() => asserter
.ResponseContentContains("scott")
.RequestDurationEquals(duration, (x) => x < 1000)
.RequestDurationEquals(duration, (x) => x < 2000)
.ResponseStatusCodeEquals(HttpStatusCode.OK)
.ResponseHasHttpHeader(null)
.AssertAll());
Expand Down
71 changes: 70 additions & 1 deletion src/QAToolKit.Engine.HttpTester.Test/HttpTesterClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,7 @@ public void HttpTesterClientBrochureUploadMultipartPresent_Fails()
.WithMultipart("Metadata.Year", "2000")
.WithMultipart("Metadata.Name", "Brochure 2000");

var exception = Assert.Throws<QAToolKitEngineHttpTesterException>(() => client.WithJsonBody<string>("1234"));
var exception = Assert.Throws<QAToolKitEngineHttpTesterException>(() => client.WithJsonBody<string>("1234"));
Assert.StartsWith("Body multipart/form-data already defined", exception.Message);
}
}
Expand Down Expand Up @@ -617,5 +617,74 @@ public async Task HttpTesterClientAddGetHttpRequest_Success()
Assert.True(response.IsSuccessStatusCode);
}
}

[Fact]
public async Task HttpTesterClientGetBikeByIdRequest_Success()
{
var urlSource = new SwaggerUrlSource(options =>
{
options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
options.AddRequestFilters(new RequestFilter()
{
EndpointNameWhitelist = new string[] { "GetBike" }
});
options.UseSwaggerExampleValues = true;
});

var requests = await urlSource.Load(new Uri[] {
new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
});

using (var client = new HttpTesterClient())
{
var response = await client
.CreateHttpRequest(requests.FirstOrDefault())
.WithPathReplacementValues(new Dictionary<string, string>() { { "id", "2" } })
.WithQueryParams(new Dictionary<string, string>() { { "api-version", "2" } })
.Start();

var msg = await response.GetResponseBody<Bicycle>();

var expecterResponse = BicycleFixture.GetCannondale().ToExpectedObject();
expecterResponse.ShouldEqual(msg);

Assert.True(client.Duration < 2000);
Assert.True(response.IsSuccessStatusCode);
}
}

[Fact]
public async Task HttpTesterClientGetBikesByTypeHttpRequest_Success()
{
var urlSource = new SwaggerUrlSource(options =>
{
options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
options.AddRequestFilters(new RequestFilter()
{
EndpointNameWhitelist = new string[] { "GetAllBikes" }
});
options.UseSwaggerExampleValues = true;
});

var requests = await urlSource.Load(new Uri[] {
new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
});

using (var client = new HttpTesterClient())
{
var response = await client
.CreateHttpRequest(requests.FirstOrDefault())
.WithQueryParams(new Dictionary<string, string>() { { "api-version", "2" }, {"bicycleType", "1" } })
.Start();

var msg = await response.GetResponseBody<List<Bicycle>>();

var expecterResponse = BicycleFixture.GetCannondaleArray().ToExpectedObject();
expecterResponse.ShouldEqual(msg);

Assert.True(client.Duration < 2000);
Assert.True(response.IsSuccessStatusCode);
}
}
}
}
3 changes: 1 addition & 2 deletions src/QAToolKit.Engine.HttpTester/HttpTestAsserter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using QAToolKit.Engine.HttpTester.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;

Expand Down Expand Up @@ -97,7 +96,7 @@ public IHttpTestAsserter ResponseHasHttpHeader(string headerName)
Name = nameof(ResponseHasHttpHeader),
Message = $"Contains header '{headerName}'.",
IsTrue = _httpResponseMessage.Headers.TryGetValues(headerName, out var values)
});
});

return this;
}
Expand Down
Loading