diff options
author | Moonchild <mcwerewolf@gmail.com> | 2018-02-06 12:02:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-06 12:02:47 +0100 |
commit | 389c60da5e01761f4a11ef539ffa26e4c1b17875 (patch) | |
tree | c6033924a0de9be1ab140596e305898c651bf57e /security/nss/gtests/certdb_gtest/alg1485_unittest.cc | |
parent | 7c9b585349c985df0cf6ace83da5dadba8b5c677 (diff) | |
parent | f017b749ea9f1586d2308504553d40bf4cc5439d (diff) | |
download | UXP-389c60da5e01761f4a11ef539ffa26e4c1b17875.tar UXP-389c60da5e01761f4a11ef539ffa26e4c1b17875.tar.gz UXP-389c60da5e01761f4a11ef539ffa26e4c1b17875.tar.lz UXP-389c60da5e01761f4a11ef539ffa26e4c1b17875.tar.xz UXP-389c60da5e01761f4a11ef539ffa26e4c1b17875.zip |
Merge pull request #13 from MoonchildProductions/ported-upstream
Ported upstream
Diffstat (limited to 'security/nss/gtests/certdb_gtest/alg1485_unittest.cc')
-rw-r--r-- | security/nss/gtests/certdb_gtest/alg1485_unittest.cc | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/security/nss/gtests/certdb_gtest/alg1485_unittest.cc b/security/nss/gtests/certdb_gtest/alg1485_unittest.cc new file mode 100644 index 000000000..b7c659414 --- /dev/null +++ b/security/nss/gtests/certdb_gtest/alg1485_unittest.cc @@ -0,0 +1,92 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include <stdint.h> + +#include "gtest/gtest.h" + +#include "nss.h" +#include "scoped_ptrs.h" + +namespace nss_test { + +typedef struct AVATestValuesStr { + std::string avaString; + bool expectedResult; +} AVATestValues; + +typedef struct AVACompareValuesStr { + std::string avaString1; + std::string avaString2; + SECComparison expectedResult; +} AVACompareValues; + +class Alg1485Test : public ::testing::Test {}; + +class Alg1485ParseTest : public Alg1485Test, + public ::testing::WithParamInterface<AVATestValues> {}; + +class Alg1485CompareTest + : public Alg1485Test, + public ::testing::WithParamInterface<AVACompareValues> {}; + +static const AVATestValues kAVATestStrings[] = { + {"CN=Marshall T. Rose, O=Dover Beach Consulting, L=Santa Clara, " + "ST=California, C=US", + true}, + {"C=HU,L=Budapest,O=Organization,CN=Example - Qualified Citizen " + "CA,2.5.4.97=VATHU-10", + true}, + {"C=HU,L=Budapest,O=Example,CN=Example - Qualified Citizen " + "CA,OID.2.5.4.97=VATHU-10", + true}, + {"CN=Somebody,L=Set,O=Up,C=US,1=The,2=Bomb", true}, + {"OID.2.5.4.6=😑", true}, + {"2.5.4.6=😑", true}, + {"OID.moocow=😑", false}, // OIDs must be numeric + {"3.2=bad", false}, // OIDs cannot be overly large; 3 is too big + {"256.257=bad", false}, // Still too big + {"YO=LO", false}, // Unknown Tag, 'YO' + {"CN=Tester,ZZ=Top", false}, // Unknown tag, 'ZZ' + // These tests are disabled pending Bug 1363416 + // { "01.02.03=Nope", false }, // Numbers not in minimal form + // { "000001.0000000001=👌", false }, + // { "CN=Somebody,L=Set,O=Up,C=US,01=The,02=Bomb", false }, +}; + +static const AVACompareValues kAVACompareStrings[] = { + {"CN=Max, O=Mozilla, ST=Berlin", "CN=Max, O=Mozilla, ST=Berlin, C=DE", + SECLessThan}, + {"CN=Max, O=Mozilla, ST=Berlin, C=DE", "CN=Max, O=Mozilla, ST=Berlin", + SECGreaterThan}, + {"CN=Max, O=Mozilla, ST=Berlin, C=DE", "CN=Max, O=Mozilla, ST=Berlin, C=DE", + SECEqual}, + {"CN=Max1, O=Mozilla, ST=Berlin, C=DE", + "CN=Max2, O=Mozilla, ST=Berlin, C=DE", SECLessThan}, + {"CN=Max, O=Mozilla, ST=Berlin, C=DE", "CN=Max, O=Mozilla, ST=Berlin, C=US", + SECLessThan}, +}; + +TEST_P(Alg1485ParseTest, TryParsingAVAStrings) { + const AVATestValues& param(GetParam()); + + ScopedCERTName certName(CERT_AsciiToName(param.avaString.c_str())); + ASSERT_EQ(certName != nullptr, param.expectedResult); +} + +TEST_P(Alg1485CompareTest, CompareAVAStrings) { + const AVACompareValues& param(GetParam()); + ScopedCERTName a(CERT_AsciiToName(param.avaString1.c_str())); + ScopedCERTName b(CERT_AsciiToName(param.avaString2.c_str())); + ASSERT_TRUE(a && b); + EXPECT_EQ(param.expectedResult, CERT_CompareName(a.get(), b.get())); +} + +INSTANTIATE_TEST_CASE_P(ParseAVAStrings, Alg1485ParseTest, + ::testing::ValuesIn(kAVATestStrings)); +INSTANTIATE_TEST_CASE_P(CompareAVAStrings, Alg1485CompareTest, + ::testing::ValuesIn(kAVACompareStrings)); +} |