xref: /aosp_15_r20/external/cronet/net/base/net_errors_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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)13 TEST(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)61 TEST(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