blob: 723da1e6d2e18b9a7552b47352871c60a2e34b96 [file] [log] [blame]
// Copyright 2021 The Chromium OS 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 <dbus/mock_bus.h>
#include <dbus/mock_object_proxy.h>
#include <dbus/power_manager/dbus-constants.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "rmad/system/power_manager_client_impl.h"
using testing::_;
using testing::Return;
using testing::StrictMock;
namespace rmad {
class PowerManagerClientTest : public testing::Test {
public:
PowerManagerClientTest()
: mock_bus_(new StrictMock<dbus::MockBus>(dbus::Bus::Options())),
mock_object_proxy_(new StrictMock<dbus::MockObjectProxy>(
mock_bus_.get(),
power_manager::kPowerManagerServiceName,
dbus::ObjectPath(power_manager::kPowerManagerServicePath))) {}
~PowerManagerClientTest() override = default;
dbus::MockObjectProxy* mock_object_proxy() const {
return mock_object_proxy_.get();
}
PowerManagerClientImpl* power_manager_client() const {
return power_manager_client_.get();
}
void SetUp() override {
EXPECT_CALL(*mock_bus_,
GetObjectProxy(
power_manager::kPowerManagerServiceName,
dbus::ObjectPath(power_manager::kPowerManagerServicePath)))
.WillOnce(Return(mock_object_proxy_.get()));
power_manager_client_ = std::make_unique<PowerManagerClientImpl>(mock_bus_);
}
private:
scoped_refptr<dbus::MockBus> mock_bus_;
scoped_refptr<dbus::MockObjectProxy> mock_object_proxy_;
std::unique_ptr<PowerManagerClientImpl> power_manager_client_;
};
TEST_F(PowerManagerClientTest, Restart_Success) {
EXPECT_CALL(*mock_object_proxy(), CallMethodAndBlock(_, _))
.WillOnce(
[](dbus::MethodCall*, int) { return dbus::Response::CreateEmpty(); });
EXPECT_TRUE(power_manager_client()->Restart());
}
TEST_F(PowerManagerClientTest, Restart_Failed) {
EXPECT_CALL(*mock_object_proxy(), CallMethodAndBlock(_, _))
.WillOnce([](dbus::MethodCall*, int) { return nullptr; });
EXPECT_FALSE(power_manager_client()->Restart());
}
TEST_F(PowerManagerClientTest, Shutdown_Success) {
EXPECT_CALL(*mock_object_proxy(), CallMethodAndBlock(_, _))
.WillOnce(
[](dbus::MethodCall*, int) { return dbus::Response::CreateEmpty(); });
EXPECT_TRUE(power_manager_client()->Shutdown());
}
TEST_F(PowerManagerClientTest, Shutdown_Failed) {
EXPECT_CALL(*mock_object_proxy(), CallMethodAndBlock(_, _))
.WillOnce([](dbus::MethodCall*, int) { return nullptr; });
EXPECT_FALSE(power_manager_client()->Shutdown());
}
} // namespace rmad