Improve accepts and content type handling

This commit is contained in:
Haacked
2013-10-06 22:21:58 -07:00
parent 9f1626e484
commit f8e7d2da29
5 changed files with 49 additions and 30 deletions
+30 -2
View File
@@ -270,15 +270,43 @@ namespace Octokit.Tests.Http
Substitute.For<IJsonSerializer>());
var body = new MemoryStream(new byte[] { 48, 49, 50 });
var headers = new Dictionary<string, string> { { "Content-Type", "application/arbitrary" } };
await connection.PostRawAsync<string>(new Uri("https://other.host.com/path?query=val"), body, headers);
await connection.PostAsync<string>(
new Uri("https://other.host.com/path?query=val"),
body,
"application/arbitrary", null);
httpClient.Received().Send<string>(Arg.Is<IRequest>(req =>
req.BaseAddress == ExampleUri &&
req.Body == body &&
req.Headers["Accept"] == "application/vnd.github.v3+json; charset=utf-8" &&
req.ContentType == "application/arbitrary" &&
req.Method == HttpMethod.Post &&
req.Endpoint == new Uri("https://other.host.com/path?query=val")));
}
[Fact]
public async Task SetsAcceptsHeader()
{
var httpClient = Substitute.For<IHttpClient>();
IResponse<string> response = new ApiResponse<string>();
httpClient.Send<string>(Args.Request).Returns(Task.FromResult(response));
var connection = new Connection("Test Runner User Agent",
ExampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());
var body = new MemoryStream(new byte[] { 48, 49, 50 });
await connection.PostAsync<string>(
new Uri("https://other.host.com/path?query=val"),
body,
null,
"application/json");
httpClient.Received().Send<string>(Arg.Is<IRequest>(req =>
req.Headers["Accept"] == "application/json" &&
req.ContentType == null));
}
}
public class TheDeleteAsyncMethod