summaryrefslogtreecommitdiff
path: root/nss/gtests/certdb_gtest/alg1485_unittest.cc
blob: a6bd40b4b3e11481268959f75b6de3c51c55a572 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* -*- 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;

class Alg1485Test : public ::testing::Test,
                    public ::testing::WithParamInterface<AVATestValues> {};

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 },
};

TEST_P(Alg1485Test, TryParsingAVAStrings) {
  const AVATestValues& param(GetParam());

  ScopedCERTName certName(CERT_AsciiToName(param.avaString.c_str()));
  ASSERT_EQ(certName != nullptr, param.expectedResult);
}

INSTANTIATE_TEST_CASE_P(ParseAVAStrings, Alg1485Test,
                        ::testing::ValuesIn(kAVATestStrings));
}