blob: f7a435b5b67d51a38ee94c7699cac162a2c483ec [file] [log] [blame]
Darin Petkova9b1fed2012-02-29 11:49:05 +01001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2// 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/rpc_task.h"
6
7#include <gtest/gtest.h>
8
9#include "shill/nice_mock_control.h"
10#include "shill/mock_adaptors.h"
11
12using std::map;
13using std::string;
mukesh agrawalae30e9e2013-05-28 14:09:16 -070014using std::vector;
Darin Petkova9b1fed2012-02-29 11:49:05 +010015
16namespace shill {
17
18class RPCTaskTest : public testing::Test,
19 public RPCTaskDelegate {
20 public:
Darin Petkov209e6292012-04-20 11:33:32 +020021 RPCTaskTest()
22 : get_login_calls_(0),
23 notify_calls_(0),
24 task_(&control_, this) {}
Darin Petkova9b1fed2012-02-29 11:49:05 +010025
26 // Inherited from RPCTaskDelegate.
Darin Petkov209e6292012-04-20 11:33:32 +020027 virtual void GetLogin(string *user, string *password);
Darin Petkova9b1fed2012-02-29 11:49:05 +010028 virtual void Notify(const string &reason, const map<string, string> &dict);
29
30 protected:
Darin Petkov209e6292012-04-20 11:33:32 +020031 int get_login_calls_;
Darin Petkova9b1fed2012-02-29 11:49:05 +010032 int notify_calls_;
Darin Petkov209e6292012-04-20 11:33:32 +020033 string *last_user_;
34 string *last_password_;
Darin Petkova9b1fed2012-02-29 11:49:05 +010035 string last_notify_reason_;
36 map<string, string> last_notify_dict_;
37 NiceMockControl control_;
38 RPCTask task_;
39};
40
Darin Petkov209e6292012-04-20 11:33:32 +020041void RPCTaskTest::GetLogin(string *user, string *password) {
42 get_login_calls_++;
43 last_user_ = user;
44 last_password_ = password;
45}
46
Darin Petkova9b1fed2012-02-29 11:49:05 +010047void RPCTaskTest::Notify(const string &reason,
48 const map<string, string> &dict) {
49
50 notify_calls_++;
51 last_notify_reason_ = reason;
52 last_notify_dict_ = dict;
53}
54
mukesh agrawalae30e9e2013-05-28 14:09:16 -070055TEST_F(RPCTaskTest, GetEnvironment) {
56 vector<string> env = task_.GetEnvironment();
57 ASSERT_EQ(2, env.size());
58 EXPECT_EQ(
59 string(kRPCTaskServiceVariable) + "=" + RPCTaskMockAdaptor::kRpcConnId,
60 env[0]);
61 EXPECT_EQ(string(kRPCTaskPathVariable) + "=" + RPCTaskMockAdaptor::kRpcId,
62 env[1]);
63}
64
Darin Petkova9b1fed2012-02-29 11:49:05 +010065TEST_F(RPCTaskTest, GetRpcIdentifiers) {
66 EXPECT_EQ(RPCTaskMockAdaptor::kRpcId, task_.GetRpcIdentifier());
Darin Petkova9b1fed2012-02-29 11:49:05 +010067 EXPECT_EQ(RPCTaskMockAdaptor::kRpcConnId, task_.GetRpcConnectionIdentifier());
68}
69
Darin Petkov209e6292012-04-20 11:33:32 +020070TEST_F(RPCTaskTest, GetLogin) {
71 string user, password;
72 task_.GetLogin(&user, &password);
73 EXPECT_EQ(1, get_login_calls_);
74 EXPECT_EQ(&user, last_user_);
75 EXPECT_EQ(&password, last_password_);
76}
77
Darin Petkova9b1fed2012-02-29 11:49:05 +010078TEST_F(RPCTaskTest, Notify) {
79 static const char kReason[] = "up";
80 map<string, string> dict;
81 dict["foo"] = "bar";
82 task_.Notify(kReason, dict);
83 EXPECT_EQ(1, notify_calls_);
84 EXPECT_EQ(kReason, last_notify_reason_);
85 EXPECT_EQ("bar", last_notify_dict_["foo"]);
86}
87
88} // namespace shill