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 <gtest/gtest.h>
17 #include "app_state_callback_host.h"
18 #include "app_mgr_constants.h"
19 #include "iapp_state_callback.h"
20 #include "app_process_data.h"
21 #include "bundle_info.h"
22 #include "mock_ability_token.h"
23
24 using namespace testing::ext;
25 namespace OHOS {
26 namespace AppExecFwk {
27 class AmsAppStateCallBackTest : public testing::Test {
28 public:
29 static void SetUpTestCase();
30 static void TearDownTestCase();
31 void SetUp();
32 void TearDown();
33 };
34
SetUpTestCase()35 void AmsAppStateCallBackTest::SetUpTestCase()
36 {}
TearDownTestCase()37 void AmsAppStateCallBackTest::TearDownTestCase()
38 {}
SetUp()39 void AmsAppStateCallBackTest::SetUp()
40 {}
TearDown()41 void AmsAppStateCallBackTest::TearDown()
42 {}
43
44 /*
45 * Feature: AppStateCallBackHost
46 * Function: AppStateCallBackHost
47 * SubFunction: OnRemoteRequest Function
48 * FunctionPoints: AppStateCallBackHost Onreceived interface
49 * EnvConditions: Mobile that can run ohos test framework
50 * CaseDescription: Verify if Onreceived works when app state changed.
51 */
52 HWTEST_F(AmsAppStateCallBackTest, OnRemoteRequest_001, TestSize.Level1)
53 {
54 sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
55 EXPECT_NE(host, nullptr);
56 MessageParcel data;
57 MessageParcel reply;
58 MessageOption option{ MessageOption::TF_ASYNC };
59
60 AppData appDataInfo;
61 AppProcessData processData;
62 appDataInfo.appName = "test_name";
63 appDataInfo.uid = 2;
64 processData.appDatas.emplace_back(appDataInfo);
65 processData.pid = 1;
66 processData.appState = ApplicationState::APP_STATE_FOREGROUND;
67 data.WriteParcelable(&processData);
68 }
69
70 /*
71 * Feature: AppStateCallBackHost
72 * Function: AppStateCallBackHost
73 * SubFunction: OnRemoteRequest Function
74 * FunctionPoints: AppStateCallBackHost Onreceived interface
75 * EnvConditions: Mobile that can run ohos test framework
76 * CaseDescription: Verify if Onreceived works when ability request done.
77 */
78 HWTEST_F(AmsAppStateCallBackTest, OnRemoteRequest_002, TestSize.Level1)
79 {
80 sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
81 EXPECT_NE(host, nullptr);
82 MessageParcel data;
83 MessageParcel reply;
84 MessageOption option{ MessageOption::TF_ASYNC };
85 sptr<IRemoteObject> token = new MockAbilityToken();
86
87 data.WriteParcelable(token.GetRefPtr());
88 int32_t abilityState = static_cast<int32_t>(AbilityState::ABILITY_STATE_FOREGROUND);
89 data.WriteInt32(abilityState);
90 }
91
92 /*
93 * Feature: AppStateCallBackHost
94 * Function: AppStateCallBackHost
95 * SubFunction: OnAbilityRequestDone Function
96 * FunctionPoints: OnAbilityRequestDone Onreceived interface
97 * EnvConditions: Mobile that can run ohos test framework
98 * CaseDescription: Verify if Onreceived works when ability request done.
99 */
100 HWTEST_F(AmsAppStateCallBackTest, OnAbilityRequestDone_001, TestSize.Level1)
101 {
102 sptr<IRemoteObject> token = nullptr;
103 AbilityState state = AbilityState::ABILITY_STATE_CREATE;
104 sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
105 EXPECT_NE(host, nullptr);
106 host->OnAbilityRequestDone(token, state);
107 }
108
109 /*
110 * Feature: AppStateCallBackHost
111 * Function: AppStateCallBackHost
112 * SubFunction: NotifyStartResidentProcess Function
113 * FunctionPoints: NotifyStartResidentProcess Onreceived interface
114 * EnvConditions: Mobile that can run ohos test framework
115 * CaseDescription: Verify if Onreceived works when ability request done.
116 */
117 HWTEST_F(AmsAppStateCallBackTest, NotifyStartResidentProcess_001, TestSize.Level1)
118 {
119 sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
120 EXPECT_NE(host, nullptr);
121 std::vector<AppExecFwk::BundleInfo> bundleInfos;
122 host->NotifyStartResidentProcess(bundleInfos);
123 }
124
125 /*
126 * Feature: AppStateCallBackHost
127 * Function: AppStateCallBackHost
128 * SubFunction: NotifyStartKeepAliveProcess Function
129 * FunctionPoints: NotifyStartKeepAliveProcess Onreceived interface
130 * EnvConditions: Mobile that can run ohos test framework
131 * CaseDescription: Verify if Onreceived works when ability request done.
132 */
133 HWTEST_F(AmsAppStateCallBackTest, NotifyStartKeepAliveProcess_001, TestSize.Level1)
134 {
135 sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
136 EXPECT_NE(host, nullptr);
137 std::vector<AppExecFwk::BundleInfo> bundleInfos;
138 host->NotifyStartKeepAliveProcess(bundleInfos);
139 }
140
141 /*
142 * Feature: AppStateCallBackHost
143 * Function: AppStateCallBackHost
144 * SubFunction: OnAppStateChanged Function
145 * FunctionPoints: OnAppStateChanged Onreceived interface
146 * EnvConditions: Mobile that can run ohos test framework
147 * CaseDescription: Verify if Onreceived works when app state changed.
148 */
149 HWTEST_F(AmsAppStateCallBackTest, OnAppStateChanged_001, TestSize.Level1)
150 {
151 AppProcessData data;
152 sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
153 EXPECT_NE(host, nullptr);
154 host->OnAppStateChanged(data);
155 }
156
157 /*
158 * Feature: AppProcessData
159 * Function: AppProcessData
160 * SubFunction: Marshalling and Unmarshalling
161 * FunctionPoints: Marshalling and Unmarshalling can work normal
162 * EnvConditions: Mobile that can run normal
163 * CaseDescription: 1. Verify process data can write to parcel.
164 2. verify process data can read from parcel.
165 */
166 HWTEST_F(AmsAppStateCallBackTest, AppProcessData_001, TestSize.Level1)
167 {
168 Parcel data;
169 AppData appDataInfo;
170 AppProcessData processData;
171 appDataInfo.appName = "test_name";
172 appDataInfo.uid = 2;
173 processData.appDatas.emplace_back(appDataInfo);
174 processData.pid = 1;
175 processData.appState = ApplicationState::APP_STATE_FOREGROUND;
176
177 bool ret = processData.Marshalling(data);
178 EXPECT_EQ(true, ret);
179
180 sptr<AppProcessData> newProcessData = AppProcessData::Unmarshalling(data);
181 EXPECT_NE(nullptr, newProcessData);
182
183 for (size_t i = 0; i < processData.appDatas.size(); i++) {
184 EXPECT_EQ(processData.appDatas[i].appName, newProcessData->appDatas[i].appName);
185 EXPECT_EQ(processData.appDatas[i].uid, newProcessData->appDatas[i].uid);
186 }
187
188 EXPECT_EQ(processData.pid, newProcessData->pid);
189 EXPECT_EQ(processData.appState, newProcessData->appState);
190 }
191 } // namespace AppExecFwk
192 } // namespace OHOS
193