Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: net/cert/expect_staple_report_unittest.cc

Issue 2040513003: Implement Expect-Staple (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use new der::GeneralizedTime operators Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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/cert/expect_staple_report.h"
6
7 #include "base/macros.h"
8 #include "net/base/host_port_pair.h"
9 #include "net/cert/internal/test_helpers.h"
10
11 namespace net {
12
13 namespace {
14
15 const char kOCSPPathPrefix[] = "net/data/parse_ocsp_unittest/";
16
17 const base::TimeDelta kOCSPResponseMaxAge = base::TimeDelta::FromDays(3650);
Ryan Sleevi 2016/06/17 16:19:56 This also makes me uncomfortable, FWIW - having ca
dadrian 2016/06/17 17:26:55 It's primarily like that for testing, although I s
18
19 struct OCSPTest {
20 std::string response;
Ryan Sleevi 2016/06/17 16:19:56 include what you use (IWYU): #include <string>
21 scoped_refptr<X509Certificate> certificate;
Ryan Sleevi 2016/06/17 16:19:56 IWYU: #include "base/memory/ref_counted.h" #includ
22 };
23
24 bool LoadOCSPFromFile(std::string file_name, OCSPTest* ocsp) {
25 std::string ca_data;
26 std::string cert_data;
27 const PemBlockMapping mappings[] = {
28 {"OCSP RESPONSE", &ocsp->response},
29 {"CA CERTIFICATE", &ca_data},
Ryan Sleevi 2016/06/17 16:19:56 Why do you do this, when ca_data is unused?
dadrian 2016/06/17 17:26:55 I'm not sure if the test files parse otherwise, si
30 {"CERTIFICATE", &cert_data},
31 };
32 std::string full_path = std::string(kOCSPPathPrefix) + file_name;
33 if (!ReadTestDataFromPemFile(full_path, mappings))
Ryan Sleevi 2016/06/17 16:19:56 API: ReadTestDataFromPemFile is designed around a
34 return false;
35
36 // Parse the server certificate
37 CertificateList server_cert_list =
38 X509Certificate::CreateCertificateListFromBytes(
39 cert_data.data(), cert_data.size(),
40 X509Certificate::FORMAT_SINGLE_CERTIFICATE);
41 ocsp->certificate = server_cert_list[0];
42 return true;
43 }
44
45 } // namespace
46
47 class ExpectStapleReportTest : public testing::Test {
48 public:
49 ExpectStapleReportTest() {}
50
51 protected:
52 void SetUp() override {
Ryan Sleevi 2016/06/17 16:19:56 https://github.com/google/googletest/blob/master/g
53 // Thu Jun 16 11:29:38 PDT 2016
54 verify_time_ = base::Time::FromDoubleT(1466101795.0);
Ryan Sleevi 2016/06/16 21:49:29 Suggestion: base::Time::UnixEpoch() + base::TimeDe
55 }
56
57 std::unique_ptr<ExpectStapleReport> MakeReport(const OCSPTest& ocsp) {
58 std::unique_ptr<ExpectStapleReport> report =
59 ExpectStapleReport::FromRawOCSPResponse(ocsp.response, verify_time_,
60 kOCSPResponseMaxAge,
61 *ocsp.certificate);
62 return report;
63 }
64
65 base::Time verify_time_;
66
67 private:
68 DISALLOW_COPY_AND_ASSIGN(ExpectStapleReportTest);
69 };
70
71 TEST_F(ExpectStapleReportTest, Valid) {
72 OCSPTest ocsp;
73 ASSERT_TRUE(LoadOCSPFromFile("good_response.pem", &ocsp));
74 auto report = MakeReport(ocsp);
Ryan Sleevi 2016/06/17 16:19:56 This is not an allowed usage of auto 1) Return ty
dadrian 2016/06/17 17:26:55 This was me being lazy when I was getting the test
75 ASSERT_TRUE(report);
76 EXPECT_EQ(ExpectStapleReport::StapleError::OK, report->staple_error());
77 EXPECT_EQ(verify_time_, report->verify_time());
78 const auto& stapled_responses = report->stapled_responses();
Ryan Sleevi 2016/06/17 16:19:56 This is an OK auto fwiw :)
79 ASSERT_EQ(1u, stapled_responses.size());
80 EXPECT_TRUE(stapled_responses[0].is_date_valid);
81 EXPECT_TRUE(stapled_responses[0].is_correct_certificate);
82 EXPECT_EQ(OCSPCertStatus::Status::GOOD, stapled_responses[0].status);
83 };
84
85 TEST_F(ExpectStapleReportTest, ValidWithExtension) {
86 OCSPTest ocsp;
87 ASSERT_TRUE(LoadOCSPFromFile("has_extension.pem", &ocsp));
88 auto report = MakeReport(ocsp);
89 ASSERT_TRUE(report);
90 EXPECT_EQ(ExpectStapleReport::StapleError::OK, report->staple_error());
91 EXPECT_EQ(verify_time_, report->verify_time());
92 };
93
94 TEST_F(ExpectStapleReportTest, MissingSingleResponse) {
95 OCSPTest ocsp;
96 ASSERT_TRUE(LoadOCSPFromFile("missing_response.pem", &ocsp));
97 auto report = MakeReport(ocsp);
98 ASSERT_TRUE(report);
99 EXPECT_EQ(ExpectStapleReport::StapleError::NO_MATCHING_RESPONSE,
100 report->staple_error());
101 EXPECT_EQ(verify_time_, report->verify_time());
102 const auto& stapled_responses = report->stapled_responses();
103 EXPECT_EQ(0u, stapled_responses.size());
104 };
105
106 TEST_F(ExpectStapleReportTest, MultipleResponse) {
107 OCSPTest ocsp;
108 ASSERT_TRUE(LoadOCSPFromFile("multiple_response.pem", &ocsp));
109 auto report = MakeReport(ocsp);
110 ASSERT_TRUE(report);
111 EXPECT_EQ(ExpectStapleReport::StapleError::OK, report->staple_error());
112 EXPECT_EQ(verify_time_, report->verify_time());
113 const auto& stapled_responses = report->stapled_responses();
114 ASSERT_EQ(2u, stapled_responses.size());
115 for (const auto& staple : stapled_responses) {
116 EXPECT_TRUE(staple.is_date_valid);
117 EXPECT_TRUE(staple.is_correct_certificate);
118 }
119 EXPECT_EQ(OCSPCertStatus::Status::GOOD, stapled_responses[0].status);
120 EXPECT_EQ(OCSPCertStatus::Status::UNKNOWN, stapled_responses[1].status);
121 };
122
123 TEST_F(ExpectStapleReportTest, RevokeResponse) {
124 OCSPTest ocsp;
125 ASSERT_TRUE(LoadOCSPFromFile("revoke_response.pem", &ocsp));
126 auto report = MakeReport(ocsp);
127 ASSERT_TRUE(report);
128 EXPECT_EQ(ExpectStapleReport::StapleError::NO_MATCHING_RESPONSE,
129 report->staple_error());
130 EXPECT_EQ(verify_time_, report->verify_time());
131 const auto& stapled_responses = report->stapled_responses();
132 ASSERT_EQ(1u, stapled_responses.size());
133 EXPECT_TRUE(stapled_responses[0].is_date_valid);
134 EXPECT_TRUE(stapled_responses[0].is_correct_certificate);
135 EXPECT_EQ(OCSPCertStatus::Status::REVOKED, stapled_responses[0].status);
136 };
137
138 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698