81 lines
3.3 KiB
C++
81 lines
3.3 KiB
C++
// 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
|