| 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 "chromeos/dbus/shill_client_unittest_base.h" | 5 #include "chromeos/dbus/shill_client_unittest_base.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chromeos/network/shill_property_util.h" | 10 #include "chromeos/network/shill_property_util.h" |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 ShillClientUnittestBase::MockErrorCallback::MockErrorCallback() {} | 92 ShillClientUnittestBase::MockErrorCallback::MockErrorCallback() {} |
| 93 | 93 |
| 94 ShillClientUnittestBase::MockErrorCallback::~MockErrorCallback() {} | 94 ShillClientUnittestBase::MockErrorCallback::~MockErrorCallback() {} |
| 95 | 95 |
| 96 ShillClientUnittestBase::MockPropertyChangeObserver:: | 96 ShillClientUnittestBase::MockPropertyChangeObserver:: |
| 97 MockPropertyChangeObserver() {} | 97 MockPropertyChangeObserver() {} |
| 98 | 98 |
| 99 ShillClientUnittestBase::MockPropertyChangeObserver:: | 99 ShillClientUnittestBase::MockPropertyChangeObserver:: |
| 100 ~MockPropertyChangeObserver() {} | 100 ~MockPropertyChangeObserver() {} |
| 101 | 101 |
| 102 ShillClientUnittestBase::MockShillThirdPartyVpnObserver:: |
| 103 MockShillThirdPartyVpnObserver() {} |
| 104 |
| 105 ShillClientUnittestBase::MockShillThirdPartyVpnObserver:: |
| 106 ~MockShillThirdPartyVpnObserver() {} |
| 107 |
| 102 ShillClientHelper::ErrorCallback | 108 ShillClientHelper::ErrorCallback |
| 103 ShillClientUnittestBase::MockErrorCallback::GetCallback() { | 109 ShillClientUnittestBase::MockErrorCallback::GetCallback() { |
| 104 return base::Bind(&MockErrorCallback::Run, base::Unretained(this)); | 110 return base::Bind(&MockErrorCallback::Run, base::Unretained(this)); |
| 105 } | 111 } |
| 106 | 112 |
| 107 | 113 |
| 108 ShillClientUnittestBase::ShillClientUnittestBase( | 114 ShillClientUnittestBase::ShillClientUnittestBase( |
| 109 const std::string& interface_name, | 115 const std::string& interface_name, |
| 110 const dbus::ObjectPath& object_path) | 116 const dbus::ObjectPath& object_path) |
| 111 : interface_name_(interface_name), | 117 : interface_name_(interface_name), |
| (...skipping 21 matching lines...) Expand all Loading... |
| 133 EXPECT_CALL(*mock_proxy_.get(), CallMethod(_, _, _)) | 139 EXPECT_CALL(*mock_proxy_.get(), CallMethod(_, _, _)) |
| 134 .WillRepeatedly(Invoke(this, &ShillClientUnittestBase::OnCallMethod)); | 140 .WillRepeatedly(Invoke(this, &ShillClientUnittestBase::OnCallMethod)); |
| 135 | 141 |
| 136 // Set an expectation so mock_proxy's CallMethodWithErrorCallback() will use | 142 // Set an expectation so mock_proxy's CallMethodWithErrorCallback() will use |
| 137 // OnCallMethodWithErrorCallback() to return responses. | 143 // OnCallMethodWithErrorCallback() to return responses. |
| 138 EXPECT_CALL(*mock_proxy_.get(), CallMethodWithErrorCallback(_, _, _, _)) | 144 EXPECT_CALL(*mock_proxy_.get(), CallMethodWithErrorCallback(_, _, _, _)) |
| 139 .WillRepeatedly(Invoke( | 145 .WillRepeatedly(Invoke( |
| 140 this, &ShillClientUnittestBase::OnCallMethodWithErrorCallback)); | 146 this, &ShillClientUnittestBase::OnCallMethodWithErrorCallback)); |
| 141 | 147 |
| 142 // Set an expectation so mock_proxy's ConnectToSignal() will use | 148 // Set an expectation so mock_proxy's ConnectToSignal() will use |
| 143 // OnConnectToSignal() to run the callback. | 149 // OnConnectToPropertyChanged() to run the callback. |
| 144 EXPECT_CALL( | 150 EXPECT_CALL( |
| 145 *mock_proxy_.get(), | 151 *mock_proxy_.get(), |
| 146 ConnectToSignal(interface_name_, shill::kMonitorPropertyChanged, _, _)) | 152 ConnectToSignal(interface_name_, shill::kMonitorPropertyChanged, _, _)) |
| 147 .WillRepeatedly( | 153 .WillRepeatedly( |
| 148 Invoke(this, &ShillClientUnittestBase::OnConnectToSignal)); | 154 Invoke(this, &ShillClientUnittestBase::OnConnectToPropertyChanged)); |
| 155 |
| 156 EXPECT_CALL( |
| 157 *mock_proxy_.get(), |
| 158 ConnectToSignal(interface_name_, shill::kOnPlatformMessageFunction, _, _)) |
| 159 .WillRepeatedly( |
| 160 Invoke(this, &ShillClientUnittestBase::OnConnectToPlatformMessage)); |
| 161 |
| 162 EXPECT_CALL( |
| 163 *mock_proxy_.get(), |
| 164 ConnectToSignal(interface_name_, shill::kOnPacketReceivedFunction, _, _)) |
| 165 .WillRepeatedly( |
| 166 Invoke(this, &ShillClientUnittestBase::OnConnectToPacketReceived)); |
| 149 | 167 |
| 150 // Set an expectation so mock_bus's GetObjectProxy() for the given | 168 // Set an expectation so mock_bus's GetObjectProxy() for the given |
| 151 // service name and the object path will return mock_proxy_. | 169 // service name and the object path will return mock_proxy_. |
| 152 EXPECT_CALL(*mock_bus_.get(), | 170 EXPECT_CALL(*mock_bus_.get(), |
| 153 GetObjectProxy(shill::kFlimflamServiceName, object_path_)) | 171 GetObjectProxy(shill::kFlimflamServiceName, object_path_)) |
| 154 .WillOnce(Return(mock_proxy_.get())); | 172 .WillOnce(Return(mock_proxy_.get())); |
| 155 | 173 |
| 156 // Set an expectation so mock_bus's GetDBusTaskRunner will return the current | 174 // Set an expectation so mock_bus's GetDBusTaskRunner will return the current |
| 157 // task runner. | 175 // task runner. |
| 158 EXPECT_CALL(*mock_bus_.get(), GetDBusTaskRunner()) | 176 EXPECT_CALL(*mock_bus_.get(), GetDBusTaskRunner()) |
| 159 .WillRepeatedly(Return(message_loop_.message_loop_proxy().get())); | 177 .WillRepeatedly(Return(message_loop_.message_loop_proxy().get())); |
| 160 | 178 |
| 161 // ShutdownAndBlock() will be called in TearDown(). | 179 // ShutdownAndBlock() will be called in TearDown(). |
| 162 EXPECT_CALL(*mock_bus_.get(), ShutdownAndBlock()).WillOnce(Return()); | 180 EXPECT_CALL(*mock_bus_.get(), ShutdownAndBlock()).WillOnce(Return()); |
| 163 } | 181 } |
| 164 | 182 |
| 165 void ShillClientUnittestBase::TearDown() { | 183 void ShillClientUnittestBase::TearDown() { |
| 166 mock_bus_->ShutdownAndBlock(); | 184 mock_bus_->ShutdownAndBlock(); |
| 167 } | 185 } |
| 168 | 186 |
| 169 void ShillClientUnittestBase::PrepareForMethodCall( | 187 void ShillClientUnittestBase::PrepareForMethodCall( |
| 170 const std::string& method_name, | 188 const std::string& method_name, |
| 171 const ArgumentCheckCallback& argument_checker, | 189 const ArgumentCheckCallback& argument_checker, |
| 172 dbus::Response* response) { | 190 dbus::Response* response) { |
| 173 expected_method_name_ = method_name; | 191 expected_method_name_ = method_name; |
| 174 argument_checker_ = argument_checker; | 192 argument_checker_ = argument_checker; |
| 175 response_ = response; | 193 response_ = response; |
| 176 } | 194 } |
| 177 | 195 |
| 196 void ShillClientUnittestBase::SendPlatformMessageSignal( |
| 197 dbus::Signal* signal) { |
| 198 ASSERT_FALSE(platform_message_handler_.is_null()); |
| 199 platform_message_handler_.Run(signal); |
| 200 } |
| 201 |
| 202 void ShillClientUnittestBase::SendPacketReceievedSignal( |
| 203 dbus::Signal* signal) { |
| 204 ASSERT_FALSE(packet_receieved__handler_.is_null()); |
| 205 packet_receieved__handler_.Run(signal); |
| 206 } |
| 207 |
| 178 void ShillClientUnittestBase::SendPropertyChangedSignal( | 208 void ShillClientUnittestBase::SendPropertyChangedSignal( |
| 179 dbus::Signal* signal) { | 209 dbus::Signal* signal) { |
| 180 ASSERT_FALSE(property_changed_handler_.is_null()); | 210 ASSERT_FALSE(property_changed_handler_.is_null()); |
| 181 property_changed_handler_.Run(signal); | 211 property_changed_handler_.Run(signal); |
| 182 } | 212 } |
| 183 | 213 |
| 184 // static | 214 // static |
| 185 void ShillClientUnittestBase::ExpectPropertyChanged( | 215 void ShillClientUnittestBase::ExpectPropertyChanged( |
| 186 const std::string& expected_name, | 216 const std::string& expected_name, |
| 187 const base::Value* expected_value, | 217 const base::Value* expected_value, |
| 188 const std::string& name, | 218 const std::string& name, |
| 189 const base::Value& value) { | 219 const base::Value& value) { |
| 190 EXPECT_EQ(expected_name, name); | 220 EXPECT_EQ(expected_name, name); |
| 191 EXPECT_TRUE(expected_value->Equals(&value)); | 221 EXPECT_TRUE(expected_value->Equals(&value)); |
| 192 } | 222 } |
| 193 | 223 |
| 194 // static | 224 // static |
| 195 void ShillClientUnittestBase::ExpectNoArgument(dbus::MessageReader* reader) { | 225 void ShillClientUnittestBase::ExpectNoArgument(dbus::MessageReader* reader) { |
| 196 EXPECT_FALSE(reader->HasMoreData()); | 226 EXPECT_FALSE(reader->HasMoreData()); |
| 197 } | 227 } |
| 198 | 228 |
| 199 // static | 229 // static |
| 230 void ShillClientUnittestBase::ExpectUint32Argument( |
| 231 uint32_t expected_value, |
| 232 dbus::MessageReader* reader) { |
| 233 uint32_t value; |
| 234 ASSERT_TRUE(reader->PopUint32(&value)); |
| 235 EXPECT_EQ(expected_value, value); |
| 236 EXPECT_FALSE(reader->HasMoreData()); |
| 237 } |
| 238 |
| 239 // static |
| 240 void ShillClientUnittestBase::ExpectArrayOfBytesArgument( |
| 241 const std::string& expected_bytes, |
| 242 dbus::MessageReader* reader) { |
| 243 const uint8_t* bytes = nullptr; |
| 244 size_t size = 0; |
| 245 ASSERT_TRUE(reader->PopArrayOfBytes(&bytes, &size)); |
| 246 EXPECT_EQ(expected_bytes.size(), size); |
| 247 for (size_t i = 0; i < size; ++i) { |
| 248 EXPECT_EQ(expected_bytes[i], bytes[i]); |
| 249 } |
| 250 EXPECT_FALSE(reader->HasMoreData()); |
| 251 } |
| 252 |
| 253 // static |
| 200 void ShillClientUnittestBase::ExpectStringArgument( | 254 void ShillClientUnittestBase::ExpectStringArgument( |
| 201 const std::string& expected_string, | 255 const std::string& expected_string, |
| 202 dbus::MessageReader* reader) { | 256 dbus::MessageReader* reader) { |
| 203 std::string str; | 257 std::string str; |
| 204 ASSERT_TRUE(reader->PopString(&str)); | 258 ASSERT_TRUE(reader->PopString(&str)); |
| 205 EXPECT_EQ(expected_string, str); | 259 EXPECT_EQ(expected_string, str); |
| 206 EXPECT_FALSE(reader->HasMoreData()); | 260 EXPECT_FALSE(reader->HasMoreData()); |
| 207 } | 261 } |
| 208 | 262 |
| 209 // static | 263 // static |
| (...skipping 26 matching lines...) Expand all Loading... |
| 236 EXPECT_EQ(expected_string, str); | 290 EXPECT_EQ(expected_string, str); |
| 237 scoped_ptr<base::Value> value(dbus::PopDataAsValue(reader)); | 291 scoped_ptr<base::Value> value(dbus::PopDataAsValue(reader)); |
| 238 ASSERT_TRUE(value.get()); | 292 ASSERT_TRUE(value.get()); |
| 239 EXPECT_TRUE(value->Equals(expected_value)); | 293 EXPECT_TRUE(value->Equals(expected_value)); |
| 240 EXPECT_FALSE(reader->HasMoreData()); | 294 EXPECT_FALSE(reader->HasMoreData()); |
| 241 } | 295 } |
| 242 | 296 |
| 243 // static | 297 // static |
| 244 void ShillClientUnittestBase::ExpectDictionaryValueArgument( | 298 void ShillClientUnittestBase::ExpectDictionaryValueArgument( |
| 245 const base::DictionaryValue* expected_dictionary, | 299 const base::DictionaryValue* expected_dictionary, |
| 300 bool string_valued, |
| 246 dbus::MessageReader* reader) { | 301 dbus::MessageReader* reader) { |
| 247 dbus::MessageReader array_reader(NULL); | 302 dbus::MessageReader array_reader(NULL); |
| 248 ASSERT_TRUE(reader->PopArray(&array_reader)); | 303 ASSERT_TRUE(reader->PopArray(&array_reader)); |
| 249 while (array_reader.HasMoreData()) { | 304 while (array_reader.HasMoreData()) { |
| 250 dbus::MessageReader entry_reader(NULL); | 305 dbus::MessageReader entry_reader(NULL); |
| 251 ASSERT_TRUE(array_reader.PopDictEntry(&entry_reader)); | 306 ASSERT_TRUE(array_reader.PopDictEntry(&entry_reader)); |
| 252 std::string key; | 307 std::string key; |
| 253 ASSERT_TRUE(entry_reader.PopString(&key)); | 308 ASSERT_TRUE(entry_reader.PopString(&key)); |
| 309 if (string_valued) { |
| 310 std::string value; |
| 311 std::string expected_value; |
| 312 ASSERT_TRUE(entry_reader.PopString(&value)); |
| 313 EXPECT_TRUE(expected_dictionary->GetStringWithoutPathExpansion( |
| 314 key, &expected_value)); |
| 315 EXPECT_EQ(expected_value, value); |
| 316 continue; |
| 317 } |
| 254 dbus::MessageReader variant_reader(NULL); | 318 dbus::MessageReader variant_reader(NULL); |
| 255 ASSERT_TRUE(entry_reader.PopVariant(&variant_reader)); | 319 ASSERT_TRUE(entry_reader.PopVariant(&variant_reader)); |
| 256 scoped_ptr<base::Value> value; | 320 scoped_ptr<base::Value> value; |
| 257 // Variants in the dictionary can be basic types or string-to-string | 321 // Variants in the dictionary can be basic types or string-to-string |
| 258 // dictinoary. | 322 // dictinoary. |
| 259 switch (variant_reader.GetDataType()) { | 323 switch (variant_reader.GetDataType()) { |
| 260 case dbus::Message::ARRAY: | 324 case dbus::Message::ARRAY: |
| 261 value.reset(PopStringToStringDictionary(&variant_reader)); | 325 value.reset(PopStringToStringDictionary(&variant_reader)); |
| 262 break; | 326 break; |
| 263 case dbus::Message::BOOL: | 327 case dbus::Message::BOOL: |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 | 407 |
| 344 // static | 408 // static |
| 345 void ShillClientUnittestBase::ExpectDictionaryValueResult( | 409 void ShillClientUnittestBase::ExpectDictionaryValueResult( |
| 346 const base::DictionaryValue* expected_result, | 410 const base::DictionaryValue* expected_result, |
| 347 DBusMethodCallStatus call_status, | 411 DBusMethodCallStatus call_status, |
| 348 const base::DictionaryValue& result) { | 412 const base::DictionaryValue& result) { |
| 349 EXPECT_EQ(DBUS_METHOD_CALL_SUCCESS, call_status); | 413 EXPECT_EQ(DBUS_METHOD_CALL_SUCCESS, call_status); |
| 350 ExpectDictionaryValueResultWithoutStatus(expected_result, result); | 414 ExpectDictionaryValueResultWithoutStatus(expected_result, result); |
| 351 } | 415 } |
| 352 | 416 |
| 353 void ShillClientUnittestBase::OnConnectToSignal( | 417 void ShillClientUnittestBase::OnConnectToPlatformMessage( |
| 354 const std::string& interface_name, | 418 const std::string& interface_name, |
| 355 const std::string& signal_name, | 419 const std::string& signal_name, |
| 356 const dbus::ObjectProxy::SignalCallback& signal_callback, | 420 const dbus::ObjectProxy::SignalCallback& signal_callback, |
| 421 const dbus::ObjectProxy::OnConnectedCallback& on_connected_callback) { |
| 422 platform_message_handler_ = signal_callback; |
| 423 const bool success = true; |
| 424 message_loop_.PostTask(FROM_HERE, |
| 425 base::Bind(on_connected_callback, |
| 426 interface_name, |
| 427 signal_name, |
| 428 success)); |
| 429 } |
| 430 |
| 431 void ShillClientUnittestBase::OnConnectToPacketReceived( |
| 432 const std::string& interface_name, |
| 433 const std::string& signal_name, |
| 434 const dbus::ObjectProxy::SignalCallback& signal_callback, |
| 435 const dbus::ObjectProxy::OnConnectedCallback& on_connected_callback) { |
| 436 packet_receieved__handler_ = signal_callback; |
| 437 const bool success = true; |
| 438 message_loop_.PostTask(FROM_HERE, |
| 439 base::Bind(on_connected_callback, |
| 440 interface_name, |
| 441 signal_name, |
| 442 success)); |
| 443 } |
| 444 |
| 445 void ShillClientUnittestBase::OnConnectToPropertyChanged( |
| 446 const std::string& interface_name, |
| 447 const std::string& signal_name, |
| 448 const dbus::ObjectProxy::SignalCallback& signal_callback, |
| 357 const dbus::ObjectProxy::OnConnectedCallback& on_connected_callback) { | 449 const dbus::ObjectProxy::OnConnectedCallback& on_connected_callback) { |
| 358 property_changed_handler_ = signal_callback; | 450 property_changed_handler_ = signal_callback; |
| 359 const bool success = true; | 451 const bool success = true; |
| 360 message_loop_.PostTask(FROM_HERE, | 452 message_loop_.PostTask(FROM_HERE, |
| 361 base::Bind(on_connected_callback, | 453 base::Bind(on_connected_callback, |
| 362 interface_name, | 454 interface_name, |
| 363 signal_name, | 455 signal_name, |
| 364 success)); | 456 success)); |
| 365 } | 457 } |
| 366 | 458 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 378 | 470 |
| 379 void ShillClientUnittestBase::OnCallMethodWithErrorCallback( | 471 void ShillClientUnittestBase::OnCallMethodWithErrorCallback( |
| 380 dbus::MethodCall* method_call, | 472 dbus::MethodCall* method_call, |
| 381 int timeout_ms, | 473 int timeout_ms, |
| 382 const dbus::ObjectProxy::ResponseCallback& response_callback, | 474 const dbus::ObjectProxy::ResponseCallback& response_callback, |
| 383 const dbus::ObjectProxy::ErrorCallback& error_callback) { | 475 const dbus::ObjectProxy::ErrorCallback& error_callback) { |
| 384 OnCallMethod(method_call, timeout_ms, response_callback); | 476 OnCallMethod(method_call, timeout_ms, response_callback); |
| 385 } | 477 } |
| 386 | 478 |
| 387 } // namespace chromeos | 479 } // namespace chromeos |
| OLD | NEW |