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_IsValidMissionIds_0100
158 * @tc.desc: IsValidMissionIds
159 * @tc.type: FUNC
160 */
161 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_IsValidMissionIds_001, TestSize.Level1)
162 {
163 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_IsValidMissionIds_001 start");
164 std::vector<int32_t> missionIds;
165 missionIds.push_back(ABILITYID);
166 std::vector<MissionValidResult> results;
167 auto result = AbilityManagerClient::GetInstance()->IsValidMissionIds(missionIds, results);
168 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_IsValidMissionIds_001 result %{public}d", result);
169 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_IsValidMissionIds_001 end");
170 }
171
172 /**
173 * @tc.name: AbilityManagerClient_GetForegroundUIAbilities_0100
174 * @tc.desc: GetForegroundUIAbilities
175 * @tc.type: FUNC
176 */
177 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_GetForegroundUIAbilities_001, TestSize.Level1)
178 {
179 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetForegroundUIAbilities_001 start");
180 std::vector<AppExecFwk::AbilityStateData> list;
181 auto result = AbilityManagerClient::GetInstance()->GetForegroundUIAbilities(list);
182 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetForegroundUIAbilities_001 result %{public}d", result);
183 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetForegroundUIAbilities_001 end");
184 }
185
186 /**
187 * @tc.name: AbilityManagerClient_GetUIExtensionSessionInfo_0100
188 * @tc.desc: GetUIExtensionSessionInfo
189 * @tc.type: FUNC
190 */
191 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_GetUIExtensionSessionInfo_001, TestSize.Level1)
192 {
193 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetUIExtensionSessionInfo_001 start");
194 sptr<IRemoteObject> token_(new IPCObjectStub());
195 UIExtensionSessionInfo uiExtensionSessionInfo;
196 auto result = AbilityManagerClient::GetInstance()->GetUIExtensionSessionInfo(token_,
197 uiExtensionSessionInfo, USER_ID);
198 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetUIExtensionSessionInfo_001 result %{public}d", result);
199 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_GetUIExtensionSessionInfo_001 end");
200 }
201
202 /**
203 * @tc.name: AbilityManagerClient_StartShortCut_0100
204 * @tc.desc: StartShortCut
205 * @tc.type: FUNC
206 */
207 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_StartShortCut_001, TestSize.Level1)
208 {
209 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_StartShortCut_001 start");
210 Want want;
211 StartOptions startOptions;
212 SetWant(want, "bundleName");
213 auto result = AbilityManagerClient::GetInstance()->StartShortcut(want, startOptions);
214 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_StartShortCut_001 result %{public}d", result);
215 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_StartShortCut_001 end");
216 }
217
218 /**
219 * @tc.name: AbilityManagerClient_NotifyFrozenProcessByRSS_0100
220 * @tc.desc: NotifyFrozenProcessByRSS
221 * @tc.type: FUNC
222 */
223 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_NotifyFrozenProcessByRSS_001, TestSize.Level1)
224 {
225 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_NotifyFrozenProcessByRSS_001 start");
226 std::vector<int32_t> pidList;
227 pidList.push_back(19082);
228 AbilityManagerClient::GetInstance()->NotifyFrozenProcessByRSS(pidList, UID);
229 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_NotifyFrozenProcessByRSS_001 end");
230 }
231
232 /**
233 * @tc.name: AbilityManagerClient_PreStartMission_0100
234 * @tc.desc: PreStartMission
235 * @tc.type: FUNC
236 */
237 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_PreStartMission_001, TestSize.Level1)
238 {
239 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_PreStartMission_001 start");
240 auto result = AbilityManagerClient::GetInstance()->PreStartMission("com.ix.hiservcie", "entry",
241 "ServiceAbility", "2024-07-19 10:00:00");
242 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_PreStartMission_001 result %{public}d", result);
243 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_PreStartMission_001 end");
244 }
245
246 /**
247 * @tc.name: AbilityManagerClient_OpenLink_0100
248 * @tc.desc: OpenLink
249 * @tc.type: FUNC
250 */
251 HWTEST_F(AbilityManagerClientTest, AbilityManagerClient_OpenLink, TestSize.Level1)
252 {
253 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_OpenLink start");
254 Want want;
255 sptr<IRemoteObject> token_(new IPCObjectStub());
256 SetWant(want, "bundleName");
257 auto result = AbilityManagerClient::GetInstance()->OpenLink(want, token_,
258 USER_ID, REQUESTCODE);
259 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_OpenLink result %{public}d", result);
260 TAG_LOGI(AAFwkTag::TEST, "AbilityManagerClient_OpenLink end");
261 }
262 } // namespace AAFwk
263 } // namespace OHOS
264