public async Task SendsProperlyFormattedPostRequestWithCorrectHeaders() { var httpClient = Substitute.For<IHttpClient>(); IResponse<string> response = new ApiResponse<string>(); httpClient.Send<string>(Args.Request).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.PostAsync<string>( new Uri("https://other.host.com/path?query=val"), body, null, "application/arbitrary"); 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"))); }
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(new ProductHeaderValue("OctokitTests"), 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, "application/json", null); httpClient.Received().Send<string>(Arg.Is<IRequest>(req => req.Headers["Accept"] == "application/json" && req.ContentType == "application/x-www-form-urlencoded")); }
public async Task SendsProperlyFormattedPostRequest() { string data = SimpleJson.SerializeObject(new object()); var httpClient = Substitute.For<IHttpClient>(); IResponse<string> response = new ApiResponse<string>(); httpClient.Send<string>(Args.Request).Returns(Task.FromResult(response)); var connection = new Connection(new ProductHeaderValue("OctokitTests"), ExampleUri, Substitute.For<ICredentialStore>(), httpClient, Substitute.For<IJsonSerializer>()); await connection.PostAsync<string>(new Uri("endpoint", UriKind.Relative), new object(), null, null); httpClient.Received(1).Send<string>(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))); }