| Index: chromeos/dbus/flimflam_profile_client_unittest.cc
|
| diff --git a/chromeos/dbus/flimflam_profile_client_unittest.cc b/chromeos/dbus/flimflam_profile_client_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7e2e837179eadfaede3a32fe934cec364581b9c9
|
| --- /dev/null
|
| +++ b/chromeos/dbus/flimflam_profile_client_unittest.cc
|
| @@ -0,0 +1,160 @@
|
| +// 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_profile_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 kDefaultProfilePath[] = "/profile/default";
|
| +const char kExampleEntryPath[] = "example_entry_path";
|
| +
|
| +void AppendVariantOfArrayOfStrings(dbus::MessageWriter* writer,
|
| + const std::vector<std::string>& strings) {
|
| + dbus::MessageWriter variant_writer(NULL);
|
| + writer->OpenVariant("as", &variant_writer);
|
| + variant_writer.AppendArrayOfStrings(strings);
|
| + writer->CloseContainer(&variant_writer);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +class FlimflamProfileClientTest : public FlimflamClientUnittestBase {
|
| + public:
|
| + FlimflamProfileClientTest()
|
| + : FlimflamClientUnittestBase(flimflam::kFlimflamProfileInterface,
|
| + dbus::ObjectPath(kDefaultProfilePath)) {
|
| + }
|
| +
|
| + virtual void SetUp() {
|
| + FlimflamClientUnittestBase::SetUp();
|
| + // Create a client with the mock bus.
|
| + client_.reset(FlimflamProfileClient::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<FlimflamProfileClient> client_;
|
| +};
|
| +
|
| +TEST_F(FlimflamProfileClientTest, PropertyChanged) {
|
| + // Create a signal.
|
| + dbus::Signal signal(flimflam::kFlimflamProfileInterface,
|
| + flimflam::kMonitorPropertyChanged);
|
| + dbus::MessageWriter writer(&signal);
|
| + writer.AppendString(flimflam::kEntriesProperty);
|
| + AppendVariantOfArrayOfStrings(&writer,
|
| + std::vector<std::string>(1, kExampleEntryPath));
|
| +
|
| + // Set expectations.
|
| + base::ListValue* value = new base::ListValue;
|
| + value->Append(base::Value::CreateStringValue(kExampleEntryPath));
|
| +
|
| + client_->SetPropertyChangedHandler(dbus::ObjectPath(kDefaultProfilePath),
|
| + base::Bind(&ExpectPropertyChanged,
|
| + flimflam::kEntriesProperty,
|
| + value));
|
| + // Run the signal callback.
|
| + SendPropertyChangedSignal(&signal);
|
| +
|
| + // Reset the handler.
|
| + client_->ResetPropertyChangedHandler(dbus::ObjectPath(kDefaultProfilePath));
|
| +}
|
| +
|
| +TEST_F(FlimflamProfileClientTest, GetProperties) {
|
| + // 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::kEntriesProperty);
|
| + AppendVariantOfArrayOfStrings(&entry_writer,
|
| + std::vector<std::string>(1, kExampleEntryPath));
|
| + array_writer.CloseContainer(&entry_writer);
|
| + writer.CloseContainer(&array_writer);
|
| +
|
| + // Create the expected value.
|
| + base::ListValue* entries = new base::ListValue;
|
| + entries->Append(base::Value::CreateStringValue(kExampleEntryPath));
|
| + base::DictionaryValue value;
|
| + value.SetWithoutPathExpansion(flimflam::kEntriesProperty, entries);
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kGetPropertiesFunction,
|
| + base::Bind(&ExpectNoArgument),
|
| + response.get());
|
| + // Call method.
|
| + client_->GetProperties(dbus::ObjectPath(kDefaultProfilePath),
|
| + base::Bind(&ExpectDictionaryValueResult, &value));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamProfileClientTest, GetEntry) {
|
| + // 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::kTypeProperty);
|
| + entry_writer.AppendVariantOfString(flimflam::kTypeWifi);
|
| + array_writer.CloseContainer(&entry_writer);
|
| + writer.CloseContainer(&array_writer);
|
| +
|
| + // Create the expected value.
|
| + base::DictionaryValue value;
|
| + value.SetWithoutPathExpansion(
|
| + flimflam::kTypeProperty,
|
| + base::Value::CreateStringValue(flimflam::kTypeWifi));
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kGetEntryFunction,
|
| + base::Bind(&ExpectStringArgument, kExampleEntryPath),
|
| + response.get());
|
| + // Call method.
|
| + client_->GetEntry(dbus::ObjectPath(kDefaultProfilePath),
|
| + kExampleEntryPath,
|
| + base::Bind(&ExpectDictionaryValueResult, &value));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +TEST_F(FlimflamProfileClientTest, DeleteEntry) {
|
| + // Create response.
|
| + scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
|
| +
|
| + // Create the expected value.
|
| + base::DictionaryValue value;
|
| + value.SetWithoutPathExpansion(flimflam::kOfflineModeProperty,
|
| + base::Value::CreateBooleanValue(true));
|
| + // Set expectations.
|
| + PrepareForMethodCall(flimflam::kDeleteEntryFunction,
|
| + base::Bind(&ExpectStringArgument, kExampleEntryPath),
|
| + response.get());
|
| + // Call method.
|
| + client_->DeleteEntry(dbus::ObjectPath(kDefaultProfilePath),
|
| + kExampleEntryPath,
|
| + base::Bind(&ExpectNoResultValue));
|
| + // Run the message loop.
|
| + message_loop_.RunAllPending();
|
| +}
|
| +
|
| +} // namespace chromeos
|
|
|