1 /*
2 * Copyright (c) 2021-2022 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 "app_scheduler_proxy.h"
17 #include <unistd.h>
18 #include <gtest/gtest.h>
19 #include "errors.h"
20 #include "ipc_types.h"
21 #include "app_mgr_proxy.h"
22 #include "app_record_id.h"
23 #include "hilog_tag_wrapper.h"
24 #include "mock_application.h"
25 #include "mock_app_mgr_service.h"
26 #include "application_state_observer_stub.h"
27
28 using namespace testing::ext;
29
30 using OHOS::iface_cast;
31 using OHOS::sptr;
32 using testing::_;
33 using testing::Invoke;
34 using testing::InvokeWithoutArgs;
35 using testing::Return;
36
37 namespace OHOS {
38 namespace AppExecFwk {
39 class AmsIpcAppMgrInterfaceTest : public testing::Test {
40 public:
41 static void SetUpTestCase();
42 static void TearDownTestCase();
43 void SetUp();
44 void TearDown();
45 };
46
SetUpTestCase()47 void AmsIpcAppMgrInterfaceTest::SetUpTestCase()
48 {}
49
TearDownTestCase()50 void AmsIpcAppMgrInterfaceTest::TearDownTestCase()
51 {}
52
SetUp()53 void AmsIpcAppMgrInterfaceTest::SetUp()
54 {}
55
TearDown()56 void AmsIpcAppMgrInterfaceTest::TearDown()
57 {}
58
59 /*
60 * Feature: AMS
61 * Function: IPC
62 * SubFunction: appmgr interface
63 * FunctionPoints: interface
64 * CaseDescription: test interface of AttachApplication
65 */
66 HWTEST_F(AmsIpcAppMgrInterfaceTest, Interface_001, TestSize.Level1)
67 {
68 TAG_LOGD(AAFwkTag::TEST, "AppMgrIpcInterfaceTest_AppMgr_001 start");
69 sptr<MockAppMgrService> mockAppMgr(new MockAppMgrService());
70 sptr<IAppMgr> appMgrClient = iface_cast<IAppMgr>(mockAppMgr);
71 sptr<MockApplication> app(new MockApplication());
72
73 EXPECT_CALL(*mockAppMgr, AttachApplication(_))
74 .WillOnce(InvokeWithoutArgs(mockAppMgr.GetRefPtr(), &MockAppMgrService::Post));
75 appMgrClient->AttachApplication(app);
76 mockAppMgr->Wait();
77 TAG_LOGD(AAFwkTag::TEST, "AppMgrIpcInterfaceTest_AppMgr_001 end");
78 }
79
80 /*
81 * Feature: AMS
82 * Function: IPC
83 * SubFunction: appmgr interface
84 * FunctionPoints: interface
85 * CaseDescription: test interface of ApplicationForegrounded
86 */
87 HWTEST_F(AmsIpcAppMgrInterfaceTest, Interface_002, TestSize.Level1)
88 {
89 TAG_LOGD(AAFwkTag::TEST, "AppMgrIpcInterfaceTest_AppMgr_002 start");
90 sptr<MockAppMgrService> mockAppMgr(new MockAppMgrService());
91 sptr<IAppMgr> appMgrClient = iface_cast<IAppMgr>(mockAppMgr);
92
93 EXPECT_CALL(*mockAppMgr, ApplicationForegrounded(_))
94 .WillOnce(InvokeWithoutArgs(mockAppMgr.GetRefPtr(), &MockAppMgrService::Post));
95 auto recordId = AppRecordId::Create();
96 appMgrClient->ApplicationForegrounded(recordId);
97 mockAppMgr->Wait();
98 TAG_LOGD(AAFwkTag::TEST, "AppMgrIpcInterfaceTest_AppMgr_002 end");
99 }
100
101 /*
102 * Feature: AMS
103 * Function: IPC
104 * SubFunction: appmgr interface
105 * FunctionPoints: interface
106 * CaseDescription: test interface of ApplicationBackgrounded
107 */
108 HWTEST_F(AmsIpcAppMgrInterfaceTest, Interface_003, TestSize.Level1)
109 {
110 TAG_LOGD(AAFwkTag::TEST, "AppMgrIpcInterfaceTest_AppMgr_003 start");
111 sptr<MockAppMgrService> mockAppMgr(new MockAppMgrService());
112 sptr<IAppMgr> appMgrClient = iface_cast<IAppMgr>(mockAppMgr);
113
114 EXPECT_CALL(*mockAppMgr, ApplicationBackgrounded(_))
115 .WillOnce(InvokeWithoutArgs(mockAppMgr.GetRefPtr(), &MockAppMgrService::Post));
116 auto recordId = AppRecordId::Create();
117 appMgrClient->ApplicationBackgrounded(recordId);
118 mockAppMgr->Wait();
119 TAG_LOGD(AAFwkTag::TEST, "AppMgrIpcInterfaceTest_AppMgr_003 end");
120 }
121
122 /*
123 * Feature: AMS
124 * Function: IPC
125 * SubFunction: appmgr interface
126 * FunctionPoints: interface
127 * CaseDescription: test interface of ApplicationTerminated
128 */
129 HWTEST_F(AmsIpcAppMgrInterfaceTest, Interface_004, TestSize.Level1)
130 {
131 TAG_LOGD(AAFwkTag::TEST, "AppMgrIpcInterfaceTest_AppMgr_004 start");
132 sptr<MockAppMgrService> mockAppMgr(new MockAppMgrService());
133 sptr<IAppMgr> appMgrClient = iface_cast<IAppMgr>(mockAppMgr);
134
135 EXPECT_CALL(*mockAppMgr, ApplicationTerminated(_))
136 .WillOnce(InvokeWithoutArgs(mockAppMgr.GetRefPtr(), &MockAppMgrService::Post));
137 auto recordId = AppRecordId::Create();
138 appMgrClient->ApplicationTerminated(recordId);
139 mockAppMgr->Wait();
140 TAG_LOGD(AAFwkTag::TEST, "AppMgrIpcInterfaceTest_AppMgr_004 end");
141 }
142
143 /*
144 * Feature: AMS
145 * Function: IPC
146 * SubFunction: appmgr interface
147 * FunctionPoints: KillApplication interface
148 * CaseDescription: test IPC can transact data
149 */
150 HWTEST_F(AmsIpcAppMgrInterfaceTest, ClearUpApplicationData_008, TestSize.Level1)
151 {
152 TAG_LOGD(AAFwkTag::TEST, "ClearUpApplicationData_008 start");
153
154 sptr<MockAppMgrService> mockAppMgr(new MockAppMgrService());
155 sptr<IAppMgr> appMgrClient = iface_cast<IAppMgr>(mockAppMgr);
156
157 EXPECT_CALL(*mockAppMgr, ClearUpApplicationData(_, _, _)).Times(1);
158
159 appMgrClient->ClearUpApplicationData("PROCESS", 0);
160
161 TAG_LOGD(AAFwkTag::TEST, "ClearUpApplicationData_008 end");
162 }
163
164 /*
165 * Feature: AMS
166 * Function: IPC
167 * SubFunction: appmgr interface
168 * FunctionPoints: KillApplication interface
169 * CaseDescription: test IPC can transact data
170 */
171 HWTEST_F(AmsIpcAppMgrInterfaceTest, GetAllRunningProcesses_010, TestSize.Level1)
172 {
173 TAG_LOGD(AAFwkTag::TEST, "GetAllRunningProcesses_009 start");
174
175 sptr<MockAppMgrService> mockAppMgr(new MockAppMgrService());
176 sptr<IAppMgr> appMgrClient = iface_cast<IAppMgr>(mockAppMgr);
177
178 EXPECT_CALL(*mockAppMgr, GetAllRunningProcesses(_)).Times(1).WillOnce(Return(OHOS::ERR_NULL_OBJECT));
179
180 std::vector<RunningProcessInfo> runningProcessInfo;
181 int32_t ret = appMgrClient->GetAllRunningProcesses(runningProcessInfo);
182 EXPECT_EQ(ret, OHOS::ERR_NULL_OBJECT);
183
184 EXPECT_CALL(*mockAppMgr, GetAllRunningProcesses(_)).Times(1).WillOnce(Return(OHOS::ERR_NONE));
185 ret = appMgrClient->GetAllRunningProcesses(runningProcessInfo);
186 EXPECT_EQ(ret, OHOS::ERR_NONE);
187
188 TAG_LOGD(AAFwkTag::TEST, "GetAllRunningProcesses_009 end");
189 }
190
191 /*
192 * @tc.name: RegisterApplicationStateObserver_001
193 * @tc.desc: Register application state observer test.
194 * @tc.type: FUNC
195 * @tc.require: issueI5822Q
196 */
197 HWTEST_F(AmsIpcAppMgrInterfaceTest, RegisterApplicationStateObserver_001, TestSize.Level0)
198 {
199 TAG_LOGD(AAFwkTag::TEST, "RegisterApplicationStateObserver_001 start");
200
201 sptr<IApplicationStateObserver> observer = new ApplicationStateObserverStub();
202 std::vector<std::string> bundleNameList;
203 sptr<MockAppMgrService> mockAppMgr(new MockAppMgrService());
204 sptr<IAppMgr> appMgrClient = iface_cast<IAppMgr>(mockAppMgr);
205
206 EXPECT_CALL(*mockAppMgr, RegisterApplicationStateObserver(_, _)).Times(1).WillOnce(Return(OHOS::NO_ERROR));
207
208 int32_t err = appMgrClient->RegisterApplicationStateObserver(observer, bundleNameList);
209
210 EXPECT_EQ(OHOS::NO_ERROR, err);
211
212 TAG_LOGD(AAFwkTag::TEST, "RegisterApplicationStateObserver_001 end");
213 }
214
215 /*
216 * Feature: AMS
217 * Function: IPC
218 * SubFunction: appmgr interface
219 * FunctionPoints: KillApplication interface
220 * CaseDescription: test IPC can transact data
221 */
222 HWTEST_F(AmsIpcAppMgrInterfaceTest, UnregisterApplicationStateObserver_001, TestSize.Level0)
223 {
224 TAG_LOGD(AAFwkTag::TEST, "UnregisterApplicationStateObserver_001 start");
225
226 sptr<IApplicationStateObserver> observer = new ApplicationStateObserverStub();
227 sptr<MockAppMgrService> mockAppMgr(new MockAppMgrService());
228 sptr<IAppMgr> appMgrClient = iface_cast<IAppMgr>(mockAppMgr);
229
230 EXPECT_CALL(*mockAppMgr, UnregisterApplicationStateObserver(_)).Times(1).WillOnce(Return(OHOS::NO_ERROR));
231
232 int32_t err = appMgrClient->UnregisterApplicationStateObserver(observer);
233
234 EXPECT_EQ(OHOS::NO_ERROR, err);
235
236 TAG_LOGD(AAFwkTag::TEST, "UnregisterApplicationStateObserver_001 end");
237 }
238 } // namespace AppExecFwk
239 } // namespace OHOS
240