public async Task MakesPutRequestWithDataAndTwoFactor() { 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.PutAsync<string>(new Uri("endpoint", UriKind.Relative), new object(), "two-factor"); httpClient.Received(1).Send<string>(Arg.Is<IRequest>(req => req.BaseAddress == ExampleUri && (string)req.Body == data && req.Method == HttpMethod.Put && req.Headers["X-GitHub-OTP"] == "two-factor" && req.ContentType == "application/x-www-form-urlencoded" && req.Endpoint == new Uri("endpoint", UriKind.Relative))); }