Index: chrome/browser/ssl/chrome_security_state_model_client_unittest.cc |
diff --git a/chrome/browser/ssl/chrome_security_state_model_client_unittest.cc b/chrome/browser/ssl/chrome_security_state_model_client_unittest.cc |
deleted file mode 100644 |
index 9a50d7bc05b7e937f30a2843530afc2399932d46..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ssl/chrome_security_state_model_client_unittest.cc |
+++ /dev/null |
@@ -1,245 +0,0 @@ |
-// Copyright 2016 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 "chrome/browser/ssl/chrome_security_state_model_client.h" |
- |
-#include "components/security_state/security_state_model.h" |
-#include "content/public/browser/security_style_explanation.h" |
-#include "content/public/browser/security_style_explanations.h" |
-#include "net/cert/cert_status_flags.h" |
-#include "net/ssl/ssl_cipher_suite_names.h" |
-#include "net/ssl/ssl_connection_status_flags.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace { |
- |
-// Tests that SecurityInfo flags for subresources with certificate |
-// errors are reflected in the SecurityStyleExplanations produced by |
-// ChromeSecurityStateModelClient. |
-TEST(ChromeSecurityStateModelClientTest, |
- GetSecurityStyleForContentWithCertErrors) { |
- content::SecurityStyleExplanations explanations; |
- security_state::SecurityStateModel::SecurityInfo security_info; |
- security_info.cert_status = 0; |
- security_info.scheme_is_cryptographic = true; |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_TRUE(explanations.ran_content_with_cert_errors); |
- EXPECT_TRUE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_RAN; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_TRUE(explanations.ran_content_with_cert_errors); |
- EXPECT_FALSE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_FALSE(explanations.ran_content_with_cert_errors); |
- EXPECT_TRUE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_NONE; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_FALSE(explanations.ran_content_with_cert_errors); |
- EXPECT_FALSE(explanations.displayed_content_with_cert_errors); |
-} |
- |
-// Tests that SecurityStyleExplanations for subresources with cert |
-// errors are *not* set when the main resource has major certificate |
-// errors. If the main resource has certificate errors, it would be |
-// duplicative/confusing to also report subresources with cert errors. |
-TEST(ChromeSecurityStateModelClientTest, |
- SubresourcesAndMainResourceWithMajorCertErrors) { |
- content::SecurityStyleExplanations explanations; |
- security_state::SecurityStateModel::SecurityInfo security_info; |
- security_info.cert_status = net::CERT_STATUS_DATE_INVALID; |
- security_info.scheme_is_cryptographic = true; |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_FALSE(explanations.ran_content_with_cert_errors); |
- EXPECT_FALSE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_RAN; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_FALSE(explanations.ran_content_with_cert_errors); |
- EXPECT_FALSE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_FALSE(explanations.ran_content_with_cert_errors); |
- EXPECT_FALSE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_NONE; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_FALSE(explanations.ran_content_with_cert_errors); |
- EXPECT_FALSE(explanations.displayed_content_with_cert_errors); |
-} |
- |
-// Tests that SecurityStyleExplanations for subresources with cert |
-// errors are set when the main resource has only minor certificate |
-// errors. Minor errors on the main resource should not hide major |
-// errors on subresources. |
-TEST(ChromeSecurityStateModelClientTest, |
- SubresourcesAndMainResourceWithMinorCertErrors) { |
- content::SecurityStyleExplanations explanations; |
- security_state::SecurityStateModel::SecurityInfo security_info; |
- security_info.cert_status = net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION; |
- security_info.scheme_is_cryptographic = true; |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_TRUE(explanations.ran_content_with_cert_errors); |
- EXPECT_TRUE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_RAN; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_TRUE(explanations.ran_content_with_cert_errors); |
- EXPECT_FALSE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_FALSE(explanations.ran_content_with_cert_errors); |
- EXPECT_TRUE(explanations.displayed_content_with_cert_errors); |
- |
- security_info.content_with_cert_errors_status = |
- security_state::SecurityStateModel::CONTENT_STATUS_NONE; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_FALSE(explanations.ran_content_with_cert_errors); |
- EXPECT_FALSE(explanations.displayed_content_with_cert_errors); |
-} |
- |
-bool FindSecurityStyleExplanation( |
- const std::vector<content::SecurityStyleExplanation>& explanations, |
- const char* summary, |
- content::SecurityStyleExplanation* explanation) { |
- for (const auto& entry : explanations) { |
- if (entry.summary == summary) { |
- *explanation = entry; |
- return true; |
- } |
- } |
- |
- return false; |
-} |
- |
-// Test that connection explanations are formated as expected. Note the strings |
-// are not translated and so will be the same in any locale. |
-TEST(ChromeSecurityStateModelClientTest, ConnectionExplanation) { |
- // Test a modern configuration with a key exchange group. |
- security_state::SecurityStateModel::SecurityInfo security_info; |
- security_info.cert_status = net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION; |
- security_info.scheme_is_cryptographic = true; |
- net::SSLConnectionStatusSetCipherSuite( |
- 0xcca8 /* TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 */, |
- &security_info.connection_status); |
- net::SSLConnectionStatusSetVersion(net::SSL_CONNECTION_VERSION_TLS1_2, |
- &security_info.connection_status); |
- security_info.key_exchange_group = 29; // X25519 |
- |
- { |
- content::SecurityStyleExplanations explanations; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- content::SecurityStyleExplanation explanation; |
- ASSERT_TRUE(FindSecurityStyleExplanation( |
- explanations.secure_explanations, "Secure Connection", &explanation)); |
- EXPECT_EQ( |
- "The connection to this site is encrypted and authenticated using a " |
- "strong protocol (TLS 1.2), a strong key exchange (ECDHE_RSA with " |
- "X25519), and a strong cipher (CHACHA20_POLY1305).", |
- explanation.description); |
- } |
- |
- // Some older cache entries may be missing the key exchange group, despite |
- // having a cipher which should supply one. |
- security_info.key_exchange_group = 0; |
- { |
- content::SecurityStyleExplanations explanations; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- content::SecurityStyleExplanation explanation; |
- ASSERT_TRUE(FindSecurityStyleExplanation( |
- explanations.secure_explanations, "Secure Connection", &explanation)); |
- EXPECT_EQ( |
- "The connection to this site is encrypted and authenticated using a " |
- "strong protocol (TLS 1.2), a strong key exchange (ECDHE_RSA), and a " |
- "strong cipher (CHACHA20_POLY1305).", |
- explanation.description); |
- } |
- |
- // TLS 1.3 ciphers use the key exchange group exclusively. |
- net::SSLConnectionStatusSetCipherSuite(0x1301 /* TLS_AES_128_GCM_SHA256 */, |
- &security_info.connection_status); |
- net::SSLConnectionStatusSetVersion(net::SSL_CONNECTION_VERSION_TLS1_3, |
- &security_info.connection_status); |
- security_info.key_exchange_group = 29; // X25519 |
- { |
- content::SecurityStyleExplanations explanations; |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- content::SecurityStyleExplanation explanation; |
- ASSERT_TRUE(FindSecurityStyleExplanation( |
- explanations.secure_explanations, "Secure Connection", &explanation)); |
- EXPECT_EQ( |
- "The connection to this site is encrypted and authenticated using a " |
- "strong protocol (TLS 1.3), a strong key exchange (X25519), and a " |
- "strong cipher (AES_128_GCM).", |
- explanation.description); |
- } |
-} |
- |
-// Tests that a security level of HTTP_SHOW_WARNING produces a |
-// content::SecurityStyle of UNAUTHENTICATED, with an explanation. |
-TEST(ChromeSecurityStateModelClientTest, HTTPWarning) { |
- security_state::SecurityStateModel::SecurityInfo security_info; |
- content::SecurityStyleExplanations explanations; |
- security_info.security_level = |
- security_state::SecurityStateModel::HTTP_SHOW_WARNING; |
- blink::WebSecurityStyle security_style = |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_EQ(blink::WebSecurityStyleUnauthenticated, security_style); |
- EXPECT_EQ(1u, explanations.unauthenticated_explanations.size()); |
-} |
- |
-// Tests that a security level of NONE when there is a password or |
-// credit card field on HTTP produces a content::SecurityStyle of |
-// UNAUTHENTICATED, with an info explanation. |
-TEST(ChromeSecurityStateModelClientTest, HTTPWarningInFuture) { |
- security_state::SecurityStateModel::SecurityInfo security_info; |
- content::SecurityStyleExplanations explanations; |
- security_info.security_level = security_state::SecurityStateModel::NONE; |
- security_info.displayed_private_user_data_input_on_http = true; |
- blink::WebSecurityStyle security_style = |
- ChromeSecurityStateModelClient::GetSecurityStyle(security_info, |
- &explanations); |
- EXPECT_EQ(blink::WebSecurityStyleUnauthenticated, security_style); |
- EXPECT_EQ(1u, explanations.info_explanations.size()); |
-} |
- |
-} // namespace |