1 /*
2 * Copyright (c) 2023-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 <gtest/gtest.h>
17 #include <unistd.h>
18
19 #define private public
20 #define protected public
21 #include "shutdown_dialog.h"
22 #undef private
23 #undef protected
24
25 #include "ability_manager_client.h"
26 #include "iremote_object.h"
27 #include "mock_power_remote_object.h"
28 #include "power_mgr_service.h"
29 #include "power_log.h"
30
31 using namespace std;
32 using namespace testing::ext;
33 using namespace OHOS;
34 using namespace OHOS::AAFwk;
35 using namespace OHOS::PowerMgr;
36
37 namespace OHOS {
38 namespace PowerMgr {
39 class PowerMgrPowerDialog : public testing::Test {
40 public:
SetUpTestCase()41 static void SetUpTestCase()
42 {
43 auto pms = DelayedSpSingleton<PowerMgrService>::GetInstance();
44 pms->OnStart();
45 }
TearDownTestCase()46 static void TearDownTestCase()
47 {
48 auto pms = DelayedSpSingleton<PowerMgrService>::GetInstance();
49 pms->OnStop();
50 }
51 };
52 } // namespace PowerMgr
53 } // namespace OHOS
54
55 namespace {
56 constexpr int32_t RESULT_CODE = -1;
57 constexpr int32_t SLEEP_WAIT_TIME_S = 1;
58
59 /**
60 * @tc.name: LongPressKeyMonitorInitTest
61 * @tc.desc: test KeyMonitorInit and KeyMonitorCancel
62 * @tc.type: FUNC
63 */
HWTEST_F(PowerMgrPowerDialog, LongPressKeyMonitorInitTest, TestSize.Level2)64 HWTEST_F(PowerMgrPowerDialog, LongPressKeyMonitorInitTest, TestSize.Level2)
65 {
66 POWER_HILOGD(LABEL_TEST, "LongPressKeyMonitorInitTest start");
67 ShutdownDialog shutdownDialog;
68 shutdownDialog.KeyMonitorInit();
69 EXPECT_TRUE(shutdownDialog.longPressId_ >= OHOS::ERR_OK);
70 shutdownDialog.KeyMonitorCancel();
71 EXPECT_TRUE(shutdownDialog.longPressId_ == OHOS::ERR_OK);
72 POWER_HILOGD(LABEL_TEST, "LongPressKeyMonitorInitTest end");
73 }
74
75 /**
76 * @tc.name: ConnectSystemUiDialogShowTest
77 * @tc.desc: test power dialog has been show
78 * @tc.type: FUNC
79 */
HWTEST_F(PowerMgrPowerDialog, ConnectSystemUiDialogShowTest, TestSize.Level2)80 HWTEST_F(PowerMgrPowerDialog, ConnectSystemUiDialogShowTest, TestSize.Level2)
81 {
82 POWER_HILOGD(LABEL_TEST, "ConnectSystemUiDialogShowTest start");
83 ShutdownDialog shutdownDialog;
84 sptr<IRemoteObject> sptrRemoteObj = new MockPowerRemoteObject();
85 MockPowerRemoteObject::SetRequestValue(ERR_OK);
86 AppExecFwk::ElementName element;
87 shutdownDialog.dialogConnectionCallback_->OnAbilityConnectDone(element, sptrRemoteObj, RESULT_CODE);
88 sleep(SLEEP_WAIT_TIME_S);
89 EXPECT_TRUE(shutdownDialog.ConnectSystemUi());
90 POWER_HILOGD(LABEL_TEST, "ConnectSystemUiDialogShowTest end");
91 }
92
93 /**
94 * @tc.name: OnAbilityConnectDoneTestFail
95 * @tc.desc: test OnAbilityConnectDone SendRequest falied
96 * @tc.type: FUNC
97 */
HWTEST_F(PowerMgrPowerDialog, OnAbilityConnectDoneTestFail, TestSize.Level2)98 HWTEST_F(PowerMgrPowerDialog, OnAbilityConnectDoneTestFail, TestSize.Level2)
99 {
100 POWER_HILOGD(LABEL_TEST, "OnAbilityConnectDoneTestFail start");
101 ShutdownDialog shutdownDialog;
102 shutdownDialog.ResetLongPressFlag();
103 AppExecFwk::ElementName element;
104 sptr<IRemoteObject> sptrRemoteObj = new MockPowerRemoteObject();
105 MockPowerRemoteObject::SetRequestValue(ERR_NO_INIT);
106 shutdownDialog.dialogConnectionCallback_->OnAbilityConnectDone(element, sptrRemoteObj, RESULT_CODE);
107 sleep(SLEEP_WAIT_TIME_S);
108 EXPECT_FALSE(shutdownDialog.IsLongPress());
109 POWER_HILOGD(LABEL_TEST, "OnAbilityConnectDoneTestFail end");
110 }
111
112 /**
113 * @tc.name: OnAbilityConnectDoneTestRemoteNull
114 * @tc.desc: test OnAbilityConnectDone remoteObj is null
115 * @tc.type: FUNC
116 */
HWTEST_F(PowerMgrPowerDialog, OnAbilityConnectDoneTestRemoteNull, TestSize.Level2)117 HWTEST_F(PowerMgrPowerDialog, OnAbilityConnectDoneTestRemoteNull, TestSize.Level2)
118 {
119 POWER_HILOGD(LABEL_TEST, "OnAbilityConnectDoneTestRemoteNull start");
120 ShutdownDialog shutdownDialog;
121 shutdownDialog.ResetLongPressFlag();
122 AppExecFwk::ElementName element;
123 sptr<IRemoteObject> sptrRemoteObj = nullptr;
124 shutdownDialog.dialogConnectionCallback_->OnAbilityConnectDone(element, sptrRemoteObj, RESULT_CODE);
125 sleep(SLEEP_WAIT_TIME_S);
126 EXPECT_FALSE(shutdownDialog.IsLongPress());
127 POWER_HILOGD(LABEL_TEST, "OnAbilityConnectDoneTestRemoteNull end");
128 }
129
130 /**
131 * @tc.name: OnAbilityConnectDoneTest
132 * @tc.desc: test OnAbilityConnectDone succ
133 * @tc.type: FUNC
134 */
HWTEST_F(PowerMgrPowerDialog, OnAbilityConnectDoneTest, TestSize.Level2)135 HWTEST_F(PowerMgrPowerDialog, OnAbilityConnectDoneTest, TestSize.Level2)
136 {
137 POWER_HILOGD(LABEL_TEST, "OnAbilityConnectDoneTest start");
138 ShutdownDialog shutdownDialog;
139 shutdownDialog.ResetLongPressFlag();
140 AppExecFwk::ElementName element;
141 sptr<IRemoteObject> sptrRemoteObj = new MockPowerRemoteObject();
142 MockPowerRemoteObject::SetRequestValue(ERR_OK);
143 shutdownDialog.dialogConnectionCallback_->OnAbilityConnectDone(element, sptrRemoteObj, RESULT_CODE);
144 sleep(SLEEP_WAIT_TIME_S);
145 EXPECT_TRUE(shutdownDialog.IsLongPress());
146 POWER_HILOGD(LABEL_TEST, "OnAbilityConnectDoneTest end");
147 }
148
149 /**
150 * @tc.name: OnAbilityDisconnectDoneTest
151 * @tc.desc: test OnAbilityDisconnectDone succ
152 * @tc.type: FUNC
153 */
HWTEST_F(PowerMgrPowerDialog, OnAbilityDisconnectDoneTest, TestSize.Level2)154 HWTEST_F(PowerMgrPowerDialog, OnAbilityDisconnectDoneTest, TestSize.Level2)
155 {
156 POWER_HILOGD(LABEL_TEST, "OnAbilityDisconnectDoneTest start");
157 ShutdownDialog shutdownDialog;
158 AppExecFwk::ElementName element;
159 shutdownDialog.dialogConnectionCallback_->OnAbilityDisconnectDone(element, RESULT_CODE);
160 sleep(SLEEP_WAIT_TIME_S);
161 EXPECT_FALSE(shutdownDialog.IsLongPress());
162 POWER_HILOGD(LABEL_TEST, "OnAbilityDisconnectDoneTest end");
163 }
164 } // namespace
165