aboutsummaryrefslogtreecommitdiff
path: root/cast
diff options
context:
space:
mode:
authorbtolsch <btolsch@chromium.org>2020-04-03 01:49:40 -0700
committerCommit Bot <commit-bot@chromium.org>2020-04-03 09:26:13 +0000
commit31665eb818aaefbb1ad706b0f2a99846125d1321 (patch)
treeb0b563ca5d7e0ce93777d6488c7891bb87098316 /cast
parentf954babacc6cd535d426d577d1fa0d0932539cb3 (diff)
downloadopenscreen-31665eb818aaefbb1ad706b0f2a99846125d1321.tar.gz
Get test data path by exe path
This change makes tests that use runtime data derive the final path relative to the source root, which is determined from the executable path. This is hard-coded to two directories up from the executable but is consistent with Chromium's behavior. Bug: openscreen:104 Change-Id: I72475cc5dcdefb782ece6d4f8b75907dbe49e22e Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2125368 Commit-Queue: Brandon Tolsch <btolsch@chromium.org> Reviewed-by: Max Yakimakha <yakimakha@chromium.org>
Diffstat (limited to 'cast')
-rw-r--r--cast/common/BUILD.gn3
-rw-r--r--cast/common/certificate/cast_cert_validator_unittest.cc118
-rw-r--r--cast/common/certificate/cast_crl_unittest.cc12
-rw-r--r--cast/receiver/BUILD.gn3
-rw-r--r--cast/receiver/channel/device_auth_namespace_handler_unittest.cc31
-rw-r--r--cast/sender/channel/cast_auth_util_unittest.cc22
-rw-r--r--cast/test/BUILD.gn2
-rw-r--r--cast/test/device_auth_test.cc52
-rw-r--r--cast/test/make_crl_tests.cc34
9 files changed, 166 insertions, 111 deletions
diff --git a/cast/common/BUILD.gn b/cast/common/BUILD.gn
index f753198c..ca3d763c 100644
--- a/cast/common/BUILD.gn
+++ b/cast/common/BUILD.gn
@@ -140,6 +140,7 @@ source_set("unittests") {
":public",
":test_helpers",
"../../platform",
+ "../../platform:test",
"../../testing/util",
"../../third_party/boringssl",
"../../third_party/googletest:gmock",
@@ -150,7 +151,7 @@ source_set("unittests") {
]
data = [
- "../../test/data/cast/common/certificate",
+ "../../test/data/cast/common/certificate/",
]
}
diff --git a/cast/common/certificate/cast_cert_validator_unittest.cc b/cast/common/certificate/cast_cert_validator_unittest.cc
index 41700a50..f7e21d84 100644
--- a/cast/common/certificate/cast_cert_validator_unittest.cc
+++ b/cast/common/certificate/cast_cert_validator_unittest.cc
@@ -11,6 +11,7 @@
#include "cast/common/certificate/testing/test_helpers.h"
#include "gtest/gtest.h"
#include "openssl/pem.h"
+#include "platform/test/paths.h"
namespace openscreen {
namespace cast {
@@ -153,7 +154,11 @@ DateTime MarchFirst2037() {
return CreateDate(2037, 3, 1);
}
-#define TEST_DATA_PREFIX OPENSCREEN_TEST_DATA_DIR "/cast/common/certificate/"
+const std::string& GetSpecificTestDataPath() {
+ static std::string data_path =
+ GetTestDataPath() + "/cast/common/certificate/";
+ return data_path;
+}
// Tests verifying a valid certificate chain of length 2:
//
@@ -163,11 +168,12 @@ DateTime MarchFirst2037() {
// Chains to trust anchor:
// Eureka Root CA (built-in trust store)
TEST(VerifyCastDeviceCertTest, ChromecastGen1) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "2ZZBG9 FA8FCA3EF91A",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/chromecast_gen1.pem", AprilFirst2016(),
+ data_path + "certificates/chromecast_gen1.pem", AprilFirst2016(),
TRUST_STORE_BUILTIN,
- TEST_DATA_PREFIX "signeddata/2ZZBG9_FA8FCA3EF91A.pem");
+ data_path + "signeddata/2ZZBG9_FA8FCA3EF91A.pem");
}
// Tests verifying a valid certificate chain of length 2:
@@ -178,11 +184,12 @@ TEST(VerifyCastDeviceCertTest, ChromecastGen1) {
// Chains to trust anchor:
// Cast Root CA (built-in trust store)
TEST(VerifyCastDeviceCertTest, ChromecastGen1Reissue) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "2ZZBG9 FA8FCA3EF91A",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/chromecast_gen1_reissue.pem",
+ data_path + "certificates/chromecast_gen1_reissue.pem",
AprilFirst2016(), TRUST_STORE_BUILTIN,
- TEST_DATA_PREFIX "signeddata/2ZZBG9_FA8FCA3EF91A.pem");
+ data_path + "signeddata/2ZZBG9_FA8FCA3EF91A.pem");
}
// Tests verifying a valid certificate chain of length 2:
@@ -193,9 +200,10 @@ TEST(VerifyCastDeviceCertTest, ChromecastGen1Reissue) {
// Chains to trust anchor:
// Cast Root CA (built-in trust store)
TEST(VerifyCastDeviceCertTest, ChromecastGen2) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "3ZZAK6 FA8FCA3F0D35",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/chromecast_gen2.pem", AprilFirst2016(),
+ data_path + "certificates/chromecast_gen2.pem", AprilFirst2016(),
TRUST_STORE_BUILTIN, "");
}
@@ -208,9 +216,10 @@ TEST(VerifyCastDeviceCertTest, ChromecastGen2) {
// Chains to trust anchor:
// Cast Root CA (built-in trust store)
TEST(VerifyCastDeviceCertTest, Fugu) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "-6394818897508095075",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/fugu.pem", AprilFirst2016(),
+ data_path + "certificates/fugu.pem", AprilFirst2016(),
TRUST_STORE_BUILTIN, "");
}
@@ -223,9 +232,10 @@ TEST(VerifyCastDeviceCertTest, Fugu) {
//
// This is invalid because it does not chain to a trust anchor.
TEST(VerifyCastDeviceCertTest, Unchained) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kErrCertsVerifyGeneric, "",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/unchained.pem", AprilFirst2016(),
+ data_path + "certificates/unchained.pem", AprilFirst2016(),
TRUST_STORE_BUILTIN, "");
}
@@ -240,9 +250,10 @@ TEST(VerifyCastDeviceCertTest, Unchained) {
// trust anchors after all) it fails the test as it is not a *device
// certificate*.
TEST(VerifyCastDeviceCertTest, CastRootCa) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kErrCertsRestrictions, "",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/cast_root_ca.pem", AprilFirst2016(),
+ data_path + "certificates/cast_root_ca.pem", AprilFirst2016(),
TRUST_STORE_BUILTIN, "");
}
@@ -257,10 +268,11 @@ TEST(VerifyCastDeviceCertTest, CastRootCa) {
// This device certificate has a policy that means it is valid only for audio
// devices.
TEST(VerifyCastDeviceCertTest, ChromecastAudio) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "4ZZDZJ FA8FCA7EFE3C",
CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX "certificates/chromecast_audio.pem",
- AprilFirst2016(), TRUST_STORE_BUILTIN, "");
+ data_path + "certificates/chromecast_audio.pem", AprilFirst2016(),
+ TRUST_STORE_BUILTIN, "");
}
// Tests verifying a valid certificate chain of length 3:
@@ -275,9 +287,10 @@ TEST(VerifyCastDeviceCertTest, ChromecastAudio) {
// This device certificate has a policy that means it is valid only for audio
// devices.
TEST(VerifyCastDeviceCertTest, MtkAudioDev) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "MediaTek Audio Dev Test",
CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX "certificates/mtk_audio_dev.pem", JanuaryFirst2015(),
+ data_path + "certificates/mtk_audio_dev.pem", JanuaryFirst2015(),
TRUST_STORE_BUILTIN, "");
}
@@ -289,31 +302,33 @@ TEST(VerifyCastDeviceCertTest, MtkAudioDev) {
// Chains to trust anchor:
// Cast Root CA (built-in trust store)
TEST(VerifyCastDeviceCertTest, Vizio) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "9V0000VB FA8FCA784D01",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/vizio.pem", AprilFirst2016(),
+ data_path + "certificates/vizio.pem", AprilFirst2016(),
TRUST_STORE_BUILTIN, "");
}
// Tests verifying a valid certificate chain of length 2 using expired
// time points.
TEST(VerifyCastDeviceCertTest, ChromecastGen2InvalidTime) {
- const char* kCertsFile = TEST_DATA_PREFIX "certificates/chromecast_gen2.pem";
+ const std::string certs_file =
+ GetSpecificTestDataPath() + "certificates/chromecast_gen2.pem";
// Control test - certificate should be valid at some time otherwise
// this test is pointless.
RunTest(Error::Code::kNone, "3ZZAK6 FA8FCA3F0D35",
- CastDeviceCertPolicy::kUnrestricted, kCertsFile, AprilFirst2016(),
+ CastDeviceCertPolicy::kUnrestricted, certs_file, AprilFirst2016(),
TRUST_STORE_BUILTIN, "");
// Use a time before notBefore.
RunTest(Error::Code::kErrCertsDateInvalid, "",
- CastDeviceCertPolicy::kUnrestricted, kCertsFile, JanuaryFirst2015(),
+ CastDeviceCertPolicy::kUnrestricted, certs_file, JanuaryFirst2015(),
TRUST_STORE_BUILTIN, "");
// Use a time after notAfter.
RunTest(Error::Code::kErrCertsDateInvalid, "",
- CastDeviceCertPolicy::kUnrestricted, kCertsFile, MarchFirst2037(),
+ CastDeviceCertPolicy::kUnrestricted, certs_file, MarchFirst2037(),
TRUST_STORE_BUILTIN, "");
}
@@ -329,11 +344,12 @@ TEST(VerifyCastDeviceCertTest, ChromecastGen2InvalidTime) {
// This device certificate has a policy that means it is valid only for audio
// devices.
TEST(VerifyCastDeviceCertTest, AudioRefDevTestChain3) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Audio Reference Dev Test",
CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX "certificates/audio_ref_dev_test_chain_3.pem",
+ data_path + "certificates/audio_ref_dev_test_chain_3.pem",
AprilFirst2016(), TRUST_STORE_BUILTIN,
- TEST_DATA_PREFIX "signeddata/AudioReferenceDevTest.pem");
+ data_path + "signeddata/AudioReferenceDevTest.pem");
}
// TODO(btolsch): This won't work by default with boringssl, so do we want to
@@ -373,10 +389,11 @@ TEST(VerifyCastDeviceCertTest, IntermediateSerialNumberTooLong) {
// Chains to trust anchor:
// Expired CastRoot (provided by test data)
TEST(VerifyCastDeviceCertTest, ExpiredTrustAnchor) {
+ std::string data_path = GetSpecificTestDataPath();
// The root certificate is only valid in 2015, so validating with a time in
// 2016 means it is expired.
RunTest(Error::Code::kNone, "CastDevice", CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/expired_root.pem", AprilFirst2016(),
+ data_path + "certificates/expired_root.pem", AprilFirst2016(),
TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -394,10 +411,11 @@ TEST(VerifyCastDeviceCertTest, ExpiredTrustAnchor) {
// Chains to trust anchor:
// Root (provided by test data; has pathlen=1 constraint)
TEST(VerifyCastDeviceCertTest, ViolatesPathlenTrustAnchorConstraint) {
+ std::string data_path = GetSpecificTestDataPath();
// Test that the chain verification fails due to the pathlen constraint.
RunTest(Error::Code::kErrCertsPathlen, "Target",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/violates_root_pathlen_constraint.pem",
+ data_path + "certificates/violates_root_pathlen_constraint.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -407,9 +425,9 @@ TEST(VerifyCastDeviceCertTest, ViolatesPathlenTrustAnchorConstraint) {
// Intermediate: policies={anyPolicy}
// Leaf: policies={anyPolicy}
TEST(VerifyCastDeviceCertTest, PoliciesIcaAnypolicyLeafAnypolicy) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX
- "certificates/policies_ica_anypolicy_leaf_anypolicy.pem",
+ data_path + "certificates/policies_ica_anypolicy_leaf_anypolicy.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -419,9 +437,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaAnypolicyLeafAnypolicy) {
// Intermediate: policies={anyPolicy}
// Leaf: policies={audioOnly}
TEST(VerifyCastDeviceCertTest, PoliciesIcaAnypolicyLeafAudioonly) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX
- "certificates/policies_ica_anypolicy_leaf_audioonly.pem",
+ data_path + "certificates/policies_ica_anypolicy_leaf_audioonly.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -431,8 +449,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaAnypolicyLeafAudioonly) {
// Intermediate: policies={anyPolicy}
// Leaf: policies={foo}
TEST(VerifyCastDeviceCertTest, PoliciesIcaAnypolicyLeafFoo) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/policies_ica_anypolicy_leaf_foo.pem",
+ data_path + "certificates/policies_ica_anypolicy_leaf_foo.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -442,8 +461,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaAnypolicyLeafFoo) {
// Intermediate: policies={anyPolicy}
// Leaf: policies={}
TEST(VerifyCastDeviceCertTest, PoliciesIcaAnypolicyLeafNone) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/policies_ica_anypolicy_leaf_none.pem",
+ data_path + "certificates/policies_ica_anypolicy_leaf_none.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -453,9 +473,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaAnypolicyLeafNone) {
// Intermediate: policies={audioOnly}
// Leaf: policies={anyPolicy}
TEST(VerifyCastDeviceCertTest, PoliciesIcaAudioonlyLeafAnypolicy) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX
- "certificates/policies_ica_audioonly_leaf_anypolicy.pem",
+ data_path + "certificates/policies_ica_audioonly_leaf_anypolicy.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -465,9 +485,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaAudioonlyLeafAnypolicy) {
// Intermediate: policies={audioOnly}
// Leaf: policies={audioOnly}
TEST(VerifyCastDeviceCertTest, PoliciesIcaAudioonlyLeafAudioonly) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX
- "certificates/policies_ica_audioonly_leaf_audioonly.pem",
+ data_path + "certificates/policies_ica_audioonly_leaf_audioonly.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -477,8 +497,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaAudioonlyLeafAudioonly) {
// Intermediate: policies={audioOnly}
// Leaf: policies={foo}
TEST(VerifyCastDeviceCertTest, PoliciesIcaAudioonlyLeafFoo) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX "certificates/policies_ica_audioonly_leaf_foo.pem",
+ data_path + "certificates/policies_ica_audioonly_leaf_foo.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -488,8 +509,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaAudioonlyLeafFoo) {
// Intermediate: policies={audioOnly}
// Leaf: policies={}
TEST(VerifyCastDeviceCertTest, PoliciesIcaAudioonlyLeafNone) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX "certificates/policies_ica_audioonly_leaf_none.pem",
+ data_path + "certificates/policies_ica_audioonly_leaf_none.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -499,8 +521,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaAudioonlyLeafNone) {
// Intermediate: policies={}
// Leaf: policies={anyPolicy}
TEST(VerifyCastDeviceCertTest, PoliciesIcaNoneLeafAnypolicy) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/policies_ica_none_leaf_anypolicy.pem",
+ data_path + "certificates/policies_ica_none_leaf_anypolicy.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -510,8 +533,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaNoneLeafAnypolicy) {
// Intermediate: policies={}
// Leaf: policies={audioOnly}
TEST(VerifyCastDeviceCertTest, PoliciesIcaNoneLeafAudioonly) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kAudioOnly,
- TEST_DATA_PREFIX "certificates/policies_ica_none_leaf_audioonly.pem",
+ data_path + "certificates/policies_ica_none_leaf_audioonly.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -521,8 +545,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaNoneLeafAudioonly) {
// Intermediate: policies={}
// Leaf: policies={foo}
TEST(VerifyCastDeviceCertTest, PoliciesIcaNoneLeafFoo) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/policies_ica_none_leaf_foo.pem",
+ data_path + "certificates/policies_ica_none_leaf_foo.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -532,8 +557,9 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaNoneLeafFoo) {
// Intermediate: policies={}
// Leaf: policies={}
TEST(VerifyCastDeviceCertTest, PoliciesIcaNoneLeafNone) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Leaf", CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/policies_ica_none_leaf_none.pem",
+ data_path + "certificates/policies_ica_none_leaf_none.pem",
AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -541,29 +567,32 @@ TEST(VerifyCastDeviceCertTest, PoliciesIcaNoneLeafNone) {
// 1024-bit RSA key. Verification should fail since the target's key is
// too weak.
TEST(VerifyCastDeviceCertTest, DeviceCertHas1024BitRsaKey) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kErrCertsVerifyGeneric, "RSA 1024 Device Cert",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/rsa1024_device_cert.pem",
- AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE, "");
+ data_path + "certificates/rsa1024_device_cert.pem", AprilFirst2016(),
+ TRUST_STORE_FROM_TEST_FILE, "");
}
// Tests verifying a certificate chain where the leaf certificate has a
// 2048-bit RSA key, and then verifying signed data (both SHA1 and SHA256)
// for it.
TEST(VerifyCastDeviceCertTest, DeviceCertHas2048BitRsaKey) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "RSA 2048 Device Cert",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/rsa2048_device_cert.pem",
- AprilFirst2016(), TRUST_STORE_FROM_TEST_FILE,
- TEST_DATA_PREFIX "signeddata/rsa2048_device_cert_data.pem");
+ data_path + "certificates/rsa2048_device_cert.pem", AprilFirst2016(),
+ TRUST_STORE_FROM_TEST_FILE,
+ data_path + "signeddata/rsa2048_device_cert_data.pem");
}
// Tests verifying a certificate chain where an intermediate certificate has a
// nameConstraints extension but the leaf certificate is still permitted under
// these constraints.
TEST(VerifyCastDeviceCertTest, NameConstraintsObeyed) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kNone, "Device", CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/nc.pem", AprilFirst2020(),
+ data_path + "certificates/nc.pem", AprilFirst2020(),
TRUST_STORE_FROM_TEST_FILE, "");
}
@@ -571,9 +600,10 @@ TEST(VerifyCastDeviceCertTest, NameConstraintsObeyed) {
// nameConstraints extension and the leaf certificate is not permitted under
// these constraints.
TEST(VerifyCastDeviceCertTest, NameConstraintsViolated) {
+ std::string data_path = GetSpecificTestDataPath();
RunTest(Error::Code::kErrCertsVerifyGeneric, "Device",
CastDeviceCertPolicy::kUnrestricted,
- TEST_DATA_PREFIX "certificates/nc_fail.pem", AprilFirst2020(),
+ data_path + "certificates/nc_fail.pem", AprilFirst2020(),
TRUST_STORE_FROM_TEST_FILE, "");
}
diff --git a/cast/common/certificate/cast_crl_unittest.cc b/cast/common/certificate/cast_crl_unittest.cc
index 81c0030f..39e72724 100644
--- a/cast/common/certificate/cast_crl_unittest.cc
+++ b/cast/common/certificate/cast_crl_unittest.cc
@@ -9,6 +9,7 @@
#include "cast/common/certificate/proto/test_suite.pb.h"
#include "cast/common/certificate/testing/test_helpers.h"
#include "gtest/gtest.h"
+#include "platform/test/paths.h"
#include "testing/util/read_file.h"
#include "util/logging.h"
@@ -89,16 +90,19 @@ bool TestVerifyRevocation(Error::Code expected_result,
return expected_result == result.code();
}
-#define TEST_DATA_PREFIX OPENSCREEN_TEST_DATA_DIR "cast/common/certificate/"
+const std::string& GetSpecificTestDataPath() {
+ static std::string data_path = GetTestDataPath() + "cast/common/certificate/";
+ return data_path;
+}
bool RunTest(const DeviceCertTest& test_case) {
std::unique_ptr<TrustStore> crl_trust_store;
std::unique_ptr<TrustStore> cast_trust_store;
if (test_case.use_test_trust_anchors()) {
crl_trust_store = testing::CreateTrustStoreFromPemFile(
- TEST_DATA_PREFIX "certificates/cast_crl_test_root_ca.pem");
+ GetSpecificTestDataPath() + "certificates/cast_crl_test_root_ca.pem");
cast_trust_store = testing::CreateTrustStoreFromPemFile(
- TEST_DATA_PREFIX "certificates/cast_test_root_ca.pem");
+ GetSpecificTestDataPath() + "certificates/cast_test_root_ca.pem");
EXPECT_FALSE(crl_trust_store->certs.empty());
EXPECT_FALSE(cast_trust_store->certs.empty());
@@ -190,7 +194,7 @@ void RunTestSuite(const std::string& test_suite_file_name) {
}
TEST(CastCertificateTest, TestSuite1) {
- RunTestSuite(TEST_DATA_PREFIX "testsuite/testsuite1.pb");
+ RunTestSuite(GetSpecificTestDataPath() + "testsuite/testsuite1.pb");
}
} // namespace
diff --git a/cast/receiver/BUILD.gn b/cast/receiver/BUILD.gn
index f62bf78d..c6201dce 100644
--- a/cast/receiver/BUILD.gn
+++ b/cast/receiver/BUILD.gn
@@ -53,6 +53,7 @@ source_set("unittests") {
deps = [
":channel",
":test_helpers",
+ "../../platform:test",
"../../testing/util",
"../../third_party/googletest:gmock",
"../../third_party/googletest:gtest",
@@ -61,6 +62,6 @@ source_set("unittests") {
]
data = [
- "../../test/data/cast/receiver/channel",
+ "../../test/data/cast/receiver/channel/",
]
}
diff --git a/cast/receiver/channel/device_auth_namespace_handler_unittest.cc b/cast/receiver/channel/device_auth_namespace_handler_unittest.cc
index 698cbd54..bbd5f5fa 100644
--- a/cast/receiver/channel/device_auth_namespace_handler_unittest.cc
+++ b/cast/receiver/channel/device_auth_namespace_handler_unittest.cc
@@ -14,6 +14,7 @@
#include "cast/receiver/channel/testing/device_auth_test_helpers.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
+#include "platform/test/paths.h"
#include "testing/util/read_file.h"
namespace openscreen {
@@ -29,6 +30,11 @@ using ::testing::_;
using ::testing::ElementsAreArray;
using ::testing::Invoke;
+const std::string& GetSpecificTestDataPath() {
+ static std::string data_path = GetTestDataPath() + "cast/receiver/channel/";
+ return data_path;
+}
+
class DeviceAuthNamespaceHandlerTest : public ::testing::Test {
public:
void SetUp() override {
@@ -39,6 +45,7 @@ class DeviceAuthNamespaceHandlerTest : public ::testing::Test {
}
protected:
+ const std::string& data_path_{GetSpecificTestDataPath()};
FakeCastSocketPair fake_cast_socket_pair_;
MockSocketErrorHandler mock_error_handler_;
CastSocket* socket_;
@@ -49,8 +56,6 @@ class DeviceAuthNamespaceHandlerTest : public ::testing::Test {
DeviceAuthNamespaceHandler auth_handler_{&creds_};
};
-#define TEST_DATA_PREFIX OPENSCREEN_TEST_DATA_DIR "cast/receiver/channel/"
-
// The tests in this file use a pre-recorded AuthChallenge as input and a
// matching pre-recorded AuthResponse for verification. This is to make it
// easier to keep sender and receiver code separate, because the code that would
@@ -69,14 +74,14 @@ class DeviceAuthNamespaceHandlerTest : public ::testing::Test {
TEST_F(DeviceAuthNamespaceHandlerTest, AuthResponse) {
InitStaticCredentialsFromFiles(
- &creds_, nullptr, nullptr, TEST_DATA_PREFIX "device_key.pem",
- TEST_DATA_PREFIX "device_chain.pem", TEST_DATA_PREFIX "device_tls.pem");
+ &creds_, nullptr, nullptr, data_path_ + "device_key.pem",
+ data_path_ + "device_chain.pem", data_path_ + "device_tls.pem");
// Send an auth challenge. |auth_handler_| will automatically respond via
// |router_| and we will catch the result in |challenge_reply|.
CastMessage auth_challenge;
const std::string auth_challenge_string =
- ReadEntireFileToString(TEST_DATA_PREFIX "auth_challenge.pb");
+ ReadEntireFileToString(data_path_ + "auth_challenge.pb");
ASSERT_TRUE(auth_challenge.ParseFromString(auth_challenge_string));
CastMessage challenge_reply;
@@ -90,7 +95,7 @@ TEST_F(DeviceAuthNamespaceHandlerTest, AuthResponse) {
.ok());
const std::string auth_response_string =
- ReadEntireFileToString(TEST_DATA_PREFIX "auth_response.pb");
+ ReadEntireFileToString(data_path_ + "auth_response.pb");
AuthResponse expected_auth_response;
ASSERT_TRUE(expected_auth_response.ParseFromString(auth_response_string));
@@ -120,14 +125,14 @@ TEST_F(DeviceAuthNamespaceHandlerTest, AuthResponse) {
TEST_F(DeviceAuthNamespaceHandlerTest, BadNonce) {
InitStaticCredentialsFromFiles(
- &creds_, nullptr, nullptr, TEST_DATA_PREFIX "device_key.pem",
- TEST_DATA_PREFIX "device_chain.pem", TEST_DATA_PREFIX "device_tls.pem");
+ &creds_, nullptr, nullptr, data_path_ + "device_key.pem",
+ data_path_ + "device_chain.pem", data_path_ + "device_tls.pem");
// Send an auth challenge. |auth_handler_| will automatically respond via
// |router_| and we will catch the result in |challenge_reply|.
CastMessage auth_challenge;
const std::string auth_challenge_string =
- ReadEntireFileToString(TEST_DATA_PREFIX "auth_challenge.pb");
+ ReadEntireFileToString(data_path_ + "auth_challenge.pb");
ASSERT_TRUE(auth_challenge.ParseFromString(auth_challenge_string));
// Change the nonce to be different from what was used to record the correct
@@ -154,7 +159,7 @@ TEST_F(DeviceAuthNamespaceHandlerTest, BadNonce) {
.ok());
const std::string auth_response_string =
- ReadEntireFileToString(TEST_DATA_PREFIX "auth_response.pb");
+ ReadEntireFileToString(data_path_ + "auth_response.pb");
AuthResponse expected_auth_response;
ASSERT_TRUE(expected_auth_response.ParseFromString(auth_response_string));
@@ -173,14 +178,14 @@ TEST_F(DeviceAuthNamespaceHandlerTest, BadNonce) {
TEST_F(DeviceAuthNamespaceHandlerTest, UnsupportedSignatureAlgorithm) {
InitStaticCredentialsFromFiles(
- &creds_, nullptr, nullptr, TEST_DATA_PREFIX "device_key.pem",
- TEST_DATA_PREFIX "device_chain.pem", TEST_DATA_PREFIX "device_tls.pem");
+ &creds_, nullptr, nullptr, data_path_ + "device_key.pem",
+ data_path_ + "device_chain.pem", data_path_ + "device_tls.pem");
// Send an auth challenge. |auth_handler_| will automatically respond via
// |router_| and we will catch the result in |challenge_reply|.
CastMessage auth_challenge;
const std::string auth_challenge_string =
- ReadEntireFileToString(TEST_DATA_PREFIX "auth_challenge.pb");
+ ReadEntireFileToString(data_path_ + "auth_challenge.pb");
ASSERT_TRUE(auth_challenge.ParseFromString(auth_challenge_string));
// Change the signature algorithm an unsupported value.
diff --git a/cast/sender/channel/cast_auth_util_unittest.cc b/cast/sender/channel/cast_auth_util_unittest.cc
index 0b76c18b..51e4e338 100644
--- a/cast/sender/channel/cast_auth_util_unittest.cc
+++ b/cast/sender/channel/cast_auth_util_unittest.cc
@@ -13,6 +13,7 @@
#include "cast/common/channel/proto/cast_channel.pb.h"
#include "gtest/gtest.h"
#include "platform/api/time.h"
+#include "platform/test/paths.h"
#include "testing/util/read_file.h"
#include "util/logging.h"
@@ -107,7 +108,10 @@ bool ConvertTimeSeconds(const DateTime& time, uint64_t* seconds) {
return true;
}
-#define TEST_DATA_PREFIX OPENSCREEN_TEST_DATA_DIR "cast/common/certificate/"
+const std::string& GetSpecificTestDataPath() {
+ static std::string data_path = GetTestDataPath() + "cast/common/certificate/";
+ return data_path;
+}
class CastAuthUtilTest : public ::testing::Test {
public:
@@ -121,11 +125,11 @@ class CastAuthUtilTest : public ::testing::Test {
std::vector<uint8_t>* signed_data,
::cast::channel::HashAlgorithm digest_algorithm) {
std::vector<std::string> chain = testing::ReadCertificatesFromPemFile(
- TEST_DATA_PREFIX "certificates/chromecast_gen1.pem");
+ GetSpecificTestDataPath() + "certificates/chromecast_gen1.pem");
OSP_CHECK(!chain.empty());
testing::SignatureTestData signatures = testing::ReadSignatureTestData(
- TEST_DATA_PREFIX "signeddata/2ZZBG9_FA8FCA3EF91A.pem");
+ GetSpecificTestDataPath() + "signeddata/2ZZBG9_FA8FCA3EF91A.pem");
AuthResponse response;
@@ -161,6 +165,8 @@ class CastAuthUtilTest : public ::testing::Test {
static void MangleData(std::vector<uint8_t>* data) {
(*data)[0] = ~(*data)[0];
}
+
+ const std::string& data_path_{GetSpecificTestDataPath()};
};
// Note on expiration: VerifyCredentials() depends on the system clock. In
@@ -287,7 +293,7 @@ TEST_F(CastAuthUtilTest, VerifySenderNonceMissing) {
TEST_F(CastAuthUtilTest, VerifyTLSCertificateSuccess) {
std::vector<std::string> tls_cert_der = testing::ReadCertificatesFromPemFile(
- TEST_DATA_PREFIX "certificates/test_tls_cert.pem");
+ data_path_ + "certificates/test_tls_cert.pem");
std::string& der_cert = tls_cert_der[0];
const uint8_t* data = (const uint8_t*)der_cert.data();
X509* tls_cert = d2i_X509(nullptr, &data, der_cert.size());
@@ -305,7 +311,7 @@ TEST_F(CastAuthUtilTest, VerifyTLSCertificateSuccess) {
TEST_F(CastAuthUtilTest, VerifyTLSCertificateTooEarly) {
std::vector<std::string> tls_cert_der = testing::ReadCertificatesFromPemFile(
- TEST_DATA_PREFIX "certificates/test_tls_cert.pem");
+ data_path_ + "certificates/test_tls_cert.pem");
std::string& der_cert = tls_cert_der[0];
const uint8_t* data = (const uint8_t*)der_cert.data();
X509* tls_cert = d2i_X509(nullptr, &data, der_cert.size());
@@ -326,7 +332,7 @@ TEST_F(CastAuthUtilTest, VerifyTLSCertificateTooEarly) {
TEST_F(CastAuthUtilTest, VerifyTLSCertificateTooLate) {
std::vector<std::string> tls_cert_der = testing::ReadCertificatesFromPemFile(
- TEST_DATA_PREFIX "certificates/test_tls_cert.pem");
+ data_path_ + "certificates/test_tls_cert.pem");
std::string& der_cert = tls_cert_der[0];
const uint8_t* data = (const uint8_t*)der_cert.data();
X509* tls_cert = d2i_X509(nullptr, &data, der_cert.size());
@@ -390,9 +396,9 @@ bool RunTest(const DeviceCertTest& test_case) {
std::unique_ptr<TrustStore> cast_trust_store;
if (test_case.use_test_trust_anchors()) {
crl_trust_store = testing::CreateTrustStoreFromPemFile(
- TEST_DATA_PREFIX "certificates/cast_crl_test_root_ca.pem");
+ GetSpecificTestDataPath() + "certificates/cast_crl_test_root_ca.pem");
cast_trust_store = testing::CreateTrustStoreFromPemFile(
- TEST_DATA_PREFIX "certificates/cast_test_root_ca.pem");
+ GetSpecificTestDataPath() + "certificates/cast_test_root_ca.pem");
EXPECT_FALSE(crl_trust_store->certs.empty());
EXPECT_FALSE(cast_trust_store->certs.empty());
diff --git a/cast/test/BUILD.gn b/cast/test/BUILD.gn
index 83950d2f..67bae8ab 100644
--- a/cast/test/BUILD.gn
+++ b/cast/test/BUILD.gn
@@ -11,6 +11,7 @@ source_set("unittests") {
]
deps = [
+ "../../platform:test",
"../../testing/util",
"../../third_party/googletest:gmock",
"../../third_party/googletest:gtest",
@@ -52,6 +53,7 @@ if (is_posix && !build_with_chromium) {
]
deps = [
+ "../../platform:test",
"../../third_party/boringssl",
"../../util",
"../common:test_helpers",
diff --git a/cast/test/device_auth_test.cc b/cast/test/device_auth_test.cc
index cce3fd2b..e1259308 100644
--- a/cast/test/device_auth_test.cc
+++ b/cast/test/device_auth_test.cc
@@ -16,6 +16,7 @@
#include "cast/sender/channel/cast_auth_util.h"
#include "cast/sender/channel/message_util.h"
#include "gtest/gtest.h"
+#include "platform/test/paths.h"
#include "testing/util/read_file.h"
namespace openscreen {
@@ -28,7 +29,10 @@ using ::cast::channel::DeviceAuthMessage;
using ::testing::_;
using ::testing::Invoke;
-#define TEST_DATA_PREFIX OPENSCREEN_TEST_DATA_DIR "cast/receiver/channel/"
+const std::string& GetSpecificTestDataPath() {
+ static std::string data_path = GetTestDataPath() + "cast/receiver/channel/";
+ return data_path;
+}
class DeviceAuthTest : public ::testing::Test {
public:
@@ -46,10 +50,9 @@ class DeviceAuthTest : public ::testing::Test {
bool record_this_test = false) {
bssl::UniquePtr<X509> parsed_cert;
TrustStore fake_trust_store;
- InitStaticCredentialsFromFiles(&creds_, &parsed_cert, &fake_trust_store,
- TEST_DATA_PREFIX "device_key.pem",
- TEST_DATA_PREFIX "device_chain.pem",
- TEST_DATA_PREFIX "device_tls.pem");
+ InitStaticCredentialsFromFiles(
+ &creds_, &parsed_cert, &fake_trust_store, data_path_ + "device_key.pem",
+ data_path_ + "device_chain.pem", data_path_ + "device_tls.pem");
creds_.device_creds.serialized_crl = std::move(serialized_crl);
// Send an auth challenge. |auth_handler_| will automatically respond
@@ -68,7 +71,8 @@ class DeviceAuthTest : public ::testing::Test {
ASSERT_FALSE(auth_message.has_error());
ASSERT_TRUE(auth_challenge.SerializeToString(&output));
- FILE* fd = fopen(TEST_DATA_PREFIX "auth_challenge.pb", "wb");
+ const std::string pb_path = data_path_ + "auth_challenge.pb";
+ FILE* fd = fopen(pb_path.c_str(), "wb");
ASSERT_TRUE(fd);
ASSERT_EQ(fwrite(output.data(), 1, output.size(), fd), output.size());
fclose(fd);
@@ -95,7 +99,8 @@ class DeviceAuthTest : public ::testing::Test {
ASSERT_FALSE(auth_message.has_error());
ASSERT_TRUE(auth_message.response().SerializeToString(&output));
- FILE* fd = fopen(TEST_DATA_PREFIX "auth_response.pb", "wb");
+ const std::string pb_path = data_path_ + "auth_response.pb";
+ FILE* fd = fopen(pb_path.c_str(), "wb");
ASSERT_TRUE(fd);
ASSERT_EQ(fwrite(output.data(), 1, output.size(), fd), output.size());
fclose(fd);
@@ -114,6 +119,7 @@ class DeviceAuthTest : public ::testing::Test {
EXPECT_EQ(error_or_policy.is_value(), should_succeed);
}
+ const std::string& data_path_{GetSpecificTestDataPath()};
FakeCastSocketPair fake_cast_socket_pair_;
MockSocketErrorHandler mock_error_handler_;
CastSocket* socket_;
@@ -137,59 +143,59 @@ TEST_F(DeviceAuthTest, AuthIntegration) {
TEST_F(DeviceAuthTest, GoodCrl) {
std::unique_ptr<TrustStore> fake_crl_trust_store =
- testing::CreateTrustStoreFromPemFile(TEST_DATA_PREFIX "crl_root.pem");
- RunAuthTest(ReadEntireFileToString(TEST_DATA_PREFIX "good_crl.pb"),
+ testing::CreateTrustStoreFromPemFile(data_path_ + "crl_root.pem");
+ RunAuthTest(ReadEntireFileToString(data_path_ + "good_crl.pb"),
fake_crl_trust_store.get());
}
TEST_F(DeviceAuthTest, InvalidCrlTime) {
std::unique_ptr<TrustStore> fake_crl_trust_store =
- testing::CreateTrustStoreFromPemFile(TEST_DATA_PREFIX "crl_root.pem");
- RunAuthTest(ReadEntireFileToString(TEST_DATA_PREFIX "invalid_time_crl.pb"),
+ testing::CreateTrustStoreFromPemFile(data_path_ + "crl_root.pem");
+ RunAuthTest(ReadEntireFileToString(data_path_ + "invalid_time_crl.pb"),
fake_crl_trust_store.get(), false);
}
TEST_F(DeviceAuthTest, IssuerRevoked) {
std::unique_ptr<TrustStore> fake_crl_trust_store =
- testing::CreateTrustStoreFromPemFile(TEST_DATA_PREFIX "crl_root.pem");
- RunAuthTest(ReadEntireFileToString(TEST_DATA_PREFIX "issuer_revoked_crl.pb"),
+ testing::CreateTrustStoreFromPemFile(data_path_ + "crl_root.pem");
+ RunAuthTest(ReadEntireFileToString(data_path_ + "issuer_revoked_crl.pb"),
fake_crl_trust_store.get(), false);
}
TEST_F(DeviceAuthTest, DeviceRevoked) {
std::unique_ptr<TrustStore> fake_crl_trust_store =
- testing::CreateTrustStoreFromPemFile(TEST_DATA_PREFIX "crl_root.pem");
- RunAuthTest(ReadEntireFileToString(TEST_DATA_PREFIX "device_revoked_crl.pb"),
+ testing::CreateTrustStoreFromPemFile(data_path_ + "crl_root.pem");
+ RunAuthTest(ReadEntireFileToString(data_path_ + "device_revoked_crl.pb"),
fake_crl_trust_store.get(), false);
}
TEST_F(DeviceAuthTest, IssuerSerialRevoked) {
std::unique_ptr<TrustStore> fake_crl_trust_store =
- testing::CreateTrustStoreFromPemFile(TEST_DATA_PREFIX "crl_root.pem");
+ testing::CreateTrustStoreFromPemFile(data_path_ + "crl_root.pem");
RunAuthTest(
- ReadEntireFileToString(TEST_DATA_PREFIX "issuer_serial_revoked_crl.pb"),
+ ReadEntireFileToString(data_path_ + "issuer_serial_revoked_crl.pb"),
fake_crl_trust_store.get(), false);
}
TEST_F(DeviceAuthTest, DeviceSerialRevoked) {
std::unique_ptr<TrustStore> fake_crl_trust_store =
- testing::CreateTrustStoreFromPemFile(TEST_DATA_PREFIX "crl_root.pem");
+ testing::CreateTrustStoreFromPemFile(data_path_ + "crl_root.pem");
RunAuthTest(
- ReadEntireFileToString(TEST_DATA_PREFIX "device_serial_revoked_crl.pb"),
+ ReadEntireFileToString(data_path_ + "device_serial_revoked_crl.pb"),
fake_crl_trust_store.get(), false);
}
TEST_F(DeviceAuthTest, BadCrlSignerCert) {
std::unique_ptr<TrustStore> fake_crl_trust_store =
- testing::CreateTrustStoreFromPemFile(TEST_DATA_PREFIX "crl_root.pem");
- RunAuthTest(ReadEntireFileToString(TEST_DATA_PREFIX "bad_signer_cert_crl.pb"),
+ testing::CreateTrustStoreFromPemFile(data_path_ + "crl_root.pem");
+ RunAuthTest(ReadEntireFileToString(data_path_ + "bad_signer_cert_crl.pb"),
fake_crl_trust_store.get(), false);
}
TEST_F(DeviceAuthTest, BadCrlSignature) {
std::unique_ptr<TrustStore> fake_crl_trust_store =
- testing::CreateTrustStoreFromPemFile(TEST_DATA_PREFIX "crl_root.pem");
- RunAuthTest(ReadEntireFileToString(TEST_DATA_PREFIX "bad_signature_crl.pb"),
+ testing::CreateTrustStoreFromPemFile(data_path_ + "crl_root.pem");
+ RunAuthTest(ReadEntireFileToString(data_path_ + "bad_signature_crl.pb"),
fake_crl_trust_store.get(), false);
}
diff --git a/cast/test/make_crl_tests.cc b/cast/test/make_crl_tests.cc
index f086f844..2fddb883 100644
--- a/cast/test/make_crl_tests.cc
+++ b/cast/test/make_crl_tests.cc
@@ -8,13 +8,12 @@
#include "cast/common/certificate/cast_crl.h"
#include "cast/common/certificate/testing/test_helpers.h"
#include "cast/common/certificate/types.h"
+#include "platform/test/paths.h"
#include "util/crypto/certificate_utils.h"
#include "util/crypto/digest_sign.h"
#include "util/crypto/sha2.h"
#include "util/logging.h"
-#define TEST_DATA_PREFIX OPENSCREEN_TEST_DATA_DIR "cast/receiver/channel/"
-
namespace openscreen {
namespace cast {
namespace {
@@ -68,7 +67,7 @@ TbsCrl MakeTbsCrl(uint64_t not_before,
// Pack into a CrlBundle and sign with |crl_inter_key|. |crl_inter_der| must be
// directly signed by a Cast CRL root CA (possibly distinct from Cast root CA).
-void PackCrlIntoFile(const char* filename,
+void PackCrlIntoFile(const std::string& filename,
const TbsCrl& tbs_crl,
const std::string& crl_inter_der,
EVP_PKEY* crl_inter_key) {
@@ -87,24 +86,25 @@ void PackCrlIntoFile(const char* filename,
std::string output;
crl_bundle.SerializeToString(&output);
- int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ int fd = open(filename.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0644);
OSP_DCHECK_GE(fd, 0);
OSP_DCHECK_EQ(write(fd, output.data(), output.size()), (int)output.size());
close(fd);
}
int CastMain() {
+ const std::string data_path = GetTestDataPath() + "cast/receiver/channel/";
bssl::UniquePtr<EVP_PKEY> inter_key =
- testing::ReadKeyFromPemFile(TEST_DATA_PREFIX "inter_key.pem");
+ testing::ReadKeyFromPemFile(data_path + "inter_key.pem");
bssl::UniquePtr<EVP_PKEY> crl_inter_key =
- testing::ReadKeyFromPemFile(TEST_DATA_PREFIX "crl_inter_key.pem");
+ testing::ReadKeyFromPemFile(data_path + "crl_inter_key.pem");
OSP_DCHECK(inter_key);
OSP_DCHECK(crl_inter_key);
std::vector<std::string> chain_der =
- testing::ReadCertificatesFromPemFile(TEST_DATA_PREFIX "device_chain.pem");
+ testing::ReadCertificatesFromPemFile(data_path + "device_chain.pem");
std::vector<std::string> crl_inter_der =
- testing::ReadCertificatesFromPemFile(TEST_DATA_PREFIX "crl_inter.pem");
+ testing::ReadCertificatesFromPemFile(data_path + "crl_inter.pem");
OSP_DCHECK_EQ(chain_der.size(), 3u);
OSP_DCHECK_EQ(crl_inter_der.size(), 1u);
@@ -140,7 +140,7 @@ int CastMain() {
std::chrono::seconds not_after = DateTimeToSeconds(july2020);
TbsCrl tbs_crl = MakeTbsCrl(not_before.count(), not_after.count(),
device_cert.get(), inter_cert.get());
- PackCrlIntoFile(TEST_DATA_PREFIX "good_crl.pb", tbs_crl, crl_inter_der[0],
+ PackCrlIntoFile(data_path + "good_crl.pb", tbs_crl, crl_inter_der[0],
crl_inter_key.get());
// NOTE: CRL used outside its valid time range.
@@ -152,7 +152,7 @@ int CastMain() {
std::chrono::seconds not_after = DateTimeToSeconds(august2019);
TbsCrl tbs_crl = MakeTbsCrl(not_before.count(), not_after.count(),
device_cert.get(), inter_cert.get());
- PackCrlIntoFile(TEST_DATA_PREFIX "invalid_time_crl.pb", tbs_crl,
+ PackCrlIntoFile(data_path + "invalid_time_crl.pb", tbs_crl,
crl_inter_der[0], crl_inter_key.get());
}
@@ -161,7 +161,7 @@ int CastMain() {
TbsCrl tbs_crl = MakeTbsCrl(not_before.count(), not_after.count(),
device_cert.get(), inter_cert.get());
AddRevokedPublicKeyHash(&tbs_crl, inter_cert.get());
- PackCrlIntoFile(TEST_DATA_PREFIX "issuer_revoked_crl.pb", tbs_crl,
+ PackCrlIntoFile(data_path + "issuer_revoked_crl.pb", tbs_crl,
crl_inter_der[0], crl_inter_key.get());
}
@@ -170,7 +170,7 @@ int CastMain() {
TbsCrl tbs_crl = MakeTbsCrl(not_before.count(), not_after.count(),
device_cert.get(), inter_cert.get());
AddRevokedPublicKeyHash(&tbs_crl, device_cert.get());
- PackCrlIntoFile(TEST_DATA_PREFIX "device_revoked_crl.pb", tbs_crl,
+ PackCrlIntoFile(data_path + "device_revoked_crl.pb", tbs_crl,
crl_inter_der[0], crl_inter_key.get());
}
@@ -185,7 +185,7 @@ int CastMain() {
OSP_DCHECK_GE(serial, 10);
OSP_DCHECK_LE(serial, UINT64_MAX - 20);
AddSerialNumberRange(&tbs_crl, root_cert.get(), serial - 10, serial + 20);
- PackCrlIntoFile(TEST_DATA_PREFIX "issuer_serial_revoked_crl.pb", tbs_crl,
+ PackCrlIntoFile(data_path + "issuer_serial_revoked_crl.pb", tbs_crl,
crl_inter_der[0], crl_inter_key.get());
}
@@ -200,7 +200,7 @@ int CastMain() {
OSP_DCHECK_GE(serial, 10);
OSP_DCHECK_LE(serial, UINT64_MAX - 20);
AddSerialNumberRange(&tbs_crl, inter_cert.get(), serial - 10, serial + 20);
- PackCrlIntoFile(TEST_DATA_PREFIX "device_serial_revoked_crl.pb", tbs_crl,
+ PackCrlIntoFile(data_path + "device_serial_revoked_crl.pb", tbs_crl,
crl_inter_der[0], crl_inter_key.get());
}
@@ -208,15 +208,15 @@ int CastMain() {
{
TbsCrl tbs_crl = MakeTbsCrl(not_before.count(), not_after.count(),
device_cert.get(), inter_cert.get());
- PackCrlIntoFile(TEST_DATA_PREFIX "bad_signer_cert_crl.pb", tbs_crl,
- inter_der, inter_key.get());
+ PackCrlIntoFile(data_path + "bad_signer_cert_crl.pb", tbs_crl, inter_der,
+ inter_key.get());
}
// NOTE: Mismatched key for signature in Crl (just looks like bad signature).
{
TbsCrl tbs_crl = MakeTbsCrl(not_before.count(), not_after.count(),
device_cert.get(), inter_cert.get());
- PackCrlIntoFile(TEST_DATA_PREFIX "bad_signature_crl.pb", tbs_crl,
+ PackCrlIntoFile(data_path + "bad_signature_crl.pb", tbs_crl,
crl_inter_der[0], inter_key.get());
}