1 // Copyright 2019 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/base/net_errors.h" 6 7 #include "testing/gtest/include/gtest/gtest.h" 8 9 namespace net { 10 11 namespace { 12 TEST(NetErrorsTest,IsCertificateError)13TEST(NetErrorsTest, IsCertificateError) { 14 // Positive tests. 15 EXPECT_TRUE(IsCertificateError(ERR_CERT_AUTHORITY_INVALID)); 16 EXPECT_TRUE(IsCertificateError(ERR_CERT_COMMON_NAME_INVALID)); 17 EXPECT_TRUE(IsCertificateError(ERR_CERT_CONTAINS_ERRORS)); 18 EXPECT_TRUE(IsCertificateError(ERR_CERT_DATE_INVALID)); 19 EXPECT_TRUE(IsCertificateError(ERR_CERTIFICATE_TRANSPARENCY_REQUIRED)); 20 EXPECT_TRUE(IsCertificateError(ERR_CERT_INVALID)); 21 EXPECT_TRUE(IsCertificateError(ERR_CERT_NAME_CONSTRAINT_VIOLATION)); 22 EXPECT_TRUE(IsCertificateError(ERR_CERT_NON_UNIQUE_NAME)); 23 EXPECT_TRUE(IsCertificateError(ERR_CERT_NO_REVOCATION_MECHANISM)); 24 EXPECT_TRUE(IsCertificateError(ERR_CERT_REVOKED)); 25 EXPECT_TRUE(IsCertificateError(ERR_CERT_SYMANTEC_LEGACY)); 26 EXPECT_TRUE(IsCertificateError(ERR_CERT_UNABLE_TO_CHECK_REVOCATION)); 27 EXPECT_TRUE(IsCertificateError(ERR_CERT_VALIDITY_TOO_LONG)); 28 EXPECT_TRUE(IsCertificateError(ERR_CERT_WEAK_KEY)); 29 EXPECT_TRUE(IsCertificateError(ERR_CERT_WEAK_SIGNATURE_ALGORITHM)); 30 EXPECT_TRUE(IsCertificateError(ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN)); 31 EXPECT_TRUE(IsCertificateError(ERR_CERT_KNOWN_INTERCEPTION_BLOCKED)); 32 33 // Negative tests. 34 EXPECT_FALSE(IsCertificateError(ERR_SSL_PROTOCOL_ERROR)); 35 EXPECT_FALSE(IsCertificateError(ERR_SSL_KEY_USAGE_INCOMPATIBLE)); 36 EXPECT_FALSE( 37 IsCertificateError(ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED)); 38 EXPECT_FALSE(IsCertificateError(ERR_QUIC_CERT_ROOT_NOT_KNOWN)); 39 EXPECT_FALSE(IsCertificateError(ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY)); 40 EXPECT_FALSE(IsCertificateError(ERR_FAILED)); 41 EXPECT_FALSE(IsCertificateError(OK)); 42 43 // Trigger a failure whenever ERR_CERT_END is changed, forcing developers to 44 // update this test. 45 EXPECT_EQ(ERR_CERT_END, -219) 46 << "It looks like you added a new certificate error code (" 47 << ErrorToString(ERR_CERT_END + 1) 48 << ").\n" 49 "\n" 50 "Because this code is between ERR_CERT_BEGIN and ERR_CERT_END, it " 51 "will be matched by net::IsCertificateError().\n" 52 "\n" 53 " (1) Please add a new test case to " 54 "NetErrorsTest.IsCertificateError()." 55 "\n" 56 " (2) Review the existing consumers of IsCertificateError(). " 57 "//content for instance has specialized handling of " 58 "IsCertificateError() that may need to be updated."; 59 } 60 TEST(NetErrorsTest,IsClientCertificateError)61TEST(NetErrorsTest, IsClientCertificateError) { 62 // Positive tests. 63 EXPECT_TRUE(IsClientCertificateError(ERR_BAD_SSL_CLIENT_AUTH_CERT)); 64 EXPECT_TRUE( 65 IsClientCertificateError(ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED)); 66 EXPECT_TRUE( 67 IsClientCertificateError(ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY)); 68 EXPECT_TRUE(IsClientCertificateError(ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED)); 69 EXPECT_TRUE( 70 IsClientCertificateError(ERR_SSL_CLIENT_AUTH_NO_COMMON_ALGORITHMS)); 71 72 // Negative tests. 73 EXPECT_FALSE(IsClientCertificateError(ERR_CERT_REVOKED)); 74 EXPECT_FALSE(IsClientCertificateError(ERR_SSL_PROTOCOL_ERROR)); 75 EXPECT_FALSE(IsClientCertificateError(ERR_CERT_WEAK_KEY)); 76 } 77 78 } // namespace 79 80 } // namespace net 81