123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/certificate_matching/certificate_principal_pattern.h"
- #include "base/values.h"
- #include "net/cert/x509_cert_types.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace certificate_matching {
- namespace {
- constexpr char kKeyCN[] = "CN";
- constexpr char kKeyL[] = "L";
- constexpr char kKeyO[] = "O";
- constexpr char kKeyOU[] = "OU";
- } // namespace
- TEST(CertificatePrincipalPatternTest, EmptyPattern) {
- CertificatePrincipalPattern pattern;
- EXPECT_TRUE(pattern.Empty());
- EXPECT_TRUE(pattern.Matches(net::CertPrincipal()));
- {
- net::CertPrincipal principal;
- principal.common_name = "CN";
- EXPECT_TRUE(pattern.Matches(principal));
- }
- }
- TEST(CertificatePrincipalPatternTest, MatchingOnlyCN) {
- CertificatePrincipalPattern pattern("CN" /* common_name */, "" /* locality */,
- "" /* organization */,
- "" /* organization_unit */);
- EXPECT_FALSE(pattern.Empty());
- EXPECT_FALSE(pattern.Matches(net::CertPrincipal()));
- {
- net::CertPrincipal principal;
- principal.common_name = "CN";
- EXPECT_TRUE(pattern.Matches(principal));
- }
- {
- net::CertPrincipal principal;
- principal.common_name = "CNIsWrong";
- EXPECT_FALSE(pattern.Matches(principal));
- }
- {
- net::CertPrincipal principal;
- principal.common_name = "CN";
- principal.locality_name = "NotRelevant";
- EXPECT_TRUE(pattern.Matches(principal));
- }
- }
- TEST(CertificatePrincipalPatternTest, MatchingEverything) {
- CertificatePrincipalPattern pattern(
- "CN" /* common_name */, "L" /* locality */, "O" /* organization */,
- "OU" /* organization_unit */);
- EXPECT_FALSE(pattern.Empty());
- // Matches an empty CertPrincipal
- EXPECT_FALSE(pattern.Matches(net::CertPrincipal()));
- net::CertPrincipal principal;
- principal.common_name = "CN";
- EXPECT_FALSE(pattern.Matches(principal));
- principal.locality_name = "L";
- EXPECT_FALSE(pattern.Matches(principal));
- principal.organization_names.push_back("O");
- EXPECT_FALSE(pattern.Matches(principal));
- principal.organization_unit_names.push_back("OU");
- EXPECT_TRUE(pattern.Matches(principal));
- // Additional entries in the lists don't cause matching to fail.
- principal.organization_names.insert(principal.organization_names.begin(),
- "Front");
- principal.organization_names.push_back("Back");
- principal.organization_unit_names.insert(
- principal.organization_unit_names.begin(), "Front");
- principal.organization_unit_names.push_back("Back");
- EXPECT_TRUE(pattern.Matches(principal));
- }
- TEST(CertificatePrincipalPatternTest, ParseFromNullptr) {
- CertificatePrincipalPattern pattern =
- CertificatePrincipalPattern::ParseFromOptionalDict(nullptr, kKeyCN, kKeyL,
- kKeyO, kKeyOU);
- EXPECT_TRUE(pattern.Empty());
- }
- TEST(CertificatePrincipalPatternTest, ParseFromEmptyDict) {
- base::Value::Dict dict_value;
- CertificatePrincipalPattern pattern =
- CertificatePrincipalPattern::ParseFromOptionalDict(&dict_value, kKeyCN,
- kKeyL, kKeyO, kKeyOU);
- EXPECT_TRUE(pattern.Empty());
- }
- TEST(CertificatePrincipalPatternTest, Parse) {
- base::Value::Dict dict_value;
- dict_value.Set(kKeyCN, "ValueCN");
- dict_value.Set(kKeyL, "ValueL");
- dict_value.Set(kKeyO, "ValueO");
- dict_value.Set(kKeyOU, "ValueOU");
- CertificatePrincipalPattern pattern =
- CertificatePrincipalPattern::ParseFromOptionalDict(&dict_value, kKeyCN,
- kKeyL, kKeyO, kKeyOU);
- EXPECT_FALSE(pattern.Empty());
- EXPECT_EQ("ValueCN", pattern.common_name());
- EXPECT_EQ("ValueL", pattern.locality());
- EXPECT_EQ("ValueO", pattern.organization());
- EXPECT_EQ("ValueOU", pattern.organization_unit());
- }
- } // namespace certificate_matching
|