summaryrefslogtreecommitdiffstats
path: root/chromeos/dbus/flimflam_network_client_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromeos/dbus/flimflam_network_client_unittest.cc')
-rw-r--r--chromeos/dbus/flimflam_network_client_unittest.cc124
1 files changed, 124 insertions, 0 deletions
diff --git a/chromeos/dbus/flimflam_network_client_unittest.cc b/chromeos/dbus/flimflam_network_client_unittest.cc
new file mode 100644
index 0000000..f17bdbf
--- /dev/null
+++ b/chromeos/dbus/flimflam_network_client_unittest.cc
@@ -0,0 +1,124 @@
+// 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 "chromeos/dbus/flimflam_client_unittest_base.h"
+#include "chromeos/dbus/flimflam_network_client.h"
+#include "dbus/message.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 {
+
+class FlimflamNetworkClientTest : public FlimflamClientUnittestBase {
+ public:
+ FlimflamNetworkClientTest()
+ : FlimflamClientUnittestBase(flimflam::kFlimflamNetworkInterface) {
+ }
+
+ virtual void SetUp() {
+ FlimflamClientUnittestBase::SetUp();
+ // Create a client with the mock bus.
+ client_.reset(FlimflamNetworkClient::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<FlimflamNetworkClient> client_;
+};
+
+TEST_F(FlimflamNetworkClientTest, PropertyChanged) {
+ // Create a signal.
+ const base::FundamentalValue kConnected(true);
+ dbus::Signal signal(flimflam::kFlimflamNetworkInterface,
+ flimflam::kMonitorPropertyChanged);
+ dbus::MessageWriter writer(&signal);
+ writer.AppendString(flimflam::kConnectedProperty);
+ dbus::AppendBasicTypeValueDataAsVariant(&writer, kConnected);
+
+ // Set expectations.
+ client_->SetPropertyChangedHandler(base::Bind(&ExpectPropertyChanged,
+ flimflam::kConnectedProperty,
+ &kConnected));
+ // Run the signal callback.
+ SendPropertyChangedSignal(&signal);
+
+ // Reset the handler.
+ client_->ResetPropertyChangedHandler();
+}
+
+TEST_F(FlimflamNetworkClientTest, GetProperties) {
+ const char kAddress[] = "address";
+ const char kName[] = "name";
+ const uint8 kSignalStrength = 1;
+ const uint32 kWifiChannel = 1;
+ const bool kConnected = 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);
+ // Append address.
+ array_writer.OpenDictEntry(&entry_writer);
+ entry_writer.AppendString(flimflam::kAddressProperty);
+ entry_writer.AppendVariantOfString(kAddress);
+ array_writer.CloseContainer(&entry_writer);
+ // Append name.
+ array_writer.OpenDictEntry(&entry_writer);
+ entry_writer.AppendString(flimflam::kNameProperty);
+ entry_writer.AppendVariantOfString(kName);
+ array_writer.CloseContainer(&entry_writer);
+ // Append signal strength.
+ array_writer.OpenDictEntry(&entry_writer);
+ entry_writer.AppendString(flimflam::kSignalStrengthProperty);
+ entry_writer.AppendVariantOfByte(kSignalStrength);
+ array_writer.CloseContainer(&entry_writer);
+ // Append Wifi channel.
+ array_writer.OpenDictEntry(&entry_writer);
+ entry_writer.AppendString(flimflam::kWifiChannelProperty);
+ entry_writer.AppendVariantOfUint32(kWifiChannel);
+ array_writer.CloseContainer(&entry_writer);
+ // Append connected.
+ array_writer.OpenDictEntry(&entry_writer);
+ entry_writer.AppendString(flimflam::kConnectedProperty);
+ entry_writer.AppendVariantOfBool(kConnected);
+ array_writer.CloseContainer(&entry_writer);
+ writer.CloseContainer(&array_writer);
+
+ // Create the expected value.
+ base::DictionaryValue value;
+ value.SetWithoutPathExpansion(flimflam::kAddressProperty,
+ base::Value::CreateStringValue(kAddress));
+ value.SetWithoutPathExpansion(flimflam::kNameProperty,
+ base::Value::CreateStringValue(kName));
+ value.SetWithoutPathExpansion(
+ flimflam::kSignalStrengthProperty,
+ base::Value::CreateIntegerValue(kSignalStrength));
+ // WiFi.Channel is set as a double because uint32 is larger than int32.
+ value.SetWithoutPathExpansion(flimflam::kWifiChannelProperty,
+ base::Value::CreateDoubleValue(kWifiChannel));
+ value.SetWithoutPathExpansion(flimflam::kConnectedProperty,
+ base::Value::CreateBooleanValue(kConnected));
+
+ // Set expectations.
+ PrepareForMethodCall(flimflam::kGetPropertiesFunction,
+ base::Bind(&ExpectNoArgument),
+ response.get());
+ // Call method.
+ client_->GetProperties(base::Bind(&ExpectDictionaryValueResult,
+ &value));
+ // Run the message loop.
+ message_loop_.RunAllPending();
+}
+
+} // namespace chromeos