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 |