| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/json/json_writer.h" | 6 #include "base/json/json_writer.h" |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/string_piece.h" | 8 #include "base/string_piece.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chromeos/dbus/dbus_thread_manager.h" | 10 #include "chromeos/dbus/dbus_thread_manager.h" |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 MockDBusThreadManager* mock_dbus_thread_manager = new MockDBusThreadManager; | 81 MockDBusThreadManager* mock_dbus_thread_manager = new MockDBusThreadManager; |
| 82 EXPECT_CALL(*mock_dbus_thread_manager, GetSystemBus()) | 82 EXPECT_CALL(*mock_dbus_thread_manager, GetSystemBus()) |
| 83 .WillRepeatedly(Return(reinterpret_cast<dbus::Bus*>(NULL))); | 83 .WillRepeatedly(Return(reinterpret_cast<dbus::Bus*>(NULL))); |
| 84 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager); | 84 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager); |
| 85 mock_manager_client_ = | 85 mock_manager_client_ = |
| 86 mock_dbus_thread_manager->mock_shill_manager_client(); | 86 mock_dbus_thread_manager->mock_shill_manager_client(); |
| 87 mock_service_client_ = | 87 mock_service_client_ = |
| 88 mock_dbus_thread_manager->mock_shill_service_client(); | 88 mock_dbus_thread_manager->mock_shill_service_client(); |
| 89 | 89 |
| 90 // Initialize DBusThreadManager with a stub implementation. | 90 // Initialize DBusThreadManager with a stub implementation. |
| 91 configuration_handler_.reset(new NetworkConfigurationHandler); | 91 NetworkConfigurationHandler::Initialize(); |
| 92 message_loop_.RunUntilIdle(); | 92 message_loop_.RunUntilIdle(); |
| 93 } | 93 } |
| 94 | 94 |
| 95 virtual void TearDown() OVERRIDE { | 95 virtual void TearDown() OVERRIDE { |
| 96 configuration_handler_.reset(); | 96 NetworkConfigurationHandler::Shutdown(); |
| 97 DBusThreadManager::Shutdown(); | 97 DBusThreadManager::Shutdown(); |
| 98 } | 98 } |
| 99 | 99 |
| 100 // Handles responses for GetProperties method calls. | 100 // Handles responses for GetProperties method calls. |
| 101 void OnGetProperties( | 101 void OnGetProperties( |
| 102 const dbus::ObjectPath& path, | 102 const dbus::ObjectPath& path, |
| 103 const ShillClientHelper::DictionaryValueCallback& callback) { | 103 const ShillClientHelper::DictionaryValueCallback& callback) { |
| 104 callback.Run(DBUS_METHOD_CALL_SUCCESS, *dictionary_value_result_); | 104 callback.Run(DBUS_METHOD_CALL_SUCCESS, *dictionary_value_result_); |
| 105 } | 105 } |
| 106 | 106 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 callback.Run(dbus::ObjectPath("/service/2")); | 152 callback.Run(dbus::ObjectPath("/service/2")); |
| 153 } | 153 } |
| 154 | 154 |
| 155 void OnRemove(const dbus::ObjectPath& service_path, | 155 void OnRemove(const dbus::ObjectPath& service_path, |
| 156 const base::Closure& callback, | 156 const base::Closure& callback, |
| 157 const ShillClientHelper::ErrorCallback& error_callback) { | 157 const ShillClientHelper::ErrorCallback& error_callback) { |
| 158 callback.Run(); | 158 callback.Run(); |
| 159 } | 159 } |
| 160 | 160 |
| 161 protected: | 161 protected: |
| 162 scoped_ptr<NetworkConfigurationHandler> configuration_handler_; | |
| 163 MockShillManagerClient* mock_manager_client_; | 162 MockShillManagerClient* mock_manager_client_; |
| 164 MockShillServiceClient* mock_service_client_; | 163 MockShillServiceClient* mock_service_client_; |
| 165 MessageLoop message_loop_; | 164 MessageLoop message_loop_; |
| 166 base::DictionaryValue* dictionary_value_result_; | 165 base::DictionaryValue* dictionary_value_result_; |
| 167 }; | 166 }; |
| 168 | 167 |
| 169 TEST_F(NetworkConfigurationHandlerTest, GetProperties) { | 168 TEST_F(NetworkConfigurationHandlerTest, GetProperties) { |
| 170 std::string service_path = "/service/1"; | 169 std::string service_path = "/service/1"; |
| 171 std::string expected_json = "{\n \"SSID\": \"MyNetwork\"\n}\n"; | 170 std::string expected_json = "{\n \"SSID\": \"MyNetwork\"\n}\n"; |
| 172 std::string networkName = "MyNetwork"; | 171 std::string networkName = "MyNetwork"; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 184 dbus::ObjectPath(service_path), key, *networkNameValue, | 183 dbus::ObjectPath(service_path), key, *networkNameValue, |
| 185 base::Bind(&base::DoNothing), | 184 base::Bind(&base::DoNothing), |
| 186 base::Bind(&DBusErrorCallback)); | 185 base::Bind(&DBusErrorCallback)); |
| 187 message_loop_.RunUntilIdle(); | 186 message_loop_.RunUntilIdle(); |
| 188 | 187 |
| 189 ShillServiceClient::DictionaryValueCallback get_properties_callback; | 188 ShillServiceClient::DictionaryValueCallback get_properties_callback; |
| 190 EXPECT_CALL(*mock_service_client_, | 189 EXPECT_CALL(*mock_service_client_, |
| 191 GetProperties(_, _)).WillOnce( | 190 GetProperties(_, _)).WillOnce( |
| 192 Invoke(this, | 191 Invoke(this, |
| 193 &NetworkConfigurationHandlerTest::OnGetProperties)); | 192 &NetworkConfigurationHandlerTest::OnGetProperties)); |
| 194 configuration_handler_->GetProperties( | 193 NetworkConfigurationHandler::Get()->GetProperties( |
| 195 service_path, | 194 service_path, |
| 196 base::Bind(&DictionaryValueCallback, | 195 base::Bind(&DictionaryValueCallback, |
| 197 service_path, | 196 service_path, |
| 198 expected_json), | 197 expected_json), |
| 199 base::Bind(&ErrorCallback, false, service_path)); | 198 base::Bind(&ErrorCallback, false, service_path)); |
| 200 message_loop_.RunUntilIdle(); | 199 message_loop_.RunUntilIdle(); |
| 201 } | 200 } |
| 202 | 201 |
| 203 TEST_F(NetworkConfigurationHandlerTest, SetProperties) { | 202 TEST_F(NetworkConfigurationHandlerTest, SetProperties) { |
| 204 std::string service_path = "/service/1"; | 203 std::string service_path = "/service/1"; |
| 205 std::string networkName = "MyNetwork"; | 204 std::string networkName = "MyNetwork"; |
| 206 std::string key = "SSID"; | 205 std::string key = "SSID"; |
| 207 scoped_ptr<base::StringValue> networkNameValue( | 206 scoped_ptr<base::StringValue> networkNameValue( |
| 208 base::Value::CreateStringValue(networkName)); | 207 base::Value::CreateStringValue(networkName)); |
| 209 | 208 |
| 210 base::DictionaryValue value; | 209 base::DictionaryValue value; |
| 211 value.Set(key, base::Value::CreateStringValue(networkName)); | 210 value.Set(key, base::Value::CreateStringValue(networkName)); |
| 212 dictionary_value_result_ = &value; | 211 dictionary_value_result_ = &value; |
| 213 EXPECT_CALL(*mock_manager_client_, | 212 EXPECT_CALL(*mock_manager_client_, |
| 214 ConfigureService(_, _, _)).WillOnce( | 213 ConfigureService(_, _, _)).WillOnce( |
| 215 Invoke(this, | 214 Invoke(this, |
| 216 &NetworkConfigurationHandlerTest::OnSetProperties)); | 215 &NetworkConfigurationHandlerTest::OnSetProperties)); |
| 217 configuration_handler_->SetProperties( | 216 NetworkConfigurationHandler::Get()->SetProperties( |
| 218 service_path, | 217 service_path, |
| 219 value, | 218 value, |
| 220 base::Bind(&base::DoNothing), | 219 base::Bind(&base::DoNothing), |
| 221 base::Bind(&ErrorCallback, false, service_path)); | 220 base::Bind(&ErrorCallback, false, service_path)); |
| 222 message_loop_.RunUntilIdle(); | 221 message_loop_.RunUntilIdle(); |
| 223 } | 222 } |
| 224 | 223 |
| 225 TEST_F(NetworkConfigurationHandlerTest, ClearProperties) { | 224 TEST_F(NetworkConfigurationHandlerTest, ClearProperties) { |
| 226 std::string service_path = "/service/1"; | 225 std::string service_path = "/service/1"; |
| 227 std::string networkName = "MyNetwork"; | 226 std::string networkName = "MyNetwork"; |
| 228 std::string key = "SSID"; | 227 std::string key = "SSID"; |
| 229 scoped_ptr<base::StringValue> networkNameValue( | 228 scoped_ptr<base::StringValue> networkNameValue( |
| 230 base::Value::CreateStringValue(networkName)); | 229 base::Value::CreateStringValue(networkName)); |
| 231 | 230 |
| 232 // First set up a value to clear. | 231 // First set up a value to clear. |
| 233 base::DictionaryValue value; | 232 base::DictionaryValue value; |
| 234 value.Set(key, base::Value::CreateStringValue(networkName)); | 233 value.Set(key, base::Value::CreateStringValue(networkName)); |
| 235 dictionary_value_result_ = &value; | 234 dictionary_value_result_ = &value; |
| 236 EXPECT_CALL(*mock_manager_client_, | 235 EXPECT_CALL(*mock_manager_client_, |
| 237 ConfigureService(_, _, _)).WillOnce( | 236 ConfigureService(_, _, _)).WillOnce( |
| 238 Invoke(this, | 237 Invoke(this, |
| 239 &NetworkConfigurationHandlerTest::OnSetProperties)); | 238 &NetworkConfigurationHandlerTest::OnSetProperties)); |
| 240 configuration_handler_->SetProperties( | 239 NetworkConfigurationHandler::Get()->SetProperties( |
| 241 service_path, | 240 service_path, |
| 242 value, | 241 value, |
| 243 base::Bind(&base::DoNothing), | 242 base::Bind(&base::DoNothing), |
| 244 base::Bind(&ErrorCallback, false, service_path)); | 243 base::Bind(&ErrorCallback, false, service_path)); |
| 245 message_loop_.RunUntilIdle(); | 244 message_loop_.RunUntilIdle(); |
| 246 | 245 |
| 247 // Now clear it. | 246 // Now clear it. |
| 248 std::vector<std::string> values_to_clear; | 247 std::vector<std::string> values_to_clear; |
| 249 values_to_clear.push_back(key); | 248 values_to_clear.push_back(key); |
| 250 EXPECT_CALL(*mock_service_client_, | 249 EXPECT_CALL(*mock_service_client_, |
| 251 ClearProperties(_, _, _, _)).WillOnce( | 250 ClearProperties(_, _, _, _)).WillOnce( |
| 252 Invoke(this, | 251 Invoke(this, |
| 253 &NetworkConfigurationHandlerTest::OnClearProperties)); | 252 &NetworkConfigurationHandlerTest::OnClearProperties)); |
| 254 configuration_handler_->ClearProperties( | 253 NetworkConfigurationHandler::Get()->ClearProperties( |
| 255 service_path, | 254 service_path, |
| 256 values_to_clear, | 255 values_to_clear, |
| 257 base::Bind(&base::DoNothing), | 256 base::Bind(&base::DoNothing), |
| 258 base::Bind(&ErrorCallback, false, service_path)); | 257 base::Bind(&ErrorCallback, false, service_path)); |
| 259 message_loop_.RunUntilIdle(); | 258 message_loop_.RunUntilIdle(); |
| 260 } | 259 } |
| 261 | 260 |
| 262 TEST_F(NetworkConfigurationHandlerTest, ClearPropertiesError) { | 261 TEST_F(NetworkConfigurationHandlerTest, ClearPropertiesError) { |
| 263 std::string service_path = "/service/1"; | 262 std::string service_path = "/service/1"; |
| 264 std::string networkName = "MyNetwork"; | 263 std::string networkName = "MyNetwork"; |
| 265 std::string key = "SSID"; | 264 std::string key = "SSID"; |
| 266 scoped_ptr<base::StringValue> networkNameValue( | 265 scoped_ptr<base::StringValue> networkNameValue( |
| 267 base::Value::CreateStringValue(networkName)); | 266 base::Value::CreateStringValue(networkName)); |
| 268 | 267 |
| 269 // First set up a value to clear. | 268 // First set up a value to clear. |
| 270 base::DictionaryValue value; | 269 base::DictionaryValue value; |
| 271 value.Set(key, base::Value::CreateStringValue(networkName)); | 270 value.Set(key, base::Value::CreateStringValue(networkName)); |
| 272 dictionary_value_result_ = &value; | 271 dictionary_value_result_ = &value; |
| 273 EXPECT_CALL(*mock_manager_client_, | 272 EXPECT_CALL(*mock_manager_client_, |
| 274 ConfigureService(_, _, _)).WillOnce( | 273 ConfigureService(_, _, _)).WillOnce( |
| 275 Invoke(this, | 274 Invoke(this, |
| 276 &NetworkConfigurationHandlerTest::OnSetProperties)); | 275 &NetworkConfigurationHandlerTest::OnSetProperties)); |
| 277 configuration_handler_->SetProperties( | 276 NetworkConfigurationHandler::Get()->SetProperties( |
| 278 service_path, | 277 service_path, |
| 279 value, | 278 value, |
| 280 base::Bind(&base::DoNothing), | 279 base::Bind(&base::DoNothing), |
| 281 base::Bind(&ErrorCallback, false, service_path)); | 280 base::Bind(&ErrorCallback, false, service_path)); |
| 282 message_loop_.RunUntilIdle(); | 281 message_loop_.RunUntilIdle(); |
| 283 | 282 |
| 284 // Now clear it. | 283 // Now clear it. |
| 285 std::vector<std::string> values_to_clear; | 284 std::vector<std::string> values_to_clear; |
| 286 values_to_clear.push_back(key); | 285 values_to_clear.push_back(key); |
| 287 EXPECT_CALL( | 286 EXPECT_CALL( |
| 288 *mock_service_client_, | 287 *mock_service_client_, |
| 289 ClearProperties(_, _, _, _)).WillOnce( | 288 ClearProperties(_, _, _, _)).WillOnce( |
| 290 Invoke(this, | 289 Invoke(this, |
| 291 &NetworkConfigurationHandlerTest::OnClearPropertiesError)); | 290 &NetworkConfigurationHandlerTest::OnClearPropertiesError)); |
| 292 configuration_handler_->ClearProperties( | 291 NetworkConfigurationHandler::Get()->ClearProperties( |
| 293 service_path, | 292 service_path, |
| 294 values_to_clear, | 293 values_to_clear, |
| 295 base::Bind(&base::DoNothing), | 294 base::Bind(&base::DoNothing), |
| 296 base::Bind(&ErrorCallback, true, service_path)); | 295 base::Bind(&ErrorCallback, true, service_path)); |
| 297 message_loop_.RunUntilIdle(); | 296 message_loop_.RunUntilIdle(); |
| 298 } | 297 } |
| 299 | 298 |
| 300 TEST_F(NetworkConfigurationHandlerTest, Connect) { | 299 TEST_F(NetworkConfigurationHandlerTest, Connect) { |
| 301 std::string service_path = "/service/1"; | 300 std::string service_path = "/service/1"; |
| 302 | 301 |
| 303 EXPECT_CALL(*mock_service_client_, | 302 EXPECT_CALL(*mock_service_client_, |
| 304 Connect(_, _, _)).WillOnce( | 303 Connect(_, _, _)).WillOnce( |
| 305 Invoke(this, | 304 Invoke(this, |
| 306 &NetworkConfigurationHandlerTest::OnConnect)); | 305 &NetworkConfigurationHandlerTest::OnConnect)); |
| 307 configuration_handler_->Connect( | 306 NetworkConfigurationHandler::Get()->Connect( |
| 308 service_path, | 307 service_path, |
| 309 base::Bind(&base::DoNothing), | 308 base::Bind(&base::DoNothing), |
| 310 base::Bind(&ErrorCallback, false, service_path)); | 309 base::Bind(&ErrorCallback, false, service_path)); |
| 311 message_loop_.RunUntilIdle(); | 310 message_loop_.RunUntilIdle(); |
| 312 } | 311 } |
| 313 | 312 |
| 314 TEST_F(NetworkConfigurationHandlerTest, Disconnect) { | 313 TEST_F(NetworkConfigurationHandlerTest, Disconnect) { |
| 315 std::string service_path = "/service/1"; | 314 std::string service_path = "/service/1"; |
| 316 | 315 |
| 317 EXPECT_CALL(*mock_service_client_, | 316 EXPECT_CALL(*mock_service_client_, |
| 318 Disconnect(_, _, _)).WillOnce( | 317 Disconnect(_, _, _)).WillOnce( |
| 319 Invoke(this, | 318 Invoke(this, |
| 320 &NetworkConfigurationHandlerTest::OnDisconnect)); | 319 &NetworkConfigurationHandlerTest::OnDisconnect)); |
| 321 configuration_handler_->Disconnect( | 320 NetworkConfigurationHandler::Get()->Disconnect( |
| 322 service_path, | 321 service_path, |
| 323 base::Bind(&base::DoNothing), | 322 base::Bind(&base::DoNothing), |
| 324 base::Bind(&ErrorCallback, false, service_path)); | 323 base::Bind(&ErrorCallback, false, service_path)); |
| 325 message_loop_.RunUntilIdle(); | 324 message_loop_.RunUntilIdle(); |
| 326 } | 325 } |
| 327 | 326 |
| 328 TEST_F(NetworkConfigurationHandlerTest, CreateConfiguration) { | 327 TEST_F(NetworkConfigurationHandlerTest, CreateConfiguration) { |
| 329 std::string expected_json = "{\n \"SSID\": \"MyNetwork\"\n}\n"; | 328 std::string expected_json = "{\n \"SSID\": \"MyNetwork\"\n}\n"; |
| 330 std::string networkName = "MyNetwork"; | 329 std::string networkName = "MyNetwork"; |
| 331 std::string key = "SSID"; | 330 std::string key = "SSID"; |
| 332 scoped_ptr<base::StringValue> networkNameValue( | 331 scoped_ptr<base::StringValue> networkNameValue( |
| 333 base::Value::CreateStringValue(networkName)); | 332 base::Value::CreateStringValue(networkName)); |
| 334 base::DictionaryValue value; | 333 base::DictionaryValue value; |
| 335 value.Set(key, base::Value::CreateStringValue(networkName)); | 334 value.Set(key, base::Value::CreateStringValue(networkName)); |
| 336 | 335 |
| 337 EXPECT_CALL( | 336 EXPECT_CALL( |
| 338 *mock_manager_client_, | 337 *mock_manager_client_, |
| 339 GetService(_, _, _)).WillOnce( | 338 GetService(_, _, _)).WillOnce( |
| 340 Invoke(this, | 339 Invoke(this, |
| 341 &NetworkConfigurationHandlerTest::OnGetService)); | 340 &NetworkConfigurationHandlerTest::OnGetService)); |
| 342 configuration_handler_->CreateConfiguration( | 341 NetworkConfigurationHandler::Get()->CreateConfiguration( |
| 343 value, | 342 value, |
| 344 base::Bind(&StringResultCallback, std::string("/service/2")), | 343 base::Bind(&StringResultCallback, std::string("/service/2")), |
| 345 base::Bind(&ErrorCallback, false, std::string(""))); | 344 base::Bind(&ErrorCallback, false, std::string(""))); |
| 346 message_loop_.RunUntilIdle(); | 345 message_loop_.RunUntilIdle(); |
| 347 } | 346 } |
| 348 | 347 |
| 349 TEST_F(NetworkConfigurationHandlerTest, RemoveConfiguration) { | 348 TEST_F(NetworkConfigurationHandlerTest, RemoveConfiguration) { |
| 350 std::string service_path = "/service/1"; | 349 std::string service_path = "/service/1"; |
| 351 | 350 |
| 352 EXPECT_CALL( | 351 EXPECT_CALL( |
| 353 *mock_service_client_, | 352 *mock_service_client_, |
| 354 Remove(_, _, _)).WillOnce( | 353 Remove(_, _, _)).WillOnce( |
| 355 Invoke(this, | 354 Invoke(this, |
| 356 &NetworkConfigurationHandlerTest::OnRemove)); | 355 &NetworkConfigurationHandlerTest::OnRemove)); |
| 357 configuration_handler_->RemoveConfiguration( | 356 NetworkConfigurationHandler::Get()->RemoveConfiguration( |
| 358 service_path, | 357 service_path, |
| 359 base::Bind(&base::DoNothing), | 358 base::Bind(&base::DoNothing), |
| 360 base::Bind(&ErrorCallback, false, service_path)); | 359 base::Bind(&ErrorCallback, false, service_path)); |
| 361 message_loop_.RunUntilIdle(); | 360 message_loop_.RunUntilIdle(); |
| 362 } | 361 } |
| 363 | 362 |
| 364 } // namespace chromeos | 363 } // namespace chromeos |
| OLD | NEW |