| // Copyright 2019 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/base/net_errors.h" |
| |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace net { |
| |
| namespace { |
| |
| TEST(NetErrorsTest, IsCertificateError) { |
| // Positive tests. |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_AUTHORITY_INVALID)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_COMMON_NAME_INVALID)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_CONTAINS_ERRORS)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_DATE_INVALID)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERTIFICATE_TRANSPARENCY_REQUIRED)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_INVALID)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_NAME_CONSTRAINT_VIOLATION)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_NON_UNIQUE_NAME)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_NO_REVOCATION_MECHANISM)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_REVOKED)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_SYMANTEC_LEGACY)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_UNABLE_TO_CHECK_REVOCATION)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_VALIDITY_TOO_LONG)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_WEAK_KEY)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_WEAK_SIGNATURE_ALGORITHM)); |
| EXPECT_TRUE(IsCertificateError(ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN)); |
| EXPECT_TRUE(IsCertificateError(ERR_CERT_KNOWN_INTERCEPTION_BLOCKED)); |
| |
| // Negative tests. |
| EXPECT_FALSE(IsCertificateError(ERR_SSL_PROTOCOL_ERROR)); |
| EXPECT_FALSE(IsCertificateError(ERR_SSL_KEY_USAGE_INCOMPATIBLE)); |
| EXPECT_FALSE( |
| IsCertificateError(ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED)); |
| EXPECT_FALSE(IsCertificateError(ERR_QUIC_CERT_ROOT_NOT_KNOWN)); |
| EXPECT_FALSE(IsCertificateError(ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY)); |
| EXPECT_FALSE(IsCertificateError(ERR_FAILED)); |
| EXPECT_FALSE(IsCertificateError(OK)); |
| |
| // Trigger a failure whenever ERR_CERT_END is changed, forcing developers to |
| // update this test. |
| EXPECT_EQ(ERR_CERT_END, -219) |
| << "It looks like you added a new certificate error code (" |
| << ErrorToString(ERR_CERT_END + 1) |
| << ").\n" |
| "\n" |
| "Because this code is between ERR_CERT_BEGIN and ERR_CERT_END, it " |
| "will be matched by net::IsCertificateError().\n" |
| "\n" |
| " (1) Please add a new test case to " |
| "NetErrorsTest.IsCertificateError()." |
| "\n" |
| " (2) Review the existing consumers of IsCertificateError(). " |
| "//content for instance has specialized handling of " |
| "IsCertificateError() that may need to be updated."; |
| } |
| |
| TEST(NetErrorsTest, IsClientCertificateError) { |
| // Positive tests. |
| EXPECT_TRUE(IsClientCertificateError(ERR_BAD_SSL_CLIENT_AUTH_CERT)); |
| EXPECT_TRUE( |
| IsClientCertificateError(ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED)); |
| EXPECT_TRUE( |
| IsClientCertificateError(ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY)); |
| EXPECT_TRUE(IsClientCertificateError(ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED)); |
| EXPECT_TRUE( |
| IsClientCertificateError(ERR_SSL_CLIENT_AUTH_NO_COMMON_ALGORITHMS)); |
| |
| // Negative tests. |
| EXPECT_FALSE(IsClientCertificateError(ERR_CERT_REVOKED)); |
| EXPECT_FALSE(IsClientCertificateError(ERR_SSL_PROTOCOL_ERROR)); |
| EXPECT_FALSE(IsClientCertificateError(ERR_CERT_WEAK_KEY)); |
| } |
| |
| } // namespace |
| |
| } // namespace net |