| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "google_apis/gcm/engine/gcm_store_impl.h" | 5 #include "google_apis/gcm/engine/gcm_store_impl.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 const char kCategoryName[] = "my_category"; | 38 const char kCategoryName[] = "my_category"; |
| 39 | 39 |
| 40 const uint64 kDeviceId = 22; | 40 const uint64 kDeviceId = 22; |
| 41 const uint64 kDeviceToken = 55; | 41 const uint64 kDeviceToken = 55; |
| 42 | 42 |
| 43 class GCMStoreImplTest : public testing::Test { | 43 class GCMStoreImplTest : public testing::Test { |
| 44 public: | 44 public: |
| 45 GCMStoreImplTest(); | 45 GCMStoreImplTest(); |
| 46 ~GCMStoreImplTest() override; | 46 ~GCMStoreImplTest() override; |
| 47 | 47 |
| 48 scoped_ptr<GCMStore> BuildGCMStore(); | 48 scoped_ptr<GCMStoreImpl> BuildGCMStore(); |
| 49 | 49 |
| 50 std::string GetNextPersistentId(); | 50 std::string GetNextPersistentId(); |
| 51 | 51 |
| 52 void PumpLoop(); | 52 void PumpLoop(); |
| 53 | 53 |
| 54 void LoadCallback(scoped_ptr<GCMStore::LoadResult>* result_dst, | 54 void LoadCallback(scoped_ptr<GCMStore::LoadResult>* result_dst, |
| 55 scoped_ptr<GCMStore::LoadResult> result); | 55 scoped_ptr<GCMStore::LoadResult> result); |
| 56 void UpdateCallback(bool success); | 56 void UpdateCallback(bool success); |
| 57 | 57 |
| 58 protected: | 58 protected: |
| 59 base::MessageLoop message_loop_; | 59 base::MessageLoop message_loop_; |
| 60 base::ScopedTempDir temp_directory_; | 60 base::ScopedTempDir temp_directory_; |
| 61 bool expected_success_; | 61 bool expected_success_; |
| 62 uint64 next_persistent_id_; | 62 uint64 next_persistent_id_; |
| 63 scoped_ptr<base::RunLoop> run_loop_; | 63 scoped_ptr<base::RunLoop> run_loop_; |
| 64 }; | 64 }; |
| 65 | 65 |
| 66 GCMStoreImplTest::GCMStoreImplTest() | 66 GCMStoreImplTest::GCMStoreImplTest() |
| 67 : expected_success_(true), | 67 : expected_success_(true), |
| 68 next_persistent_id_(base::Time::Now().ToInternalValue()) { | 68 next_persistent_id_(base::Time::Now().ToInternalValue()) { |
| 69 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); | 69 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); |
| 70 run_loop_.reset(new base::RunLoop()); | 70 run_loop_.reset(new base::RunLoop()); |
| 71 } | 71 } |
| 72 | 72 |
| 73 GCMStoreImplTest::~GCMStoreImplTest() {} | 73 GCMStoreImplTest::~GCMStoreImplTest() {} |
| 74 | 74 |
| 75 scoped_ptr<GCMStore> GCMStoreImplTest::BuildGCMStore() { | 75 scoped_ptr<GCMStoreImpl> GCMStoreImplTest::BuildGCMStore() { |
| 76 return scoped_ptr<GCMStore>(new GCMStoreImpl( | 76 return scoped_ptr<GCMStoreImpl>(new GCMStoreImpl( |
| 77 temp_directory_.path(), | 77 temp_directory_.path(), |
| 78 message_loop_.message_loop_proxy(), | 78 message_loop_.message_loop_proxy(), |
| 79 make_scoped_ptr<Encryptor>(new FakeEncryptor))); | 79 make_scoped_ptr<Encryptor>(new FakeEncryptor))); |
| 80 } | 80 } |
| 81 | 81 |
| 82 std::string GCMStoreImplTest::GetNextPersistentId() { | 82 std::string GCMStoreImplTest::GetNextPersistentId() { |
| 83 return base::Uint64ToString(next_persistent_id_++); | 83 return base::Uint64ToString(next_persistent_id_++); |
| 84 } | 84 } |
| 85 | 85 |
| 86 void GCMStoreImplTest::PumpLoop() { message_loop_.RunUntilIdle(); } | 86 void GCMStoreImplTest::PumpLoop() { message_loop_.RunUntilIdle(); } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 gcm_store = BuildGCMStore().Pass(); | 130 gcm_store = BuildGCMStore().Pass(); |
| 131 gcm_store->Load(base::Bind( | 131 gcm_store->Load(base::Bind( |
| 132 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 132 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
| 133 PumpLoop(); | 133 PumpLoop(); |
| 134 | 134 |
| 135 ASSERT_EQ(kDeviceId, load_result->device_android_id); | 135 ASSERT_EQ(kDeviceId, load_result->device_android_id); |
| 136 ASSERT_EQ(kDeviceToken, load_result->device_security_token); | 136 ASSERT_EQ(kDeviceToken, load_result->device_security_token); |
| 137 } | 137 } |
| 138 | 138 |
| 139 TEST_F(GCMStoreImplTest, LastCheckinInfo) { | 139 TEST_F(GCMStoreImplTest, LastCheckinInfo) { |
| 140 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); | 140 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); |
| 141 scoped_ptr<GCMStore::LoadResult> load_result; | 141 scoped_ptr<GCMStore::LoadResult> load_result; |
| 142 gcm_store->Load(base::Bind( | 142 gcm_store->Load(base::Bind( |
| 143 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 143 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
| 144 PumpLoop(); | 144 PumpLoop(); |
| 145 | 145 |
| 146 base::Time last_checkin_time = base::Time::Now(); | 146 base::Time last_checkin_time = base::Time::Now(); |
| 147 std::set<std::string> accounts; | 147 std::set<std::string> accounts; |
| 148 accounts.insert("test_user1@gmail.com"); | 148 accounts.insert("test_user1@gmail.com"); |
| 149 accounts.insert("test_user2@gmail.com"); | 149 accounts.insert("test_user2@gmail.com"); |
| 150 | 150 |
| 151 gcm_store->SetLastCheckinInfo( | 151 gcm_store->SetLastCheckinInfo( |
| 152 last_checkin_time, | 152 last_checkin_time, |
| 153 accounts, | 153 accounts, |
| 154 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); | 154 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); |
| 155 PumpLoop(); | 155 PumpLoop(); |
| 156 | 156 |
| 157 gcm_store = BuildGCMStore().Pass(); | 157 gcm_store = BuildGCMStore().Pass(); |
| 158 gcm_store->Load(base::Bind( | 158 gcm_store->Load(base::Bind( |
| 159 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 159 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
| 160 PumpLoop(); | 160 PumpLoop(); |
| 161 ASSERT_EQ(last_checkin_time, load_result->last_checkin_time); | 161 ASSERT_EQ(last_checkin_time, load_result->last_checkin_time); |
| 162 ASSERT_EQ(accounts, load_result->last_checkin_accounts); | 162 ASSERT_EQ(accounts, load_result->last_checkin_accounts); |
| 163 |
| 164 // Negative cases, where the value read is gibberish. |
| 165 gcm_store->SetValueForTesting( |
| 166 "last_checkin_time", |
| 167 "gibberish", |
| 168 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); |
| 169 PumpLoop(); |
| 170 |
| 171 gcm_store = BuildGCMStore().Pass(); |
| 172 gcm_store->Load(base::Bind( |
| 173 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
| 174 PumpLoop(); |
| 175 EXPECT_EQ(base::Time(), load_result->last_checkin_time); |
| 163 } | 176 } |
| 164 | 177 |
| 165 TEST_F(GCMStoreImplTest, GServicesSettings_ProtocolV2) { | 178 TEST_F(GCMStoreImplTest, GServicesSettings_ProtocolV2) { |
| 166 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); | 179 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); |
| 167 scoped_ptr<GCMStore::LoadResult> load_result; | 180 scoped_ptr<GCMStore::LoadResult> load_result; |
| 168 gcm_store->Load(base::Bind( | 181 gcm_store->Load(base::Bind( |
| 169 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 182 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
| 170 PumpLoop(); | 183 PumpLoop(); |
| 171 | 184 |
| 172 std::map<std::string, std::string> settings; | 185 std::map<std::string, std::string> settings; |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 gcm_store->Close(); | 650 gcm_store->Close(); |
| 638 PumpLoop(); | 651 PumpLoop(); |
| 639 | 652 |
| 640 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback, | 653 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback, |
| 641 base::Unretained(this), | 654 base::Unretained(this), |
| 642 &load_result)); | 655 &load_result)); |
| 643 PumpLoop(); | 656 PumpLoop(); |
| 644 } | 657 } |
| 645 | 658 |
| 646 TEST_F(GCMStoreImplTest, LastTokenFetchTime) { | 659 TEST_F(GCMStoreImplTest, LastTokenFetchTime) { |
| 647 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); | 660 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); |
| 648 scoped_ptr<GCMStore::LoadResult> load_result; | 661 scoped_ptr<GCMStore::LoadResult> load_result; |
| 649 gcm_store->Load(base::Bind( | 662 gcm_store->Load(base::Bind( |
| 650 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 663 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
| 651 PumpLoop(); | 664 PumpLoop(); |
| 652 EXPECT_EQ(base::Time(), load_result->last_token_fetch_time); | 665 EXPECT_EQ(base::Time(), load_result->last_token_fetch_time); |
| 653 | 666 |
| 654 base::Time last_token_fetch_time = base::Time::Now(); | 667 base::Time last_token_fetch_time = base::Time::Now(); |
| 655 gcm_store->SetLastTokenFetchTime( | 668 gcm_store->SetLastTokenFetchTime( |
| 656 last_token_fetch_time, | 669 last_token_fetch_time, |
| 657 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); | 670 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); |
| 658 PumpLoop(); | 671 PumpLoop(); |
| 659 | 672 |
| 660 gcm_store = BuildGCMStore().Pass(); | 673 gcm_store = BuildGCMStore().Pass(); |
| 661 gcm_store->Load(base::Bind( | 674 gcm_store->Load(base::Bind( |
| 662 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 675 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
| 663 PumpLoop(); | 676 PumpLoop(); |
| 664 EXPECT_EQ(last_token_fetch_time, load_result->last_token_fetch_time); | 677 EXPECT_EQ(last_token_fetch_time, load_result->last_token_fetch_time); |
| 678 |
| 679 // Negative cases, where the value read is gibberish. |
| 680 gcm_store->SetValueForTesting( |
| 681 "last_token_fetch_time", |
| 682 "gibberish", |
| 683 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); |
| 684 PumpLoop(); |
| 685 |
| 686 gcm_store = BuildGCMStore().Pass(); |
| 687 gcm_store->Load(base::Bind( |
| 688 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
| 689 PumpLoop(); |
| 690 EXPECT_EQ(base::Time(), load_result->last_token_fetch_time); |
| 665 } | 691 } |
| 666 | 692 |
| 667 } // namespace | 693 } // namespace |
| 668 | 694 |
| 669 } // namespace gcm | 695 } // namespace gcm |
| OLD | NEW |