1 /*
2  * Copyright (c) 2022-2023 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 
18 #include "ability_manager_client.h"
19 #include "ability_manager_errors.h"
20 #include "ability_state_data.h"
21 #include "element_name.h"
22 #include "hilog_tag_wrapper.h"
23 #include "ipc_object_stub.h"
24 #include "start_options.h"
25 #include "status_bar_delegate_proxy.h"
26 #include "ui_extension_session_info.h"
27 #include "want.h"
28 
29 using namespace testing;
30 using namespace testing::ext;
31 
32 namespace OHOS {
33 namespace AAFwk {
34 namespace {
35 const int USER_ID = 100;
36 const size_t SIZE_ONE = 1;
37 const int32_t ABILITYID = 1002;
38 const int32_t UID = 10000;
39 const int REQUESTCODE = 1008;
40 const int ERR_BUNDLE_MANAGER_INVALID_UID = 8521233;
41 }  // namespace
42 
43 class AbilityManagerClientTest : public testing::Test {
44 public:
45     static void SetUpTestCase();
46     static void TearDownTestCase();
47     void SetUp() override;
48     void TearDown() override;
49     void SetWant(Want& want, const std::string bundleName);
50 };
51 
SetUpTestCase(void)52 void AbilityManagerClientTest::SetUpTestCase(void)
53 {}
54 
TearDownTestCase(void)55 void AbilityManagerClientTest::TearDownTestCase(void)
56 {}
57 
SetUp()58 void AbilityManagerClientTest::SetUp()
59 {}
60 
TearDown()61 void AbilityManagerClientTest::TearDown()
62 {}
63 
SetWant(Want & want,const std::string bundleName)64 void AbilityManagerClientTest::SetWant(Want& want, const std::string bundleName)
65 {
66     AppExecFwk::ElementName name;
67     name.SetBundleName(bundleName);
68     name.SetAbilityName("testAbility");
69     want.SetElement(name);
70 }
71 
72 /**
73  * @tc.name: AbilityManagerClient_DumpSysState_0100
74  * @tc.desc: DumpSysState
75  * @tc.type: FUNC
76  * @tc.require: SR000GH1GO
77  */
78 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_DumpSysState_0100, TestSize.Level1)
79 {
80     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_DumpSysState_0100 start");
81 
82     std::string args = "-a";
83     std::vector<std::string> state;
84     bool isClient = false;
85     bool isUserID = true;
86     auto result = AbilityManagerClient::GetInstance()->DumpSysState(args, state, isClient, isUserID, USER_ID);
87     EXPECT_EQ(result, ERR_OK);
88     EXPECT_GT(state.size(), SIZE_ONE);
89 
90     TAG_LOGI(AAFwkTag::TEST, "state.size() = %{public}zu", state.size());
91     for (auto item : state) {
92         TAG_LOGI(AAFwkTag::TEST, "item = %{public}s", item.c_str());
93     }
94 
95     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_DumpSysState_0100 end");
96 }
97 
98 /**
99  * @tc.name: AbilityManagerClient_ForceExitApp_0100
100  * @tc.desc: ForceExitApp
101  * @tc.type: FUNC
102  */
103 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_ForceExitApp_0100, TestSize.Level1)
104 {
105     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_ForceExitApp_0100 start");
106     int32_t pid = 0;
107     ExitReason exitReason = { REASON_JS_ERROR, "Js Error." };
108     auto result = AbilityManagerClient::GetInstance()->ForceExitApp(pid, exitReason);
109     EXPECT_EQ(result, ERR_OK);
110     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_ForceExitApp_0100 end");
111 }
112 
113 /**
114  * @tc.name: AbilityManagerClient_RecordAppExitReason_0100
115  * @tc.desc: RecordAppExitReason
116  * @tc.type: FUNC
117  */
118 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_RecordAppExitReason_0100, TestSize.Level1)
119 {
120     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_RecordAppExitReason_0100 start");
121     ExitReason exitReason = { REASON_JS_ERROR, "Js Error." };
122     auto result = AbilityManagerClient::GetInstance()->RecordAppExitReason(exitReason);
123     EXPECT_EQ(result, ERR_BUNDLE_MANAGER_INVALID_UID);
124     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_RecordAppExitReason_0100 end");
125 }
126 
127 /**
128  * @tc.name: AbilityManagerClient_RecordProcessExitReason_0100
129  * @tc.desc: RecordAppExitReason
130  * @tc.type: FUNC
131  */
132 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_RecordProcessExitReason_0100, TestSize.Level1)
133 {
134     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_RecordProcessExitReason_0100 start");
135     ExitReason exitReason = { REASON_JS_ERROR, "Js Error." };
136     auto result = AbilityManagerClient::GetInstance()->RecordAppExitReason(exitReason);
137     EXPECT_EQ(result, ERR_BUNDLE_MANAGER_INVALID_UID);
138     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_RecordProcessExitReason_0100 end");
139 }
140 
141 /**
142  * @tc.name: AbilityManagerClient_RegisterStatusBarDelegate_0100
143  * @tc.desc: RegisterStatusBarDelegate
144  * @tc.type: FUNC
145  */
146 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_RegisterStatusBarDelegate_001, TestSize.Level1)
147 {
148     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_RegisterStatusBarDelegate_001 start");
149     sptr<IRemoteObject> impl(new IPCObjectStub());
150     sptr<AbilityRuntime::IStatusBarDelegate> delegate(new AbilityRuntime::StatusBarDelegateProxy(impl));
151     auto result = AbilityManagerClient::GetInstance()->RegisterStatusBarDelegate(delegate);
152     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_RegisterStatusBarDelegate_001 result %{public}d", result);
153     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_RegisterStatusBarDelegate_001 end");
154 }
155 
156 /**
157  * @tc.name: AbilityManagerClient_ScheduleClearRecoveryPageStack_0100
158  * @tc.desc: ScheduleClearRecoveryPageStack
159  * @tc.type: FUNC
160  */
161 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_ScheduleClearRecoveryPageStack_001, TestSize.Level1)
162 {
163     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_ScheduleClearRecoveryPageStack_001 start");
164     AbilityManagerClient::GetInstance()->ScheduleClearRecoveryPageStack();
165     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_ScheduleClearRecoveryPageStack_001 end");
166 }
167 
168 /**
169  * @tc.name: AbilityManagerClient_IsValidMissionIds_0100
170  * @tc.desc: IsValidMissionIds
171  * @tc.type: FUNC
172  */
173 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_IsValidMissionIds_001, TestSize.Level1)
174 {
175     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_IsValidMissionIds_001 start");
176     std::vector<int32_t> missionIds;
177     missionIds.push_back(ABILITYID);
178     std::vector<MissionValidResult> results;
179     auto result = AbilityManagerClient::GetInstance()->IsValidMissionIds(missionIds, results);
180     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_IsValidMissionIds_001 result %{public}d", result);
181     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_IsValidMissionIds_001 end");
182 }
183 
184 /**
185  * @tc.name: AbilityManagerClient_GetForegroundUIAbilities_0100
186  * @tc.desc: GetForegroundUIAbilities
187  * @tc.type: FUNC
188  */
189 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_GetForegroundUIAbilities_001, TestSize.Level1)
190 {
191     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetForegroundUIAbilities_001 start");
192     std::vector<AppExecFwk::AbilityStateData> list;
193     auto result = AbilityManagerClient::GetInstance()->GetForegroundUIAbilities(list);
194     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetForegroundUIAbilities_001 result %{public}d", result);
195     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetForegroundUIAbilities_001 end");
196 }
197 
198 /**
199  * @tc.name: AbilityManagerClient_GetUIExtensionSessionInfo_0100
200  * @tc.desc: GetUIExtensionSessionInfo
201  * @tc.type: FUNC
202  */
203 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_GetUIExtensionSessionInfo_001, TestSize.Level1)
204 {
205     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetUIExtensionSessionInfo_001 start");
206     sptr<IRemoteObject> token_(new IPCObjectStub());
207     UIExtensionSessionInfo uiExtensionSessionInfo;
208     auto result = AbilityManagerClient::GetInstance()->GetUIExtensionSessionInfo(token_,
209         uiExtensionSessionInfo, USER_ID);
210     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetUIExtensionSessionInfo_001 result %{public}d", result);
211     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetUIExtensionSessionInfo_001 end");
212 }
213 
214 /**
215  * @tc.name: AbilityManagerClient_StartShortCut_0100
216  * @tc.desc: StartShortCut
217  * @tc.type: FUNC
218  */
219 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_StartShortCut_001, TestSize.Level1)
220 {
221     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_StartShortCut_001 start");
222     Want want;
223     StartOptions startOptions;
224     SetWant(want, "bundleName");
225     auto result = AbilityManagerClient::GetInstance()->StartShortcut(want, startOptions);
226     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_StartShortCut_001 result %{public}d", result);
227     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_StartShortCut_001 end");
228 }
229 
230 /**
231  * @tc.name: AbilityManagerClient_NotifyFrozenProcessByRSS_0100
232  * @tc.desc: NotifyFrozenProcessByRSS
233  * @tc.type: FUNC
234  */
235 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_NotifyFrozenProcessByRSS_001, TestSize.Level1)
236 {
237     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_NotifyFrozenProcessByRSS_001 start");
238     std::vector<int32_t> pidList;
239     pidList.push_back(19082);
240     AbilityManagerClient::GetInstance()->NotifyFrozenProcessByRSS(pidList, UID);
241     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_NotifyFrozenProcessByRSS_001 end");
242 }
243 
244 /**
245  * @tc.name: AbilityManagerClient_PreStartMission_0100
246  * @tc.desc: PreStartMission
247  * @tc.type: FUNC
248  */
249 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_PreStartMission_001, TestSize.Level1)
250 {
251     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_PreStartMission_001 start");
252     auto result = AbilityManagerClient::GetInstance()->PreStartMission("com.ix.hiservcie", "entry",
253         "ServiceAbility", "2024-07-19 10:00:00");
254     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_PreStartMission_001 result %{public}d", result);
255     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_PreStartMission_001 end");
256 }
257 
258 /**
259  * @tc.name: AbilityManagerClient_OpenLink_0100
260  * @tc.desc: OpenLink
261  * @tc.type: FUNC
262  */
263 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_OpenLink, TestSize.Level1)
264 {
265     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_OpenLink start");
266     Want want;
267     sptr<IRemoteObject> token_(new IPCObjectStub());
268     SetWant(want, "bundleName");
269     auto result = AbilityManagerClient::GetInstance()->OpenLink(want, token_,
270         USER_ID, REQUESTCODE);
271     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_OpenLink result %{public}d", result);
272     TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_OpenLink end");
273 }
274 }  // namespace AAFwk
275 }  // namespace OHOS
276