• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "power_mock_proxy_test.h"
17 
18 #include <datetime_ex.h>
19 
20 #include "mock_power_remote_object.h"
21 #include "parcel.h"
22 #include "power_log.h"
23 #include "power_mgr_client.h"
24 #include "power_mgr_proxy.h"
25 #include "power_mode_callback_proxy.h"
26 #include "power_state_callback_proxy.h"
27 #include "power_runninglock_callback_proxy.h"
28 #include "power_state_machine_info.h"
29 #include "running_lock.h"
30 #include "running_lock_info.h"
31 #include "running_lock_token_stub.h"
32 #include "power_mgr_async_reply_stub.h"
33 
34 using namespace testing::ext;
35 using namespace OHOS::PowerMgr;
36 using namespace OHOS;
37 using namespace std;
38 
OnPowerModeChanged(PowerMode mode)39 void PowerMockProxyTest::PowerModeTestCallback::OnPowerModeChanged(PowerMode mode)
40 {
41     POWER_HILOGI(LABEL_TEST, "PowerModeTestCallback::OnPowerModeChanged.");
42 }
43 
OnPowerStateChanged(PowerState state)44 void PowerMockProxyTest::PowerStateTestCallback::OnPowerStateChanged(PowerState state)
45 {
46     POWER_HILOGI(LABEL_TEST, "PowerStateTestCallback::OnPowerStateChanged.");
47 }
48 
HandleRunningLockMessage(std::string message)49 void PowerMockProxyTest::PowerRunningLockTestCallback::HandleRunningLockMessage(std::string message)
50 {
51     POWER_HILOGI(LABEL_TEST, "PowerRunningLockTestCallback::HandleRunningLockMessage.");
52 }
53 namespace {
54 /**
55  * @tc.name: PowerMockProxyTest001
56  * @tc.desc: Test proxy when the parcel is mock
57  * @tc.type: FUNC
58  */
59 HWTEST_F(PowerMockProxyTest, PowerMockProxyTest001, TestSize.Level2)
60 {
61     POWER_HILOGI(LABEL_TEST, "PowerMockProxyTest001 function start!");
62     pid_t uid = 0;
63     pid_t pid = 0;
64     int32_t powerError = 1;
65     int32_t timeOutMs = -1;
66     std::string name;
67     bool lockTypeSupported = false;
68     bool isUsed = false;
69     sptr<IPCObjectStub> remote = new IPCObjectStub();
70     std::shared_ptr<PowerMgrProxy> sptrProxy = std::make_shared<PowerMgrProxy>(remote);
71     sptr<IRemoteObject> token = new RunningLockTokenStub();
72     RunningLockInfo info("test1", RunningLockType::RUNNINGLOCK_SCREEN);
73     sptrProxy->CreateRunningLockIpc(token, info, powerError);
74     EXPECT_FALSE(powerError == static_cast<int32_t>(PowerErrors::ERR_OK));
75     EXPECT_NE(sptrProxy->ReleaseRunningLockIpc(token, name), ERR_OK);
76     sptrProxy->IsRunningLockTypeSupportedIpc(
77         static_cast<int32_t>(RunningLockType::RUNNINGLOCK_BUTT), lockTypeSupported);
78     EXPECT_FALSE(lockTypeSupported);
79     sptrProxy->LockIpc(token, timeOutMs, powerError);
80     EXPECT_FALSE(powerError == static_cast<int32_t>(PowerErrors::ERR_OK));
81     sptrProxy->UnLockIpc(token, name, powerError);
82     EXPECT_FALSE(powerError == static_cast<int32_t>(PowerErrors::ERR_OK));
83     sptrProxy->IsUsedIpc(token, isUsed);
84     EXPECT_FALSE(isUsed);
85     EXPECT_NE(sptrProxy->ProxyRunningLockIpc(true, pid, uid), ERR_OK);
86     std::unique_ptr<VectorPair> vectorPairInfos = std::make_unique<VectorPair>();
87     std::vector<std::pair<pid_t, pid_t>> processInfos;
88     processInfos.emplace_back(pid, uid);
89     vectorPairInfos->SetProcessInfos(processInfos);
90     EXPECT_NE(sptrProxy->ProxyRunningLocksIpc(true, *vectorPairInfos), ERR_OK);
91     EXPECT_NE(sptrProxy->ResetRunningLocksIpc(), ERR_OK);
92     POWER_HILOGI(LABEL_TEST, "PowerMockProxyTest001 function end!");
93 }
94 
95 /**
96  * @tc.name: PowerMockProxyTest002
97  * @tc.desc: Test proxy when the parcel is mock
98  * @tc.type: FUNC
99  */
100 HWTEST_F(PowerMockProxyTest, PowerMockProxyTest002, TestSize.Level2)
101 {
102     int32_t powerError = 1;
103     int32_t powerMode = 0;
104     int32_t powerState = -1;
105     std::string apiVersion = "-1";
106     bool isScreenOn = false;
107     int32_t ret = 0;
108     POWER_HILOGI(LABEL_TEST, "PowerMockProxyTest002 function start!");
109     sptr<IPCObjectStub> remote = new IPCObjectStub();
110     std::shared_ptr<PowerMgrProxy> sptrProxy = std::make_shared<PowerMgrProxy>(remote);
111     int32_t suspendReason = (static_cast<int32_t>(SuspendDeviceType::SUSPEND_DEVICE_REASON_MAX)) + 1;
112     SuspendDeviceType abnormaltype = SuspendDeviceType(suspendReason);
113     ret = sptrProxy->SuspendDeviceIpc(0, static_cast<int32_t>(abnormaltype), false, apiVersion, powerError);
114     EXPECT_EQ(ret, ERR_INVALID_DATA);
115     ret = sptrProxy->WakeupDeviceIpc(GetTickCount(), static_cast<int32_t>(WakeupDeviceType::WAKEUP_DEVICE_APPLICATION),
116         std::string("app call"), apiVersion, powerError);
117     EXPECT_EQ(ret, ERR_INVALID_DATA);
118     int32_t userAttention = static_cast<int32_t>(UserActivityType::USER_ACTIVITY_TYPE_ATTENTION);
119     EXPECT_NE(sptrProxy->RefreshActivityIpc(GetTickCount(), userAttention, true), ERR_OK);
120     sptrProxy->OverrideScreenOffTimeIpc(200, apiVersion, powerError);
121     EXPECT_FALSE(powerError == static_cast<int32_t>(PowerErrors::ERR_OK));
122     sptrProxy->RestoreScreenOffTimeIpc(apiVersion, powerError);
123     EXPECT_FALSE(powerError == static_cast<int32_t>(PowerErrors::ERR_OK));
124     ret = sptrProxy->GetStateIpc(powerState);
125     EXPECT_NE(ret, ERR_OK);
126     sptrProxy->IsScreenOnIpc(true, isScreenOn);
127     EXPECT_FALSE(isScreenOn);
128     sptrProxy->SetDisplaySuspendIpc(true);
129     PowerMode mode1 = PowerMode::NORMAL_MODE;
130     ret = sptrProxy->SetDeviceModeIpc(static_cast<int32_t>(mode1), powerError);
131     EXPECT_EQ(ret, ERR_INVALID_DATA);
132     ret = sptrProxy->GetDeviceModeIpc(powerMode);
133     EXPECT_NE(ret, ERR_OK);
134     POWER_HILOGI(LABEL_TEST, "PowerMockProxyTest002 function end!");
135 }
136 
137 /**
138  * @tc.name: PowerMockProxyTest003
139  * @tc.desc: Test proxy when the parcel is mock
140  * @tc.type: FUNC
141  */
142 HWTEST_F(PowerMockProxyTest, PowerMockProxyTest003, TestSize.Level2)
143 {
144     int32_t powerError = 1;
145     std::string apiVersion = "-1";
146     int32_t ret = 0;
147     POWER_HILOGI(LABEL_TEST, "PowerMockProxyTest003 function start!");
148     sptr<IPCObjectStub> remote = new IPCObjectStub();
149     std::shared_ptr<PowerMgrProxy> sptrProxy = std::make_shared<PowerMgrProxy>(remote);
150     sptr<IPowerStateCallback> cb1 = new PowerStateTestCallback();
151     sptr<IPowerModeCallback> cb3 = new PowerModeTestCallback();
152     sptr<IPowerRunninglockCallback> cb5 =new PowerRunningLockTestCallback();
153     sptr<PowerMgrStubAsync> asyncCallback = new PowerMgrStubAsync();
154     sptr<IPowerMgrAsync> powerProxy = iface_cast<IPowerMgrAsync>(asyncCallback);
155     EXPECT_NE(sptrProxy->RegisterPowerStateCallbackIpc(cb1, true), ERR_OK);
156     EXPECT_NE(sptrProxy->UnRegisterPowerStateCallbackIpc(cb1), ERR_OK);
157     EXPECT_NE(sptrProxy->RegisterPowerStateCallbackIpc(nullptr, true), ERR_OK);
158     EXPECT_NE(sptrProxy->UnRegisterPowerStateCallbackIpc(nullptr), ERR_OK);
159     EXPECT_NE(sptrProxy->RegisterPowerModeCallbackIpc(cb3), ERR_OK);
160     EXPECT_NE(sptrProxy->UnRegisterPowerModeCallbackIpc(cb3), ERR_OK);
161     EXPECT_NE(sptrProxy->RegisterPowerModeCallbackIpc(nullptr), ERR_OK);
162     EXPECT_NE(sptrProxy->UnRegisterPowerModeCallbackIpc(nullptr), ERR_OK);
163     EXPECT_NE(sptrProxy->RegisterRunningLockCallbackIpc(cb5), ERR_OK);
164     EXPECT_NE(sptrProxy->UnRegisterRunningLockCallbackIpc(cb5), ERR_OK);
165     EXPECT_NE(sptrProxy->RegisterRunningLockCallbackIpc(nullptr), ERR_OK);
166     EXPECT_NE(sptrProxy->UnRegisterRunningLockCallbackIpc(nullptr), ERR_OK);
167     ret = sptrProxy->RebootDeviceIpc(" ", powerError);
168     EXPECT_EQ(ret, ERR_INVALID_DATA);
169     ret = sptrProxy->ShutDownDeviceIpc(" ", powerError);
170     EXPECT_EQ(ret, ERR_INVALID_DATA);
171     ret = sptrProxy->ForceSuspendDeviceIpc(0, apiVersion, powerProxy);
172     EXPECT_EQ(ret, ERR_INVALID_DATA);
173     static std::vector<std::string> dumpArgs;
174     dumpArgs.push_back("-a");
175     std::string errorCode;
176     std::string actualDebugInfo;
177     sptrProxy->ShellDumpIpc(dumpArgs, dumpArgs.size(), actualDebugInfo);
178     EXPECT_EQ(errorCode, actualDebugInfo);
179     POWER_HILOGI(LABEL_TEST, "PowerMockProxyTest003 function end!");
180 }
181 } // namespace