| 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()));
|
| -}
|
|
|