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

Side by Side Diff: google_apis/gcm/engine/gcm_store_impl_unittest.cc

Issue 884783003: [GCM] Fixing the initialization of last checkin/fetch time if they are (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding unit tests Created 5 years, 10 months 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 unified diff | Download patch
« no previous file with comments | « google_apis/gcm/engine/gcm_store_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « google_apis/gcm/engine/gcm_store_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698