public async Task SendsProperlyFormattedPostRequestWithCorrectHeaders() { var httpClient = Substitute.For<IHttpClient>(); IResponse response = new Response(); 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>()); var body = new MemoryStream(new byte[] { 48, 49, 50 }); await connection.Post<string>( new Uri("https://other.host.com/path?query=val"), body, null, "application/arbitrary"); httpClient.Received().Send(Arg.Is<IRequest>(req => req.BaseAddress == _exampleUri && req.Body == body && req.Headers["Accept"] == "application/vnd.github.quicksilver-preview+json; charset=utf-8, 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")), Args.CancellationToken); }
public async Task SetsAcceptsHeader() { var httpClient = Substitute.For<IHttpClient>(); IResponse response = new Response(); 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>()); var body = new MemoryStream(new byte[] { 48, 49, 50 }); await connection.Post<string>( new Uri("https://other.host.com/path?query=val"), body, "application/json", null); httpClient.Received().Send(Arg.Is<IRequest>(req => req.Headers["Accept"] == "application/json" && req.ContentType == "application/x-www-form-urlencoded"), Args.CancellationToken); }
public async Task SendsProperlyFormattedPostRequest() { string data = SimpleJson.SerializeObject(new object()); var httpClient = Substitute.For<IHttpClient>(); IResponse response = new Response(); 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>()); await connection.Post<string>(new Uri("endpoint", UriKind.Relative), new object(), null, null); httpClient.Received(1).Send(Arg.Is<IRequest>(req => req.BaseAddress == _exampleUri && req.ContentType == "application/x-www-form-urlencoded" && (string)req.Body == data && req.Method == HttpMethod.Post && req.Endpoint == new Uri("endpoint", UriKind.Relative)), Args.CancellationToken); }