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

Unified Diff: chrome/browser/net/transport_security_persister_unittest.cc

Issue 59693008: Give mojo_shell a TransportSecurityPersister (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sprinkle some NET_EXPORT Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/net/transport_security_persister.cc ('k') | chrome/browser/profiles/profile_io_data.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/transport_security_persister_unittest.cc
diff --git a/chrome/browser/net/transport_security_persister_unittest.cc b/chrome/browser/net/transport_security_persister_unittest.cc
deleted file mode 100644
index f13577b053a0856c227bd7e0df89bda5292b0a4e..0000000000000000000000000000000000000000
--- a/chrome/browser/net/transport_security_persister_unittest.cc
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright (c) 2012 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 "chrome/browser/net/transport_security_persister.h"
-
-#include <map>
-#include <string>
-#include <vector>
-
-#include "base/file_util.h"
-#include "base/files/file_path.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/message_loop/message_loop.h"
-#include "net/http/transport_security_state.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using net::TransportSecurityState;
-
-class TransportSecurityPersisterTest : public testing::Test {
- public:
- TransportSecurityPersisterTest()
- : message_loop_(base::MessageLoop::TYPE_IO) {
- }
-
- virtual ~TransportSecurityPersisterTest() {
- message_loop_.RunUntilIdle();
- }
-
- virtual void SetUp() OVERRIDE {
- ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
- persister_.reset(new TransportSecurityPersister(
- &state_, temp_dir_.path(), message_loop_.message_loop_proxy(), false));
- }
-
- protected:
- // Ordering is important here. If member variables are not destroyed in the
- // right order, then DCHECKs will fail all over the place.
- base::MessageLoop message_loop_;
-
- base::ScopedTempDir temp_dir_;
- TransportSecurityState state_;
- scoped_ptr<TransportSecurityPersister> persister_;
-};
-
-TEST_F(TransportSecurityPersisterTest, SerializeData1) {
- std::string output;
- bool dirty;
-
- EXPECT_TRUE(persister_->SerializeData(&output));
- EXPECT_TRUE(persister_->LoadEntries(output, &dirty));
- EXPECT_FALSE(dirty);
-}
-
-TEST_F(TransportSecurityPersisterTest, SerializeData2) {
- TransportSecurityState::DomainState domain_state;
- const base::Time current_time(base::Time::Now());
- const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000);
- static const char kYahooDomain[] = "yahoo.com";
-
- EXPECT_FALSE(state_.GetDomainState(kYahooDomain, true, &domain_state));
-
- bool include_subdomains = true;
- state_.AddHSTS(kYahooDomain, expiry, include_subdomains);
-
- std::string output;
- bool dirty;
- EXPECT_TRUE(persister_->SerializeData(&output));
- EXPECT_TRUE(persister_->LoadEntries(output, &dirty));
-
- EXPECT_TRUE(state_.GetDomainState(kYahooDomain, true, &domain_state));
- EXPECT_EQ(domain_state.upgrade_mode,
- TransportSecurityState::DomainState::MODE_FORCE_HTTPS);
- EXPECT_TRUE(state_.GetDomainState("foo.yahoo.com", true, &domain_state));
- EXPECT_EQ(domain_state.upgrade_mode,
- TransportSecurityState::DomainState::MODE_FORCE_HTTPS);
- EXPECT_TRUE(state_.GetDomainState("foo.bar.yahoo.com", true, &domain_state));
- EXPECT_EQ(domain_state.upgrade_mode,
- TransportSecurityState::DomainState::MODE_FORCE_HTTPS);
- EXPECT_TRUE(state_.GetDomainState("foo.bar.baz.yahoo.com", true,
- &domain_state));
- EXPECT_EQ(domain_state.upgrade_mode,
- TransportSecurityState::DomainState::MODE_FORCE_HTTPS);
- EXPECT_FALSE(state_.GetDomainState("com", true, &domain_state));
-}
-
-TEST_F(TransportSecurityPersisterTest, SerializeData3) {
- // Add an entry.
- net::HashValue fp1(net::HASH_VALUE_SHA1);
- memset(fp1.data(), 0, fp1.size());
- net::HashValue fp2(net::HASH_VALUE_SHA1);
- memset(fp2.data(), 1, fp2.size());
- base::Time expiry =
- base::Time::Now() + base::TimeDelta::FromSeconds(1000);
- net::HashValueVector dynamic_spki_hashes;
- dynamic_spki_hashes.push_back(fp1);
- dynamic_spki_hashes.push_back(fp2);
- bool include_subdomains = false;
- state_.AddHSTS("www.example.com", expiry, include_subdomains);
- state_.AddHPKP("www.example.com", expiry, include_subdomains,
- dynamic_spki_hashes);
-
- // Add another entry.
- memset(fp1.data(), 2, fp1.size());
- memset(fp2.data(), 3, fp2.size());
- expiry =
- base::Time::Now() + base::TimeDelta::FromSeconds(3000);
- dynamic_spki_hashes.push_back(fp1);
- dynamic_spki_hashes.push_back(fp2);
- state_.AddHSTS("www.example.net", expiry, include_subdomains);
- state_.AddHPKP("www.example.net", expiry, include_subdomains,
- dynamic_spki_hashes);
-
- // Save a copy of everything.
- std::map<std::string, TransportSecurityState::DomainState> saved;
- TransportSecurityState::Iterator i(state_);
- while (i.HasNext()) {
- saved[i.hostname()] = i.domain_state();
- i.Advance();
- }
-
- std::string serialized;
- EXPECT_TRUE(persister_->SerializeData(&serialized));
-
- // Persist the data to the file. For the test to be fast and not flaky, we
- // just do it directly rather than call persister_->StateIsDirty. (That uses
- // ImportantFileWriter, which has an asynchronous commit interval rather
- // than block.) Use a different basename just for cleanliness.
- base::FilePath path =
- temp_dir_.path().AppendASCII("TransportSecurityPersisterTest");
- EXPECT_TRUE(file_util::WriteFile(path, serialized.c_str(),
- serialized.size()));
-
- // Read the data back.
- std::string persisted;
- EXPECT_TRUE(base::ReadFileToString(path, &persisted));
- EXPECT_EQ(persisted, serialized);
- bool dirty;
- EXPECT_TRUE(persister_->LoadEntries(persisted, &dirty));
- EXPECT_FALSE(dirty);
-
- // Check that states are the same as saved.
- size_t count = 0;
- TransportSecurityState::Iterator j(state_);
- while (j.HasNext()) {
- count++;
- j.Advance();
- }
- EXPECT_EQ(count, saved.size());
-}
-
-TEST_F(TransportSecurityPersisterTest, SerializeDataOld) {
- // This is an old-style piece of transport state JSON, which has no creation
- // date.
- std::string output =
- "{ "
- "\"NiyD+3J1r6z1wjl2n1ALBu94Zj9OsEAMo0kCN8js0Uk=\": {"
- "\"expiry\": 1266815027.983453, "
- "\"include_subdomains\": false, "
- "\"mode\": \"strict\" "
- "}"
- "}";
- bool dirty;
- EXPECT_TRUE(persister_->LoadEntries(output, &dirty));
- EXPECT_TRUE(dirty);
-}
-
-TEST_F(TransportSecurityPersisterTest, PublicKeyHashes) {
- TransportSecurityState::DomainState domain_state;
- static const char kTestDomain[] = "example.com";
- EXPECT_FALSE(state_.GetDomainState(kTestDomain, false, &domain_state));
- net::HashValueVector hashes;
- EXPECT_FALSE(domain_state.CheckPublicKeyPins(hashes));
-
- net::HashValue sha1(net::HASH_VALUE_SHA1);
- memset(sha1.data(), '1', sha1.size());
- domain_state.dynamic_spki_hashes.push_back(sha1);
-
- EXPECT_FALSE(domain_state.CheckPublicKeyPins(hashes));
-
- hashes.push_back(sha1);
- EXPECT_TRUE(domain_state.CheckPublicKeyPins(hashes));
-
- hashes[0].data()[0] = '2';
- EXPECT_FALSE(domain_state.CheckPublicKeyPins(hashes));
-
- const base::Time current_time(base::Time::Now());
- const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000);
- bool include_subdomains = false;
- state_.AddHSTS(kTestDomain, expiry, include_subdomains);
- state_.AddHPKP(kTestDomain, expiry, include_subdomains,
- domain_state.dynamic_spki_hashes);
- std::string ser;
- EXPECT_TRUE(persister_->SerializeData(&ser));
- bool dirty;
- EXPECT_TRUE(persister_->LoadEntries(ser, &dirty));
- EXPECT_TRUE(state_.GetDomainState(kTestDomain, false, &domain_state));
- EXPECT_EQ(1u, domain_state.dynamic_spki_hashes.size());
- EXPECT_EQ(sha1.tag, domain_state.dynamic_spki_hashes[0].tag);
- EXPECT_EQ(0, memcmp(domain_state.dynamic_spki_hashes[0].data(), sha1.data(),
- sha1.size()));
-}
« no previous file with comments | « chrome/browser/net/transport_security_persister.cc ('k') | chrome/browser/profiles/profile_io_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698