blob: 32d1742d6fc55971eee5b2bd001950fa3955c1b6 [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/test/bind.h"
#include "base/test/task_environment.h"
#include "base/time/time.h"
#include "net/base/ip_address.h"
#include "net/base/ip_endpoint.h"
#include "net/base/request_priority.h"
#include "net/http/http_response_headers.h"
#include "net/ssl/ssl_info.h"
#include "net/url_request/referrer_policy.h"
#include "services/network/public/cpp/devtools_observer_util.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/mojom/trust_tokens.mojom.h"
#include "services/network/public/mojom/url_response_head.mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace network {
TEST(DevToolsObserverUtilTest, ExtractURLResponseHead) {
base::test::SingleThreadTaskEnvironment task_environment;
mojom::URLResponseHead head;
head.response_time = base::Time() + base::Microseconds(10);
head.headers =
base::MakeRefCounted<net::HttpResponseHeaders>("HTTP/1.1 200 OK\0");
head.mime_type = "mime_type";
head.load_timing.first_early_hints_time =
base::TimeTicks() + base::Microseconds(11);
head.cert_status = 12;
head.encoded_data_length = 13;
head.was_in_prefetch_cache = true;
head.was_fetched_via_service_worker = false;
head.cache_storage_cache_name = "cache storage name";
head.alpn_negotiated_protocol = "alpn";
head.was_fetched_via_spdy = true;
head.service_worker_response_source = mojom::FetchResponseSource::kHttpCache;
head.ssl_info = net::SSLInfo();
head.remote_endpoint = net::IPEndPoint(net::IPAddress(1, 2, 3, 4), 99);
mojom::URLResponseHeadDevToolsInfoPtr head_info = ExtractDevToolsInfo(head);
EXPECT_EQ(head_info->response_time, head.response_time);
ASSERT_EQ(head_info->headers.get(), head.headers.get());
EXPECT_EQ(head_info->mime_type, head.mime_type);
EXPECT_EQ(head_info->load_timing.first_early_hints_time,
head.load_timing.first_early_hints_time);
EXPECT_EQ(head_info->cert_status, head.cert_status);
EXPECT_EQ(head_info->encoded_data_length, head.encoded_data_length);
EXPECT_EQ(head_info->was_in_prefetch_cache, head.was_in_prefetch_cache);
EXPECT_EQ(head_info->was_fetched_via_service_worker,
head.was_fetched_via_service_worker);
EXPECT_EQ(head_info->cache_storage_cache_name, head.cache_storage_cache_name);
EXPECT_EQ(head_info->alpn_negotiated_protocol, head.alpn_negotiated_protocol);
EXPECT_EQ(head_info->was_fetched_via_spdy, head.was_fetched_via_spdy);
EXPECT_EQ(head_info->service_worker_response_source,
head.service_worker_response_source);
EXPECT_EQ(head_info->ssl_info.has_value(), head.ssl_info.has_value());
EXPECT_EQ(head_info->remote_endpoint, head.remote_endpoint);
}
TEST(DevToolsObserverUtilTest, ExtractResourceRequest) {
base::test::SingleThreadTaskEnvironment task_environment;
GURL url("http://example.org");
ResourceRequest request;
request.method = "method";
request.url = url;
request.priority = net::RequestPriority::MAXIMUM_PRIORITY;
request.referrer_policy =
net::ReferrerPolicy::CLEAR_ON_TRANSITION_CROSS_ORIGIN;
request.trust_token_params = mojom::TrustTokenParams();
mojom::URLRequestDevToolsInfoPtr request_info = ExtractDevToolsInfo(request);
EXPECT_EQ(request_info->method, request.method);
EXPECT_EQ(request_info->url, request.url);
EXPECT_EQ(request_info->priority, request.priority);
EXPECT_EQ(request_info->referrer_policy, request.referrer_policy);
EXPECT_EQ(*request_info->trust_token_params,
request.trust_token_params.value());
}
} // namespace network