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

Side by Side Diff: remoting/protocol/pairing_registry_unittest.cc

Issue 19714002: Add serialization to PairingRegistry. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reviewer feedback. Created 7 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « remoting/protocol/pairing_registry.cc ('k') | remoting/protocol/protocol_mock_objects.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "remoting/protocol/pairing_registry.h" 5 #include "remoting/protocol/pairing_registry.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 15 matching lines...) Expand all
26 const base::DictionaryValue& actual) { 26 const base::DictionaryValue& actual) {
27 std::string value; 27 std::string value;
28 EXPECT_TRUE(actual.GetString(PairingRegistry::kClientNameKey, &value)); 28 EXPECT_TRUE(actual.GetString(PairingRegistry::kClientNameKey, &value));
29 EXPECT_EQ(expected.client_name(), value); 29 EXPECT_EQ(expected.client_name(), value);
30 EXPECT_TRUE(actual.GetString(PairingRegistry::kClientIdKey, &value)); 30 EXPECT_TRUE(actual.GetString(PairingRegistry::kClientIdKey, &value));
31 EXPECT_EQ(expected.client_id(), value); 31 EXPECT_EQ(expected.client_id(), value);
32 32
33 EXPECT_FALSE(actual.HasKey(PairingRegistry::kSharedSecretKey)); 33 EXPECT_FALSE(actual.HasKey(PairingRegistry::kSharedSecretKey));
34 } 34 }
35 35
36 // SaveCallback that expects to be called with success = true.
37 void ExpectSaveSuccess(bool success) {
38 EXPECT_TRUE(success);
39 }
40
41 } // namespace 36 } // namespace
42 37
43 namespace remoting { 38 namespace remoting {
44 namespace protocol { 39 namespace protocol {
45 40
46 class PairingRegistryTest : public testing::Test { 41 class PairingRegistryTest : public testing::Test {
47 public: 42 public:
48 void CompareSecret(const std::string& expected, 43 virtual void SetUp() OVERRIDE {
49 PairingRegistry::Pairing actual) { 44 callback_count_ = 0;
50 EXPECT_EQ(expected, actual.shared_secret());
51 secret_ = actual.shared_secret();
52 got_secret_ = true;
53 } 45 }
54 46
55 void set_pairings(scoped_ptr<base::ListValue> pairings) { 47 void set_pairings(scoped_ptr<base::ListValue> pairings) {
56 pairings_ = pairings.Pass(); 48 pairings_ = pairings.Pass();
57 } 49 }
58 50
51 void ExpectSecret(const std::string& expected,
52 PairingRegistry::Pairing actual) {
53 EXPECT_EQ(expected, actual.shared_secret());
54 ++callback_count_;
55 }
56
57 void ExpectSaveSuccess(bool success) {
58 EXPECT_TRUE(success);
59 ++callback_count_;
60 }
61
62 void ExpectClientName(const std::string& expected,
63 PairingRegistry::Pairing actual) {
64 EXPECT_EQ(expected, actual.client_name());
65 ++callback_count_;
66 }
67
68 void ExpectNoPairings(scoped_ptr<base::ListValue> pairings) {
69 EXPECT_TRUE(pairings->empty());
70 ++callback_count_;
71 }
72
59 protected: 73 protected:
60 std::string secret_; 74 int callback_count_;
61 bool got_secret_;
62 scoped_ptr<base::ListValue> pairings_; 75 scoped_ptr<base::ListValue> pairings_;
63 }; 76 };
64 77
65 TEST_F(PairingRegistryTest, CreateAndGetPairings) { 78 TEST_F(PairingRegistryTest, CreateAndGetPairings) {
66 MockPairingRegistryDelegate* mock_delegate = 79 MockPairingRegistryDelegate* mock_delegate =
67 new MockPairingRegistryDelegate(); 80 new MockPairingRegistryDelegate();
68 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); 81 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate);
69 82
70 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); 83 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass()));
71 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("my_client"); 84 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("my_client");
72 mock_delegate->RunCallback(); 85 mock_delegate->RunCallback();
73 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("my_client"); 86 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("my_client");
74 mock_delegate->RunCallback(); 87 mock_delegate->RunCallback();
75 88
89 EXPECT_NE(pairing_1.shared_secret(), pairing_2.shared_secret());
90
76 registry->GetPairing(pairing_1.client_id(), 91 registry->GetPairing(pairing_1.client_id(),
77 base::Bind(&PairingRegistryTest::CompareSecret, 92 base::Bind(&PairingRegistryTest::ExpectSecret,
78 base::Unretained(this), 93 base::Unretained(this),
79 pairing_1.shared_secret())); 94 pairing_1.shared_secret()));
80 got_secret_ = false;
81 mock_delegate->RunCallback(); 95 mock_delegate->RunCallback();
82 EXPECT_TRUE(got_secret_); 96 EXPECT_EQ(1, callback_count_);
83 std::string secret_1 = secret_;
84 97
85 // Check that the second client is paired with a different shared secret. 98 // Check that the second client is paired with a different shared secret.
86 registry->GetPairing(pairing_2.client_id(), 99 registry->GetPairing(pairing_2.client_id(),
87 base::Bind(&PairingRegistryTest::CompareSecret, 100 base::Bind(&PairingRegistryTest::ExpectSecret,
88 base::Unretained(this), 101 base::Unretained(this),
89 pairing_2.shared_secret())); 102 pairing_2.shared_secret()));
90 got_secret_ = false;
91 mock_delegate->RunCallback(); 103 mock_delegate->RunCallback();
92 EXPECT_TRUE(got_secret_); 104 EXPECT_EQ(2, callback_count_);
93 EXPECT_NE(secret_, secret_1);
94 } 105 }
95 106
96 TEST_F(PairingRegistryTest, GetAllPairings) { 107 TEST_F(PairingRegistryTest, GetAllPairings) {
97 MockPairingRegistryDelegate* mock_delegate = 108 MockPairingRegistryDelegate* mock_delegate =
98 new MockPairingRegistryDelegate(); 109 new MockPairingRegistryDelegate();
99 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); 110 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate);
100 111
101 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); 112 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass()));
102 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); 113 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1");
103 mock_delegate->RunCallback(); 114 mock_delegate->RunCallback();
(...skipping 27 matching lines...) Expand all
131 MockPairingRegistryDelegate* mock_delegate = 142 MockPairingRegistryDelegate* mock_delegate =
132 new MockPairingRegistryDelegate(); 143 new MockPairingRegistryDelegate();
133 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); 144 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate);
134 145
135 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); 146 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass()));
136 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); 147 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1");
137 mock_delegate->RunCallback(); 148 mock_delegate->RunCallback();
138 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); 149 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2");
139 mock_delegate->RunCallback(); 150 mock_delegate->RunCallback();
140 151
141 registry->DeletePairing(pairing_1.client_id(), base::Bind(ExpectSaveSuccess)); 152 registry->DeletePairing(
153 pairing_1.client_id(),
154 base::Bind(&PairingRegistryTest::ExpectSaveSuccess,
155 base::Unretained(this)));
142 mock_delegate->RunCallback(); 156 mock_delegate->RunCallback();
143 157
144 // Re-read the list, and verify it only has the pairing_2 client. 158 // Re-read the list, and verify it only has the pairing_2 client.
145 registry->GetAllPairings( 159 registry->GetAllPairings(
146 base::Bind(&PairingRegistryTest::set_pairings, 160 base::Bind(&PairingRegistryTest::set_pairings,
147 base::Unretained(this))); 161 base::Unretained(this)));
148 mock_delegate->RunCallback(); 162 mock_delegate->RunCallback();
149 163
150 ASSERT_EQ(1u, pairings_->GetSize()); 164 ASSERT_EQ(1u, pairings_->GetSize());
151 const base::DictionaryValue* actual_pairing_2; 165 const base::DictionaryValue* actual_pairing_2;
152 ASSERT_TRUE(pairings_->GetDictionary(0, &actual_pairing_2)); 166 ASSERT_TRUE(pairings_->GetDictionary(0, &actual_pairing_2));
153 std::string actual_client_id; 167 std::string actual_client_id;
154 ASSERT_TRUE(actual_pairing_2->GetString(PairingRegistry::kClientIdKey, 168 ASSERT_TRUE(actual_pairing_2->GetString(PairingRegistry::kClientIdKey,
155 &actual_client_id)); 169 &actual_client_id));
156 EXPECT_EQ(pairing_2.client_id(), actual_client_id); 170 EXPECT_EQ(pairing_2.client_id(), actual_client_id);
157 } 171 }
158 172
159 TEST_F(PairingRegistryTest, ClearAllPairings) { 173 TEST_F(PairingRegistryTest, ClearAllPairings) {
160 MockPairingRegistryDelegate* mock_delegate = 174 MockPairingRegistryDelegate* mock_delegate =
161 new MockPairingRegistryDelegate(); 175 new MockPairingRegistryDelegate();
162 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); 176 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate);
163 177
164 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); 178 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass()));
165 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); 179 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1");
166 mock_delegate->RunCallback(); 180 mock_delegate->RunCallback();
167 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); 181 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2");
168 mock_delegate->RunCallback(); 182 mock_delegate->RunCallback();
169 183
170 registry->ClearAllPairings(base::Bind(ExpectSaveSuccess)); 184 registry->ClearAllPairings(
185 base::Bind(&PairingRegistryTest::ExpectSaveSuccess,
186 base::Unretained(this)));
171 187
172 // Re-read the list, and verify it is empty. 188 // Re-read the list, and verify it is empty.
173 registry->GetAllPairings( 189 registry->GetAllPairings(
174 base::Bind(&PairingRegistryTest::set_pairings, 190 base::Bind(&PairingRegistryTest::set_pairings,
175 base::Unretained(this))); 191 base::Unretained(this)));
176 mock_delegate->RunCallback(); 192 mock_delegate->RunCallback();
177 193
178 EXPECT_TRUE(pairings_->empty()); 194 EXPECT_TRUE(pairings_->empty());
179 } 195 }
180 196
197 TEST_F(PairingRegistryTest, SerializedRequests) {
198 MockPairingRegistryDelegate* mock_delegate =
199 new MockPairingRegistryDelegate();
200 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate);
201 mock_delegate->set_run_save_callback_automatically(false);
202
203 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass()));
204 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1");
205 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2");
206 registry->GetPairing(
207 pairing_1.client_id(),
208 base::Bind(&PairingRegistryTest::ExpectClientName,
209 base::Unretained(this), "client1"));
210 registry->GetPairing(
211 pairing_2.client_id(),
212 base::Bind(&PairingRegistryTest::ExpectClientName,
213 base::Unretained(this), "client2"));
214 registry->DeletePairing(
215 pairing_2.client_id(),
216 base::Bind(&PairingRegistryTest::ExpectSaveSuccess,
217 base::Unretained(this)));
218 registry->GetPairing(
219 pairing_1.client_id(),
220 base::Bind(&PairingRegistryTest::ExpectClientName,
221 base::Unretained(this), "client1"));
222 registry->GetPairing(
223 pairing_2.client_id(),
224 base::Bind(&PairingRegistryTest::ExpectClientName,
225 base::Unretained(this), ""));
226 registry->ClearAllPairings(
227 base::Bind(&PairingRegistryTest::ExpectSaveSuccess,
228 base::Unretained(this)));
229 registry->GetAllPairings(
230 base::Bind(&PairingRegistryTest::ExpectNoPairings,
231 base::Unretained(this)));
232 PairingRegistry::Pairing pairing_3 = registry->CreatePairing("client3");
233 registry->GetPairing(
234 pairing_3.client_id(),
235 base::Bind(&PairingRegistryTest::ExpectClientName,
236 base::Unretained(this), "client3"));
237
238 while (mock_delegate->HasCallback()) {
239 mock_delegate->RunCallback();
240 }
241
242 EXPECT_EQ(8, callback_count_);
243 }
244
181 } // namespace protocol 245 } // namespace protocol
182 } // namespace remoting 246 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/pairing_registry.cc ('k') | remoting/protocol/protocol_mock_objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698