| Index: chromeos/dbus/flimflam_device_client_unittest.cc
|
| diff --git a/chromeos/dbus/flimflam_device_client_unittest.cc b/chromeos/dbus/flimflam_device_client_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..516ceb48aa166d9161ba11bea189cc9c0cb5397e
|
| --- /dev/null
|
| +++ b/chromeos/dbus/flimflam_device_client_unittest.cc
|
| @@ -0,0 +1,273 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/values.h"
|
| +#include "chromeos/dbus/flimflam_client_unittest_base.h"
|
| +#include "chromeos/dbus/flimflam_device_client.h"
|
| +#include "dbus/message.h"
|
| +#include "dbus/object_path.h"
|
| +#include "dbus/values_util.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/cros_system_api/dbus/service_constants.h"
|
| +
|
| +namespace chromeos {
|
| +
|
| +namespace {
|
| +
|
| +const char kExampleDevicePath[] = "/foo/bar";
|
| +
|
| +// Expects the reader to have a string and a bool.
|
| +void ExpectStringAndBoolArguments(const std::string& expected_string,
|
| + bool expected_bool,
|
| + dbus::MessageReader* reader) {
|
| + std::string arg1;
|
| + ASSERT_TRUE(reader->PopString(&arg1));
|
| + EXPECT_EQ(expected_string, arg1);
|
| + bool arg2 = false;
|
| + ASSERT_TRUE(reader->PopBool(&arg2));
|
| + EXPECT_EQ(expected_bool, arg2);
|
| + EXPECT_FALSE(reader->HasMoreData());
|
| +}
|
| +
|
| +// Expects the reader to have two strings.
|
| +void ExpectTwoStringArguments(const std::string& expected_string1,
|
| + const std::string& expected_string2,
|
| + dbus::MessageReader* reader) {
|
| + std::string arg1;
|
| + ASSERT_TRUE(reader->PopString(&arg1));
|
| + EXPECT_EQ(expected_string1, arg1);
|
| + std::string arg2;
|
| + ASSERT_TRUE(reader->PopString(&arg2));
|
| + EXPECT_EQ(expected_string2, arg2);
|
| + EXPECT_FALSE(reader->HasMoreData());
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +class FlimflamDeviceClientTest : public FlimflamClientUnittestBase {
|
| + public:
|
| + FlimflamDeviceClientTest()
|
| + : FlimflamClientUnittestBase(flimflam::kFlimflamDeviceInterface,
|
| + dbus::ObjectPath(kExampleDevicePath)) {
|
| + }
|
| +
|
| + virtual void SetUp() {
|
| + FlimflamClientUnittestBase::SetUp();
|
| + // Create a client with the mock bus.
|
| + client_.reset(FlimflamDeviceClient::Create(REAL_DBUS_CLIENT_IMPLEMENTATION,
|
| + mock_bus_));
|
| + // Run the message loop to run the signal connection result callback.
|
| + message_loop_.RunAllPending();
|
| + }
|
| +
|
| + virtual void TearDown() {
|
| + FlimflamClientUnittestBase::TearDown();
|
| + }
|
| +
|
| + protected:
|
| + scoped_ptr<FlimflamDeviceClient> client_;
|
| +};
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, PropertyChanged) {
|
| + const bool kValue = true;
|
| + // Create a signal.
|
| + dbus::Signal signal(flimflam::kFlimflamDeviceInterface,
|
| + flimflam::kMonitorPropertyChanged);
|
| + dbus::MessageWriter writer(&signal);
|
| + writer.AppendString(flimflam::kCellularAllowRoamingProperty);
|
| + writer.AppendVariantOfBool(kValue);
|
| +
|
| + // Set expectations.
|
| + const base::FundamentalValue value(kValue);
|
| + client_->SetPropertyChangedHandler(
|
| + dbus::ObjectPath(kExampleDevicePath),
|
| + base::Bind(&ExpectPropertyChanged,
|
| + flimflam::kCellularAllowRoamingProperty,
|
| + &value));
|
| + // Run the signal callback.
|
| + SendPropertyChangedSignal(&signal);
|
| +
|
| + // Reset the handler.
|
| + client_->ResetPropertyChangedHandler(dbus::ObjectPath(kExampleDevicePath));
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, GetProperties) {
|
| + const bool kValue = true;
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| + dbus::MessageWriter writer(response.get());
|
| + dbus::MessageWriter array_writer(NULL);
|
| + writer.OpenArray("{sv}", &array_writer);
|
| + dbus::MessageWriter entry_writer(NULL);
|
| + array_writer.OpenDictEntry(&entry_writer);
|
| + entry_writer.AppendString(flimflam::kCellularAllowRoamingProperty);
|
| + entry_writer.AppendVariantOfBool(kValue);
|
| + array_writer.CloseContainer(&entry_writer);
|
| + writer.CloseContainer(&array_writer);
|
| +
|
| + // Set expectations.
|
| + base::DictionaryValue value;
|
| + value.SetWithoutPathExpansion(flimflam::kCellularAllowRoamingProperty,
|
| + base::Value::CreateBooleanValue(kValue));
|
| + PrepareForMethodCall(flimflam::kGetPropertiesFunction,
|
| + base::Bind(&ExpectNoArgument),
|
| + response.get());
|
| + // Call method.
|
| + client_->GetProperties(dbus::ObjectPath(kExampleDevicePath),
|
| + base::Bind(&ExpectDictionaryValueResult, &value));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, ProposeScan) {
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kProposeScanFunction,
|
| + base::Bind(&ExpectNoArgument),
|
| + response.get());
|
| + // Call method.
|
| + client_->ProposeScan(dbus::ObjectPath(kExampleDevicePath),
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, SetProperty) {
|
| + const bool kValue = true;
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Set expectations.
|
| + const base::FundamentalValue value(kValue);
|
| + PrepareForMethodCall(flimflam::kSetPropertyFunction,
|
| + base::Bind(&ExpectStringAndValueArguments,
|
| + flimflam::kCellularAllowRoamingProperty,
|
| + &value),
|
| + response.get());
|
| + // Call method.
|
| + client_->SetProperty(dbus::ObjectPath(kExampleDevicePath),
|
| + flimflam::kCellularAllowRoamingProperty,
|
| + value,
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, ClearProperty) {
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kClearPropertyFunction,
|
| + base::Bind(&ExpectStringArgument,
|
| + flimflam::kCellularAllowRoamingProperty),
|
| + response.get());
|
| + // Call method.
|
| + client_->ClearProperty(dbus::ObjectPath(kExampleDevicePath),
|
| + flimflam::kCellularAllowRoamingProperty,
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, RequirePin) {
|
| + const char kPin[] = "123456";
|
| + const bool kRequired = true;
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kRequirePinFunction,
|
| + base::Bind(&ExpectStringAndBoolArguments,
|
| + kPin,
|
| + kRequired),
|
| + response.get());
|
| + // Call method.
|
| + client_->RequirePin(dbus::ObjectPath(kExampleDevicePath),
|
| + kPin,
|
| + kRequired,
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, EnterPin) {
|
| + const char kPin[] = "123456";
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kEnterPinFunction,
|
| + base::Bind(&ExpectStringArgument,
|
| + kPin),
|
| + response.get());
|
| + // Call method.
|
| + client_->EnterPin(dbus::ObjectPath(kExampleDevicePath),
|
| + kPin,
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, UnblockPin) {
|
| + const char kPuk[] = "987654";
|
| + const char kPin[] = "123456";
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kUnblockPinFunction,
|
| + base::Bind(&ExpectTwoStringArguments, kPuk, kPin),
|
| + response.get());
|
| + // Call method.
|
| + client_->UnblockPin(dbus::ObjectPath(kExampleDevicePath),
|
| + kPuk,
|
| + kPin,
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, ChangePin) {
|
| + const char kOldPin[] = "123456";
|
| + const char kNewPin[] = "234567";
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kChangePinFunction,
|
| + base::Bind(&ExpectTwoStringArguments,
|
| + kOldPin,
|
| + kNewPin),
|
| + response.get());
|
| + // Call method.
|
| + client_->ChangePin(dbus::ObjectPath(kExampleDevicePath),
|
| + kOldPin,
|
| + kNewPin,
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamDeviceClientTest, Register) {
|
| + const char kNetworkId[] = "networkid";
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kRegisterFunction,
|
| + base::Bind(&ExpectStringArgument, kNetworkId),
|
| + response.get());
|
| + // Call method.
|
| + client_->Register(dbus::ObjectPath(kExampleDevicePath),
|
| + kNetworkId,
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +} // namespace chromeos
|
|
|