Merge pull request #1133 from devkhan/json-serializer-fix

[RFC] [WIP] IJsonSerializer parameter in Connection.cs wasn't being used
This commit is contained in:
Ryan Gribble
2016-03-09 22:33:12 +10:00
2 changed files with 55 additions and 14 deletions
+54 -13
View File
@@ -306,21 +306,30 @@ namespace Octokit.Tests.Http
[Fact]
public async Task RunsConfiguredAppWithAppropriateEnv()
{
string data = SimpleJson.SerializeObject(new object());
var httpClient = Substitute.For<IHttpClient>();
var body = new object();
var expectedData = SimpleJson.SerializeObject(body);
var serializer = Substitute.For<IJsonSerializer>();
serializer.Serialize(body).Returns(expectedData);
IResponse response = new Response();
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var httpClient = Substitute.For<IHttpClient>();
httpClient.Send(Args.Request, Args.CancellationToken)
.Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());
serializer);
await connection.Patch<string>(new Uri("endpoint", UriKind.Relative), new object());
await connection.Patch<string>(new Uri("endpoint", UriKind.Relative), body);
serializer.Received(1).Serialize(body);
httpClient.Received(1).Send(Arg.Is<IRequest>(req =>
req.BaseAddress == _exampleUri &&
(string)req.Body == data &&
(string)req.Body == expectedData &&
req.Method == HttpVerb.Patch &&
req.ContentType == "application/x-www-form-urlencoded" &&
req.Endpoint == new Uri("endpoint", UriKind.Relative)), Args.CancellationToken);
@@ -350,18 +359,24 @@ namespace Octokit.Tests.Http
public async Task MakesPutRequestWithData()
{
var body = new object();
var serializer = Substitute.For<IJsonSerializer>();
var expectedBody = SimpleJson.SerializeObject(body);
var httpClient = Substitute.For<IHttpClient>();
IResponse response = new Response();
serializer.Serialize(body).Returns(expectedBody);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());
serializer);
await connection.Put<string>(new Uri("endpoint", UriKind.Relative), body);
serializer.Received(1).Serialize(body);
httpClient.Received(1).Send(Arg.Is<IRequest>(req =>
req.BaseAddress == _exampleUri &&
(string)req.Body == expectedBody &&
@@ -374,18 +389,25 @@ namespace Octokit.Tests.Http
public async Task MakesPutRequestWithNoData()
{
var body = RequestBody.Empty;
var serializer = Substitute.For<IJsonSerializer>();
var expectedBody = SimpleJson.SerializeObject(body);
var httpClient = Substitute.For<IHttpClient>();
IResponse response = new Response();
serializer.Serialize(body).Returns(expectedBody);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());
serializer);
await connection.Put<string>(new Uri("endpoint", UriKind.Relative), body);
serializer.Received(1).Serialize(body);
httpClient.Received(1).Send(Arg.Is<IRequest>(req =>
req.BaseAddress == _exampleUri &&
(string)req.Body == expectedBody &&
@@ -397,18 +419,24 @@ namespace Octokit.Tests.Http
public async Task MakesPutRequestWithDataAndTwoFactor()
{
var body = new object();
var serializer = Substitute.For<IJsonSerializer>();
var expectedBody = SimpleJson.SerializeObject(body);
var httpClient = Substitute.For<IHttpClient>();
IResponse response = new Response();
serializer.Serialize(body).Returns(expectedBody);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());
serializer);
await connection.Put<string>(new Uri("endpoint", UriKind.Relative), body, "two-factor");
serializer.Received(1).Serialize(body);
httpClient.Received(1).Send(Arg.Is<IRequest>(req =>
req.BaseAddress == _exampleUri &&
(string)req.Body == expectedBody &&
@@ -422,18 +450,24 @@ namespace Octokit.Tests.Http
public async Task MakesPutRequestWithNoDataAndTwoFactor()
{
var body = RequestBody.Empty;
var serializer = Substitute.For<IJsonSerializer>();
var expectedBody = SimpleJson.SerializeObject(body);
var httpClient = Substitute.For<IHttpClient>();
IResponse response = new Response();
serializer.Serialize(body).Returns(expectedBody);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());
serializer);
await connection.Put<string>(new Uri("endpoint", UriKind.Relative), body, "two-factor");
serializer.Received(1).Serialize(body);
httpClient.Received(1).Send(Arg.Is<IRequest>(req =>
req.BaseAddress == _exampleUri &&
(string)req.Body == expectedBody &&
@@ -448,17 +482,24 @@ namespace Octokit.Tests.Http
[Fact]
public async Task SendsProperlyFormattedPostRequest()
{
string data = SimpleJson.SerializeObject(new object());
var body = new object();
var serializer = Substitute.For<IJsonSerializer>();
var data = SimpleJson.SerializeObject(body);
var httpClient = Substitute.For<IHttpClient>();
IResponse response = new Response();
serializer.Serialize(body).Returns(data);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());
serializer);
await connection.Post<string>(new Uri("endpoint", UriKind.Relative), new object(), null, null);
await connection.Post<string>(new Uri("endpoint", UriKind.Relative), body, null, null);
serializer.Received(1).Serialize(body);
httpClient.Received(1).Send(Arg.Is<IRequest>(req =>
req.BaseAddress == _exampleUri &&
+1 -1
View File
@@ -133,7 +133,7 @@ namespace Octokit
BaseAddress = baseAddress;
_authenticator = new Authenticator(credentialStore);
_httpClient = httpClient;
_jsonPipeline = new JsonHttpPipeline();
_jsonPipeline = new JsonHttpPipeline(serializer);
}
/// <summary>