blob: 5d9e2f74bc383ca7625b445bcbfc3bb0fe8c8e95 [file] [log] [blame]
Eric Romane28b60272019-10-09 19:22:171// Copyright 2019 The Chromium Authors. All rights reserved.
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
9namespace net {
10
11namespace {
12
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
32 // Negative tests.
33 EXPECT_FALSE(IsCertificateError(ERR_SSL_PROTOCOL_ERROR));
34 EXPECT_FALSE(IsCertificateError(ERR_SSL_KEY_USAGE_INCOMPATIBLE));
35 EXPECT_FALSE(
36 IsCertificateError(ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED));
37 EXPECT_FALSE(IsCertificateError(ERR_QUIC_CERT_ROOT_NOT_KNOWN));
38 EXPECT_FALSE(IsCertificateError(ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY));
39 EXPECT_FALSE(IsCertificateError(ERR_FAILED));
40 EXPECT_FALSE(IsCertificateError(OK));
41
42 // Trigger a failure whenever ERR_CERT_END is changed, forcing developers to
43 // update this test.
44 EXPECT_EQ(ERR_CERT_END, -217)
45 << "It looks like you added a new certificate error code ("
46 << ErrorToString(ERR_CERT_END + 1)
47 << ").\n"
48 "\n"
49 "Because this code is between ERR_CERT_BEGIN and ERR_CERT_END, it "
50 "will be matched by net::IsCertificateError().\n"
51 "\n"
52 " (1) Please add a new test case to "
53 "NetErrorsTest.IsCertificateError()."
54 "\n"
55 " (2) Review the existing consumers of IsCertificateError(). "
56 "//content for instance has specialized handling of "
57 "IsCertificateError() that may need to be updated.";
58}
59
60TEST(NetErrorsTest, IsClientCertificateError) {
61 // Positive tests.
62 EXPECT_TRUE(IsClientCertificateError(ERR_BAD_SSL_CLIENT_AUTH_CERT));
63 EXPECT_TRUE(
64 IsClientCertificateError(ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED));
65 EXPECT_TRUE(
66 IsClientCertificateError(ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY));
67 EXPECT_TRUE(IsClientCertificateError(ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED));
68 EXPECT_TRUE(
69 IsClientCertificateError(ERR_SSL_CLIENT_AUTH_NO_COMMON_ALGORITHMS));
70
71 // Negative tests.
72 EXPECT_FALSE(IsClientCertificateError(ERR_CERT_REVOKED));
73 EXPECT_FALSE(IsClientCertificateError(ERR_SSL_PROTOCOL_ERROR));
74 EXPECT_FALSE(IsClientCertificateError(ERR_CERT_WEAK_KEY));
75}
76
77} // namespace
78
79} // namespace net