blob: f920e9b3fd838eba88825ba42ad316906ad00868 [file] [log] [blame]
Chris Masone7156c922011-08-23 20:36:21 -07001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
Chris Masone88cbd5f2011-07-03 14:30:04 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "shill/default_profile.h"
6
7#include <map>
8#include <string>
Chris Masone877ff982011-09-21 16:18:24 -07009#include <vector>
Chris Masone88cbd5f2011-07-03 14:30:04 -070010
11#include <chromeos/dbus/service_constants.h>
12#include <gtest/gtest.h>
13#include <gmock/gmock.h>
14
15#include "shill/manager.h"
16#include "shill/mock_control.h"
Chris Masone877ff982011-09-21 16:18:24 -070017#include "shill/mock_device.h"
Chris Masoneaa482372011-09-14 16:40:37 -070018#include "shill/mock_store.h"
Chris Masone88cbd5f2011-07-03 14:30:04 -070019#include "shill/property_store_unittest.h"
20
21using std::map;
22using std::string;
Chris Masone877ff982011-09-21 16:18:24 -070023using std::vector;
Chris Masone88cbd5f2011-07-03 14:30:04 -070024using ::testing::_;
Chris Masoneaa482372011-09-14 16:40:37 -070025using ::testing::Return;
Chris Masone88cbd5f2011-07-03 14:30:04 -070026
27namespace shill {
28
29class DefaultProfileTest : public PropertyStoreTest {
30 public:
Chris Masone7aa5f902011-07-11 11:13:35 -070031 DefaultProfileTest()
Chris Masone2176a882011-09-14 22:29:15 -070032 : profile_(new DefaultProfile(control_interface(),
Chris Masone9d779932011-08-25 16:33:41 -070033 manager(),
Chris Masone2ae797d2011-08-23 20:41:00 -070034 FilePath(kTestStoragePath),
Chris Masone877ff982011-09-21 16:18:24 -070035 properties_)),
36 device_(new MockDevice(control_interface(),
37 dispatcher(),
38 manager(),
39 "null0",
40 "addr0",
41 0)) {
Chris Masone7aa5f902011-07-11 11:13:35 -070042 }
Chris Masone88cbd5f2011-07-03 14:30:04 -070043
44 virtual ~DefaultProfileTest() {}
45
46 protected:
Chris Masone2ae797d2011-08-23 20:41:00 -070047 static const char kTestStoragePath[];
48
Chris Masone7aa5f902011-07-11 11:13:35 -070049 ProfileRefPtr profile_;
Chris Masone877ff982011-09-21 16:18:24 -070050 scoped_refptr<MockDevice> device_;
Chris Masone88cbd5f2011-07-03 14:30:04 -070051 Manager::Properties properties_;
52};
53
Chris Masone2ae797d2011-08-23 20:41:00 -070054const char DefaultProfileTest::kTestStoragePath[] = "/no/where";
55
Chris Masone88cbd5f2011-07-03 14:30:04 -070056TEST_F(DefaultProfileTest, GetProperties) {
57 Error error(Error::kInvalidProperty, "");
58 {
59 map<string, ::DBus::Variant> props;
60 ::DBus::Error dbus_error;
Chris Masone7aa5f902011-07-11 11:13:35 -070061 DBusAdaptor::GetProperties(profile_->store(), &props, &dbus_error);
Chris Masone88cbd5f2011-07-03 14:30:04 -070062 ASSERT_FALSE(props.find(flimflam::kOfflineModeProperty) == props.end());
63 EXPECT_FALSE(props[flimflam::kOfflineModeProperty].reader().get_bool());
64 }
65 properties_.offline_mode = true;
66 {
67 map<string, ::DBus::Variant> props;
68 ::DBus::Error dbus_error;
Chris Masone7aa5f902011-07-11 11:13:35 -070069 DBusAdaptor::GetProperties(profile_->store(), &props, &dbus_error);
Chris Masone88cbd5f2011-07-03 14:30:04 -070070 ASSERT_FALSE(props.find(flimflam::kOfflineModeProperty) == props.end());
71 EXPECT_TRUE(props[flimflam::kOfflineModeProperty].reader().get_bool());
72 }
73 {
74 Error error(Error::kInvalidProperty, "");
75 EXPECT_FALSE(
mukesh agrawalde29fa82011-09-16 16:16:36 -070076 profile_->mutable_store()->SetBoolProperty(
77 flimflam::kOfflineModeProperty,
78 true,
79 &error));
Chris Masone88cbd5f2011-07-03 14:30:04 -070080 }
81}
82
Chris Masoneaa482372011-09-14 16:40:37 -070083TEST_F(DefaultProfileTest, Save) {
84 MockStore storage;
85 EXPECT_CALL(storage, SetString(DefaultProfile::kStorageId,
86 DefaultProfile::kStorageName,
87 DefaultProfile::kDefaultId))
88 .WillOnce(Return(true));
89 EXPECT_CALL(storage, SetString(DefaultProfile::kStorageId,
90 DefaultProfile::kStorageCheckPortalList,
91 ""))
92 .WillOnce(Return(true));
93 EXPECT_CALL(storage, SetBool(DefaultProfile::kStorageId,
94 DefaultProfile::kStorageOfflineMode,
95 false))
96 .WillOnce(Return(true));
Chris Masone877ff982011-09-21 16:18:24 -070097
98 EXPECT_CALL(*device_.get(), Save(&storage)).WillOnce(Return(true));
99
100 manager()->RegisterDevice(device_);
Chris Masoneaa482372011-09-14 16:40:37 -0700101 ASSERT_TRUE(profile_->Save(&storage));
Chris Masone877ff982011-09-21 16:18:24 -0700102 manager()->DeregisterDevice(device_);
Chris Masoneaa482372011-09-14 16:40:37 -0700103}
104
Chris Masone2ae797d2011-08-23 20:41:00 -0700105TEST_F(DefaultProfileTest, GetStoragePath) {
106 FilePath path;
107 EXPECT_TRUE(profile_->GetStoragePath(&path));
108 EXPECT_EQ(string(kTestStoragePath) + "/default.profile", path.value());
109}
110
Chris Masone88cbd5f2011-07-03 14:30:04 -0700111} // namespace shill