1 /*
2 * Copyright (c) 2025 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 "appstate_observer.h"
17
18 #include <cstring>
19 #include <fcntl.h>
20 #include <gmock/gmock.h>
21 #include <gtest/gtest.h>
22 #include <unistd.h>
23
24 #include "assistant.h"
25 #include "application_state_observer_stub.h"
26 #include "dfs_error.h"
27 #include "io_message_listener.h"
28 #include "singleton_mock.h"
29 #include "utils_log.h"
30
31 namespace OHOS::FileManagement::CloudDisk::Test {
32 using namespace testing;
33 using namespace testing::ext;
34 using namespace std;
35
36 class AppStateObserverTest : public testing::Test {
37 public:
38 static void SetUpTestCase(void);
39 static void TearDownTestCase(void);
40 void SetUp();
41 void TearDown();
42 static inline shared_ptr<AppStateObserverManager> appStateObserverManager_ = nullptr;
43 static inline shared_ptr<AppStateObserver> appStateObserver_ = nullptr;
44 static inline shared_ptr<AssistantMock> insMock = nullptr;
45 };
46
SetUpTestCase(void)47 void AppStateObserverTest::SetUpTestCase(void)
48 {
49 GTEST_LOG_(INFO) << "SetUpTestCase";
50 appStateObserverManager_ = make_shared<AppStateObserverManager>();
51 appStateObserver_ = make_shared<AppStateObserver>();
52 insMock = make_shared<AssistantMock>();
53 Assistant::ins = insMock;
54 }
55
TearDownTestCase(void)56 void AppStateObserverTest::TearDownTestCase(void)
57 {
58 GTEST_LOG_(INFO) << "TearDownTestCase";
59 appStateObserverManager_ = nullptr;
60 appStateObserver_ = nullptr;
61 Assistant::ins = nullptr;
62 insMock = nullptr;
63 }
64
SetUp(void)65 void AppStateObserverTest::SetUp(void)
66 {
67 GTEST_LOG_(INFO) << "SetUp";
68 }
69
TearDown(void)70 void AppStateObserverTest::TearDown(void)
71 {
72 GTEST_LOG_(INFO) << "TearDown";
73 }
74
75 /**
76 * @tc.name: OnForegroundApplicationChangedTest001
77 * @tc.desc: Read IO data
78 * @tc.type: FUNC
79 * @tc.require: issuesI92WQP
80 */
81 HWTEST_F(AppStateObserverTest, OnForegroundApplicationChangedTest001, TestSize.Level1)
82 {
83 GTEST_LOG_(INFO) << "OnForegroundApplicationChangedTest001 Start";
84 try {
85 auto appStateData_= make_shared<AppExecFwk::AppStateData>();
86 appStateData_->bundleName = "com.ohos.sceneboard";
87 appStateObserver_->OnForegroundApplicationChanged(*appStateData_);
88 EXPECT_TRUE(true);
89 } catch (...) {
90 EXPECT_TRUE(false);
91 GTEST_LOG_(INFO) << "OnForegroundApplicationChangedTest001 ERROR";
92 }
93 GTEST_LOG_(INFO) << "OnForegroundApplicationChangedTest001 End";
94 }
95
96 /**
97 * @tc.name: GetInstanceTest001
98 * @tc.desc: Read IO data
99 * @tc.type: FUNC
100 * @tc.require: issuesI92WQP
101 */
102 HWTEST_F(AppStateObserverTest, GetInstanceTest001, TestSize.Level1)
103 {
104 GTEST_LOG_(INFO) << "GetInstanceTest001 Start";
105 try {
106 shared_ptr<AppStateObserverManager> appStateObserverManager1_ = make_shared<AppStateObserverManager>();
107 EXPECT_TRUE(true);
108 } catch (...) {
109 EXPECT_TRUE(false);
110 GTEST_LOG_(INFO) << "GetInstanceTest001 ERROR";
111 }
112 GTEST_LOG_(INFO) << "GetInstanceTest001 End";
113 }
114
115 /**
116 * @tc.name: SubscribeAppStateTest001
117 * @tc.desc: Read IO data
118 * @tc.type: FUNC
119 * @tc.require: issuesI92WQP
120 */
121 HWTEST_F(AppStateObserverTest, SubscribeAppStateTest001, TestSize.Level1)
122 {
123 GTEST_LOG_(INFO) << "SubscribeAppStateTest001 Start";
124 try {
125 vector<string> bundleNameList = {"com.example"};
126 OHOS::DelayedSingleton<OHOS::AppExecFwk::AppMgrClient>::instance_ = nullptr;
127 appStateObserverManager_->SubscribeAppState(bundleNameList);
128 EXPECT_FALSE(false);
129 } catch (...) {
130 EXPECT_FALSE(true);
131 GTEST_LOG_(INFO) << "SubscribeAppStateTest001 ERROR";
132 }
133 GTEST_LOG_(INFO) << "SubscribeAppStateTest001 End";
134 }
135
136 /**
137 * @tc.name: SubscribeAppStateTest002
138 * @tc.desc: Read IO data
139 * @tc.type: FUNC
140 * @tc.require: issuesI92WQP
141 */
142 HWTEST_F(AppStateObserverTest, SubscribeAppStateTest002, TestSize.Level1)
143 {
144 GTEST_LOG_(INFO) << "SubscribeAppStateTest002 Start";
145 try {
146 vector<string> bundleNameList = {"com.example"};
147 OHOS::DelayedSingleton<OHOS::AppExecFwk::AppMgrClient>::instance_ =
148 make_shared<OHOS::AppExecFwk::AppMgrClient>();
149 sptr<OHOS::AppExecFwk::ApplicationStateObserverStub> appStateObserver1_ =
150 sptr<AppStateObserver>(new (std::nothrow) AppStateObserver());
151 appStateObserverManager_->appStateObserver_ = appStateObserver1_;
152 appStateObserverManager_->SubscribeAppState(bundleNameList);
153 EXPECT_FALSE(false);
154 } catch (...) {
155 EXPECT_FALSE(true);
156 GTEST_LOG_(INFO) << "SubscribeAppStateTest002 ERROR";
157 }
158 GTEST_LOG_(INFO) << "SubscribeAppStateTest002 End";
159 }
160
161 /**
162 * @tc.name: SubscribeAppStateTest003
163 * @tc.desc: Read IO data
164 * @tc.type: FUNC
165 * @tc.require: issuesI92WQP
166 */
167 HWTEST_F(AppStateObserverTest, SubscribeAppStateTest003, TestSize.Level1)
168 {
169 GTEST_LOG_(INFO) << "SubscribeAppStateTest003 Start";
170 try {
171 vector<string> bundleNameList = {"com.example"};
172 OHOS::DelayedSingleton<OHOS::AppExecFwk::AppMgrClient>::instance_ =
173 make_shared<OHOS::AppExecFwk::AppMgrClient>();
174 appStateObserverManager_->appStateObserver_ = nullptr;
175 appStateObserverManager_->SubscribeAppState(bundleNameList);
176 EXPECT_TRUE(true);
177 } catch (...) {
178 EXPECT_TRUE(false);
179 GTEST_LOG_(INFO) << "SubscribeAppStateTest003 ERROR";
180 }
181 GTEST_LOG_(INFO) << "SubscribeAppStateTest003 End";
182 }
183
184 /**
185 * @tc.name: SubscribeAppStateTest004
186 * @tc.desc: Read IO data
187 * @tc.type: FUNC
188 * @tc.require: issuesI92WQP
189 */
190 HWTEST_F(AppStateObserverTest, SubscribeAppStateTest004, TestSize.Level1)
191 {
192 GTEST_LOG_(INFO) << "SubscribeAppStateTest004 Start";
193 try {
194 vector<string> bundleNameList = {""};
195 OHOS::DelayedSingleton<OHOS::AppExecFwk::AppMgrClient>::instance_ =
196 make_shared<OHOS::AppExecFwk::AppMgrClient>();
197 appStateObserverManager_->appStateObserver_ = nullptr;
198 appStateObserverManager_->SubscribeAppState(bundleNameList);
199 EXPECT_TRUE(true);
200 } catch (...) {
201 EXPECT_TRUE(false);
202 GTEST_LOG_(INFO) << "SubscribeAppStateTest004 ERROR";
203 }
204 GTEST_LOG_(INFO) << "SubscribeAppStateTest004 End";
205 }
206
207 /**
208 * @tc.name: UnSubscribeAppStateTest001
209 * @tc.desc: Read IO data
210 * @tc.type: FUNC
211 * @tc.require: issuesI92WQP
212 */
213 HWTEST_F(AppStateObserverTest, UnSubscribeAppStateTest001, TestSize.Level1)
214 {
215 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest001 Start";
216 try {
217 appStateObserverManager_->appStateObserver_ = nullptr;
218 appStateObserverManager_->UnSubscribeAppState();
219 EXPECT_FALSE(false);
220 } catch (...) {
221 EXPECT_FALSE(true);
222 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest001 ERROR";
223 }
224 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest001 End";
225 }
226
227 /**
228 * @tc.name: UnSubscribeAppStateTest002
229 * @tc.desc: Read IO data
230 * @tc.type: FUNC
231 * @tc.require: issuesI92WQP
232 */
233 HWTEST_F(AppStateObserverTest, UnSubscribeAppStateTest002, TestSize.Level1)
234 {
235 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest002 Start";
236 try {
237 sptr<OHOS::AppExecFwk::ApplicationStateObserverStub> appStateObserver1_ =
238 sptr<AppStateObserver>(new (std::nothrow) AppStateObserver());
239 appStateObserverManager_->appStateObserver_ = appStateObserver1_;
240 OHOS::DelayedSingleton<OHOS::AppExecFwk::AppMgrClient>::instance_ = nullptr;
241 appStateObserverManager_->UnSubscribeAppState();
242 EXPECT_FALSE(false);
243 } catch (...) {
244 EXPECT_FALSE(true);
245 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest002 ERROR";
246 }
247 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest002 End";
248 }
249
250 /**
251 * @tc.name: UnSubscribeAppStateTest003
252 * @tc.desc: Read IO data
253 * @tc.type: FUNC
254 * @tc.require: issuesI92WQP
255 */
256 HWTEST_F(AppStateObserverTest, UnSubscribeAppStateTest003, TestSize.Level1)
257 {
258 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest003 Start";
259 try {
260 sptr<OHOS::AppExecFwk::ApplicationStateObserverStub> appStateObserver1_ =
261 sptr<AppStateObserver>(new (std::nothrow) AppStateObserver());
262 appStateObserverManager_->appStateObserver_ = appStateObserver1_;
263 OHOS::DelayedSingleton<OHOS::AppExecFwk::AppMgrClient>::instance_ =
264 make_shared<OHOS::AppExecFwk::AppMgrClient>();
265 appStateObserverManager_->UnSubscribeAppState();
266 EXPECT_TRUE(true);
267 } catch (...) {
268 EXPECT_TRUE(false);
269 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest003 ERROR";
270 }
271 GTEST_LOG_(INFO) << "UnSubscribeAppStateTest003 End";
272 }
273 } // namespace OHOS::FileManagement::CloudDisk::Test