OLD | NEW |
---|---|
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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
75 scoped_ptr<base::ListValue> pairings_; | 75 scoped_ptr<base::ListValue> pairings_; |
76 }; | 76 }; |
77 | 77 |
78 TEST_F(PairingRegistryTest, CreateAndGetPairings) { | 78 TEST_F(PairingRegistryTest, CreateAndGetPairings) { |
79 MockPairingRegistryDelegate* mock_delegate = | 79 MockPairingRegistryDelegate* mock_delegate = |
80 new MockPairingRegistryDelegate(); | 80 new MockPairingRegistryDelegate(); |
81 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); | 81 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); |
82 | 82 |
83 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); | 83 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); |
84 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("my_client"); | 84 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("my_client"); |
85 mock_delegate->RunCallback(); | 85 mock_delegate->DrainCallbacks(); |
86 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("my_client"); | 86 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("my_client"); |
Jamie
2013/07/30 21:35:07
I think a lot of these DrainCallbacks are redundan
alexeypa (please no reviews)
2013/07/31 21:31:24
Done.
| |
87 mock_delegate->RunCallback(); | 87 mock_delegate->DrainCallbacks(); |
88 | 88 |
89 EXPECT_NE(pairing_1.shared_secret(), pairing_2.shared_secret()); | 89 EXPECT_NE(pairing_1.shared_secret(), pairing_2.shared_secret()); |
90 | 90 |
91 registry->GetPairing(pairing_1.client_id(), | 91 registry->GetPairing(pairing_1.client_id(), |
92 base::Bind(&PairingRegistryTest::ExpectSecret, | 92 base::Bind(&PairingRegistryTest::ExpectSecret, |
93 base::Unretained(this), | 93 base::Unretained(this), |
94 pairing_1.shared_secret())); | 94 pairing_1.shared_secret())); |
95 mock_delegate->RunCallback(); | 95 mock_delegate->DrainCallbacks(); |
96 EXPECT_EQ(1, callback_count_); | 96 EXPECT_EQ(1, callback_count_); |
97 | 97 |
98 // 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. |
99 registry->GetPairing(pairing_2.client_id(), | 99 registry->GetPairing(pairing_2.client_id(), |
100 base::Bind(&PairingRegistryTest::ExpectSecret, | 100 base::Bind(&PairingRegistryTest::ExpectSecret, |
101 base::Unretained(this), | 101 base::Unretained(this), |
102 pairing_2.shared_secret())); | 102 pairing_2.shared_secret())); |
103 mock_delegate->RunCallback(); | 103 mock_delegate->DrainCallbacks(); |
104 EXPECT_EQ(2, callback_count_); | 104 EXPECT_EQ(2, callback_count_); |
105 } | 105 } |
106 | 106 |
107 TEST_F(PairingRegistryTest, GetAllPairings) { | 107 TEST_F(PairingRegistryTest, GetAllPairings) { |
108 MockPairingRegistryDelegate* mock_delegate = | 108 MockPairingRegistryDelegate* mock_delegate = |
109 new MockPairingRegistryDelegate(); | 109 new MockPairingRegistryDelegate(); |
110 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); | 110 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); |
111 | 111 |
112 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); | 112 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); |
113 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); | 113 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); |
114 mock_delegate->RunCallback(); | 114 mock_delegate->DrainCallbacks(); |
115 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); | 115 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); |
116 mock_delegate->RunCallback(); | 116 mock_delegate->DrainCallbacks(); |
117 | 117 |
118 registry->GetAllPairings( | 118 registry->GetAllPairings( |
119 base::Bind(&PairingRegistryTest::set_pairings, | 119 base::Bind(&PairingRegistryTest::set_pairings, |
120 base::Unretained(this))); | 120 base::Unretained(this))); |
121 mock_delegate->RunCallback(); | 121 mock_delegate->DrainCallbacks(); |
122 | 122 |
123 ASSERT_EQ(2u, pairings_->GetSize()); | 123 ASSERT_EQ(2u, pairings_->GetSize()); |
124 const base::DictionaryValue* actual_pairing_1; | 124 const base::DictionaryValue* actual_pairing_1; |
125 const base::DictionaryValue* actual_pairing_2; | 125 const base::DictionaryValue* actual_pairing_2; |
126 ASSERT_TRUE(pairings_->GetDictionary(0, &actual_pairing_1)); | 126 ASSERT_TRUE(pairings_->GetDictionary(0, &actual_pairing_1)); |
127 ASSERT_TRUE(pairings_->GetDictionary(1, &actual_pairing_2)); | 127 ASSERT_TRUE(pairings_->GetDictionary(1, &actual_pairing_2)); |
128 | 128 |
129 // Ordering is not guaranteed, so swap if necessary. | 129 // Ordering is not guaranteed, so swap if necessary. |
130 std::string actual_client_id; | 130 std::string actual_client_id; |
131 ASSERT_TRUE(actual_pairing_1->GetString(PairingRegistry::kClientIdKey, | 131 ASSERT_TRUE(actual_pairing_1->GetString(PairingRegistry::kClientIdKey, |
132 &actual_client_id)); | 132 &actual_client_id)); |
133 if (actual_client_id != pairing_1.client_id()) { | 133 if (actual_client_id != pairing_1.client_id()) { |
134 std::swap(actual_pairing_1, actual_pairing_2); | 134 std::swap(actual_pairing_1, actual_pairing_2); |
135 } | 135 } |
136 | 136 |
137 VerifyPairing(pairing_1, *actual_pairing_1); | 137 VerifyPairing(pairing_1, *actual_pairing_1); |
138 VerifyPairing(pairing_2, *actual_pairing_2); | 138 VerifyPairing(pairing_2, *actual_pairing_2); |
139 } | 139 } |
140 | 140 |
141 TEST_F(PairingRegistryTest, DeletePairing) { | 141 TEST_F(PairingRegistryTest, DeletePairing) { |
142 MockPairingRegistryDelegate* mock_delegate = | 142 MockPairingRegistryDelegate* mock_delegate = |
143 new MockPairingRegistryDelegate(); | 143 new MockPairingRegistryDelegate(); |
144 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); | 144 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); |
145 | 145 |
146 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); | 146 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); |
147 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); | 147 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); |
148 mock_delegate->RunCallback(); | 148 mock_delegate->DrainCallbacks(); |
149 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); | 149 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); |
150 mock_delegate->RunCallback(); | 150 mock_delegate->DrainCallbacks(); |
151 | 151 |
152 registry->DeletePairing( | 152 registry->DeletePairing( |
153 pairing_1.client_id(), | 153 pairing_1.client_id(), |
154 base::Bind(&PairingRegistryTest::ExpectSaveSuccess, | 154 base::Bind(&PairingRegistryTest::ExpectSaveSuccess, |
155 base::Unretained(this))); | 155 base::Unretained(this))); |
156 mock_delegate->RunCallback(); | 156 mock_delegate->DrainCallbacks(); |
157 | 157 |
158 // 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. |
159 registry->GetAllPairings( | 159 registry->GetAllPairings( |
160 base::Bind(&PairingRegistryTest::set_pairings, | 160 base::Bind(&PairingRegistryTest::set_pairings, |
161 base::Unretained(this))); | 161 base::Unretained(this))); |
162 mock_delegate->RunCallback(); | 162 mock_delegate->DrainCallbacks(); |
163 | 163 |
164 ASSERT_EQ(1u, pairings_->GetSize()); | 164 ASSERT_EQ(1u, pairings_->GetSize()); |
165 const base::DictionaryValue* actual_pairing_2; | 165 const base::DictionaryValue* actual_pairing_2; |
166 ASSERT_TRUE(pairings_->GetDictionary(0, &actual_pairing_2)); | 166 ASSERT_TRUE(pairings_->GetDictionary(0, &actual_pairing_2)); |
167 std::string actual_client_id; | 167 std::string actual_client_id; |
168 ASSERT_TRUE(actual_pairing_2->GetString(PairingRegistry::kClientIdKey, | 168 ASSERT_TRUE(actual_pairing_2->GetString(PairingRegistry::kClientIdKey, |
169 &actual_client_id)); | 169 &actual_client_id)); |
170 EXPECT_EQ(pairing_2.client_id(), actual_client_id); | 170 EXPECT_EQ(pairing_2.client_id(), actual_client_id); |
171 } | 171 } |
172 | 172 |
173 TEST_F(PairingRegistryTest, ClearAllPairings) { | 173 TEST_F(PairingRegistryTest, ClearAllPairings) { |
174 MockPairingRegistryDelegate* mock_delegate = | 174 MockPairingRegistryDelegate* mock_delegate = |
175 new MockPairingRegistryDelegate(); | 175 new MockPairingRegistryDelegate(); |
176 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); | 176 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); |
177 | 177 |
178 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); | 178 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); |
179 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); | 179 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); |
180 mock_delegate->RunCallback(); | 180 mock_delegate->DrainCallbacks(); |
181 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); | 181 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); |
182 mock_delegate->RunCallback(); | 182 mock_delegate->DrainCallbacks(); |
183 | 183 |
184 registry->ClearAllPairings( | 184 registry->ClearAllPairings( |
185 base::Bind(&PairingRegistryTest::ExpectSaveSuccess, | 185 base::Bind(&PairingRegistryTest::ExpectSaveSuccess, |
186 base::Unretained(this))); | 186 base::Unretained(this))); |
187 | 187 |
188 // Re-read the list, and verify it is empty. | 188 // Re-read the list, and verify it is empty. |
189 registry->GetAllPairings( | 189 registry->GetAllPairings( |
190 base::Bind(&PairingRegistryTest::set_pairings, | 190 base::Bind(&PairingRegistryTest::set_pairings, |
191 base::Unretained(this))); | 191 base::Unretained(this))); |
192 mock_delegate->RunCallback(); | 192 mock_delegate->DrainCallbacks(); |
193 | 193 |
194 EXPECT_TRUE(pairings_->empty()); | 194 EXPECT_TRUE(pairings_->empty()); |
195 } | 195 } |
196 | 196 |
197 TEST_F(PairingRegistryTest, SerializedRequests) { | 197 TEST_F(PairingRegistryTest, SerializedRequests) { |
198 MockPairingRegistryDelegate* mock_delegate = | 198 MockPairingRegistryDelegate* mock_delegate = |
199 new MockPairingRegistryDelegate(); | 199 new MockPairingRegistryDelegate(); |
200 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); | 200 scoped_ptr<PairingRegistry::Delegate> delegate(mock_delegate); |
201 mock_delegate->set_run_save_callback_automatically(false); | |
202 | 201 |
203 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); | 202 scoped_refptr<PairingRegistry> registry(new PairingRegistry(delegate.Pass())); |
204 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); | 203 PairingRegistry::Pairing pairing_1 = registry->CreatePairing("client1"); |
205 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); | 204 PairingRegistry::Pairing pairing_2 = registry->CreatePairing("client2"); |
206 registry->GetPairing( | 205 registry->GetPairing( |
207 pairing_1.client_id(), | 206 pairing_1.client_id(), |
208 base::Bind(&PairingRegistryTest::ExpectClientName, | 207 base::Bind(&PairingRegistryTest::ExpectClientName, |
209 base::Unretained(this), "client1")); | 208 base::Unretained(this), "client1")); |
210 registry->GetPairing( | 209 registry->GetPairing( |
211 pairing_2.client_id(), | 210 pairing_2.client_id(), |
(...skipping 16 matching lines...) Expand all Loading... | |
228 base::Unretained(this))); | 227 base::Unretained(this))); |
229 registry->GetAllPairings( | 228 registry->GetAllPairings( |
230 base::Bind(&PairingRegistryTest::ExpectNoPairings, | 229 base::Bind(&PairingRegistryTest::ExpectNoPairings, |
231 base::Unretained(this))); | 230 base::Unretained(this))); |
232 PairingRegistry::Pairing pairing_3 = registry->CreatePairing("client3"); | 231 PairingRegistry::Pairing pairing_3 = registry->CreatePairing("client3"); |
233 registry->GetPairing( | 232 registry->GetPairing( |
234 pairing_3.client_id(), | 233 pairing_3.client_id(), |
235 base::Bind(&PairingRegistryTest::ExpectClientName, | 234 base::Bind(&PairingRegistryTest::ExpectClientName, |
236 base::Unretained(this), "client3")); | 235 base::Unretained(this), "client3")); |
237 | 236 |
238 while (mock_delegate->HasCallback()) { | 237 mock_delegate->DrainCallbacks(); |
239 mock_delegate->RunCallback(); | |
240 } | |
241 | 238 |
242 EXPECT_EQ(8, callback_count_); | 239 EXPECT_EQ(8, callback_count_); |
243 } | 240 } |
244 | 241 |
245 } // namespace protocol | 242 } // namespace protocol |
246 } // namespace remoting | 243 } // namespace remoting |
OLD | NEW |