Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Unified Diff: net/url_request/url_request_unittest.cc

Issue 2769703006: Reporting: Plumb into UrlRequest{HttpJob,Context}. (Closed)
Patch Set: Fix unittest failure. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/url_request/url_request_http_job.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/url_request/url_request_unittest.cc
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index 9a6eaa0573a02ebbd3bc1073b5661eb2cd93dcfe..65839681d6e3ed3d4af3d571f454a1efde857653 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -92,6 +92,7 @@
#include "net/proxy/proxy_service.h"
#include "net/quic/chromium/mock_crypto_client_stream_factory.h"
#include "net/quic/chromium/quic_server_info.h"
+#include "net/reporting/reporting_service.h"
#include "net/socket/socket_test_util.h"
#include "net/socket/ssl_client_socket.h"
#include "net/ssl/channel_id_service.h"
@@ -6540,6 +6541,135 @@ TEST_F(URLRequestTestHTTP, ExpectCTHeader) {
EXPECT_EQ(1u, reporter.num_failures());
}
+namespace {
+
+class TestReportingService : public ReportingService {
+ public:
+ struct Header {
+ GURL url;
+ std::string header_value;
+ };
+
+ ~TestReportingService() override {}
+
+ const std::vector<Header>& headers() { return headers_; }
+
+ void QueueReport(const GURL& url,
+ const std::string& group,
+ const std::string& type,
+ std::unique_ptr<const base::Value> body) override {
+ NOTIMPLEMENTED();
+ }
+
+ void ProcessHeader(const GURL& url,
+ const std::string& header_value) override {
+ headers_.push_back({url, header_value});
+ }
+
+ private:
+ std::vector<Header> headers_;
+};
+
+std::unique_ptr<test_server::HttpResponse> SendReportToHeader(
+ const test_server::HttpRequest& request) {
+ std::unique_ptr<test_server::BasicHttpResponse> http_response(
+ new test_server::BasicHttpResponse);
+ http_response->set_code(HTTP_OK);
+ http_response->AddCustomHeader("Report-To", "foo");
+ http_response->AddCustomHeader("Report-To", "bar");
+ return std::move(http_response);
+}
+
+} // namespace
+
+TEST_F(URLRequestTestHTTP, DontProcessReportToHeaderNoService) {
+ http_test_server()->RegisterRequestHandler(base::Bind(&SendReportToHeader));
+ ASSERT_TRUE(http_test_server()->Start());
+ GURL request_url = http_test_server()->GetURL("/");
+
+ TestNetworkDelegate network_delegate;
+ TestURLRequestContext context(true);
+ context.set_network_delegate(&network_delegate);
+ context.Init();
+
+ TestDelegate d;
+ std::unique_ptr<URLRequest> request(
+ context.CreateRequest(request_url, DEFAULT_PRIORITY, &d));
+ request->Start();
+ base::RunLoop().Run();
+}
+
+TEST_F(URLRequestTestHTTP, DontProcessReportToHeaderHTTP) {
+ http_test_server()->RegisterRequestHandler(base::Bind(&SendReportToHeader));
+ ASSERT_TRUE(http_test_server()->Start());
+ GURL request_url = http_test_server()->GetURL("/");
+
+ TestNetworkDelegate network_delegate;
+ TestReportingService reporting_service;
+ TestURLRequestContext context(true);
+ context.set_network_delegate(&network_delegate);
+ context.set_reporting_service(&reporting_service);
+ context.Init();
+
+ TestDelegate d;
+ std::unique_ptr<URLRequest> request(
+ context.CreateRequest(request_url, DEFAULT_PRIORITY, &d));
+ request->Start();
+ base::RunLoop().Run();
+
+ EXPECT_TRUE(reporting_service.headers().empty());
+}
+
+TEST_F(URLRequestTestHTTP, ProcessReportToHeaderHTTPS) {
+ EmbeddedTestServer https_test_server(net::EmbeddedTestServer::TYPE_HTTPS);
+ https_test_server.RegisterRequestHandler(base::Bind(&SendReportToHeader));
+ ASSERT_TRUE(https_test_server.Start());
+ GURL request_url = https_test_server.GetURL("/");
+
+ TestNetworkDelegate network_delegate;
+ TestReportingService reporting_service;
+ TestURLRequestContext context(true);
+ context.set_network_delegate(&network_delegate);
+ context.set_reporting_service(&reporting_service);
+ context.Init();
+
+ TestDelegate d;
+ std::unique_ptr<URLRequest> request(
+ context.CreateRequest(request_url, DEFAULT_PRIORITY, &d));
+ request->Start();
+ base::RunLoop().Run();
+
+ ASSERT_EQ(1u, reporting_service.headers().size());
+ EXPECT_EQ(request_url, reporting_service.headers()[0].url);
+ EXPECT_EQ("foo, bar", reporting_service.headers()[0].header_value);
+}
+
+TEST_F(URLRequestTestHTTP, DontProcessReportToHeaderInvalidHTTPS) {
+ EmbeddedTestServer https_test_server(net::EmbeddedTestServer::TYPE_HTTPS);
+ https_test_server.SetSSLConfig(net::EmbeddedTestServer::CERT_MISMATCHED_NAME);
+ https_test_server.RegisterRequestHandler(base::Bind(&SendReportToHeader));
+ ASSERT_TRUE(https_test_server.Start());
+ GURL request_url = https_test_server.GetURL("/");
+
+ TestNetworkDelegate network_delegate;
+ TestReportingService reporting_service;
+ TestURLRequestContext context(true);
+ context.set_network_delegate(&network_delegate);
+ context.set_reporting_service(&reporting_service);
+ context.Init();
+
+ TestDelegate d;
+ d.set_allow_certificate_errors(true);
+ std::unique_ptr<URLRequest> request(
+ context.CreateRequest(request_url, DEFAULT_PRIORITY, &d));
+ request->Start();
+ base::RunLoop().Run();
+
+ EXPECT_TRUE(d.have_certificate_errors());
+ EXPECT_TRUE(IsCertStatusError(request->ssl_info().cert_status));
+ EXPECT_TRUE(reporting_service.headers().empty());
+}
+
#endif // !defined(OS_IOS)
TEST_F(URLRequestTestHTTP, ContentTypeNormalizationTest) {
« no previous file with comments | « net/url_request/url_request_http_job.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698