blob: 4b589467d7cf632a6d77819a75d14fc12b461e10 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/http/http_stream_key.h"
#include "net/base/network_anonymization_key.h"
#include "net/base/privacy_mode.h"
#include "net/dns/public/secure_dns_policy.h"
#include "net/socket/socket_tag.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#include "url/scheme_host_port.h"
namespace net {
// These tests are similar to SpdySessionKeyTest. Note that we don't support
// non-null SocketTag.
TEST(HttpStreamKeyTest, Equality) {
const url::SchemeHostPort kHost("https", "www.example.com", 443);
HttpStreamKey key(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true);
EXPECT_EQ(key,
HttpStreamKey(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true));
EXPECT_NE(key,
HttpStreamKey(url::SchemeHostPort("https", "othersite", 443),
PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true));
EXPECT_NE(key,
HttpStreamKey(kHost, PRIVACY_MODE_ENABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true));
EXPECT_NE(key, HttpStreamKey(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey::CreateSameSite(
SchemefulSite(GURL("http://a.test/"))),
SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true));
EXPECT_NE(key,
HttpStreamKey(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kDisable,
/*disable_cert_network_fetches=*/true));
EXPECT_NE(key,
HttpStreamKey(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/false));
}
TEST(HttpStreamKeyTest, OrderedSet) {
const url::SchemeHostPort kHost("https", "www.example.com", 443);
const std::vector<HttpStreamKey> stream_keys = {
HttpStreamKey(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true),
HttpStreamKey(url::SchemeHostPort("https", "othersite", 443),
PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true),
HttpStreamKey(kHost, PRIVACY_MODE_ENABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true),
HttpStreamKey(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey::CreateSameSite(
SchemefulSite(GURL("http://a.test/"))),
SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/true),
HttpStreamKey(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kDisable,
/*disable_cert_network_fetches=*/true),
HttpStreamKey(kHost, PRIVACY_MODE_DISABLED, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*disable_cert_network_fetches=*/false),
};
const std::set<HttpStreamKey> key_set(stream_keys.begin(), stream_keys.end());
ASSERT_EQ(stream_keys.size(), key_set.size());
}
} // namespace net