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 <gtest/gtest.h>
17 #include <memory>
18
19 #define private public
20 #define protected public
21 #include "exit_info_data_manager.h"
22 #undef private
23 #undef protected
24
25 #include "ability_config.h"
26 #include "ability_manager_errors.h"
27 #include "ability_scheduler.h"
28 #include "ability_util.h"
29 #include "bundlemgr/mock_bundle_manager.h"
30 #include "hilog_tag_wrapper.h"
31 #include "mock_ability_connect_callback.h"
32 #include "mock_sa_call.h"
33 #include "mock_task_handler_wrap.h"
34 #include "sa_mgr_client.h"
35 #include "system_ability_definition.h"
36 #include <thread>
37 #include <chrono>
38
39 using namespace testing::ext;
40 using namespace OHOS::AppExecFwk;
41 using testing::_;
42 using testing::Return;
43
44 namespace {
45 const int32_t SLEEP_TIME = 10000;
46 }
47 namespace OHOS {
48 namespace AAFwk {
49
50 class ExitInfoDataManagerTest : public testing::Test {
51 public:
52 static void SetUpTestCase(void);
53 static void TearDownTestCase(void);
54 void SetUp();
55 void TearDown();
56 };
57
SetUpTestCase(void)58 void ExitInfoDataManagerTest::SetUpTestCase(void)
59 {}
TearDownTestCase(void)60 void ExitInfoDataManagerTest::TearDownTestCase(void)
61 {}
62
SetUp()63 void ExitInfoDataManagerTest::SetUp()
64 {}
TearDown()65 void ExitInfoDataManagerTest::TearDown()
66 {}
67
68 /*
69 * Feature: ExitInfoDataManager
70 * Function: AddExitInfo
71 * SubFunction: NA
72 * EnvConditions:NA
73 * CaseDescription: Verify AddExitInfo
74 */
75 HWTEST_F(ExitInfoDataManagerTest, AddExitInfo_001, TestSize.Level1)
76 {
77 TAG_LOGD(AAFwkTag::TEST, "AddExitInfo_001 called. start");
78 uint32_t accessTokenId = 0;
79 AbilityRuntime::ExitCacheInfo cacheInfo;
80 auto ret = AbilityRuntime::ExitInfoDataManager::GetInstance().AddExitInfo(accessTokenId, cacheInfo);
81 EXPECT_EQ(ret, true);
82 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().AddExitInfo(accessTokenId, cacheInfo);
83 EXPECT_EQ(ret, false);
84 TAG_LOGD(AAFwkTag::TEST, "AddExitInfo_001 called. end");
85 }
86
87 /*
88 * Feature: ExitInfoDataManager
89 * Function: DeleteExitInfo
90 * SubFunction: NA
91 * EnvConditions:NA
92 * CaseDescription: Verify DeleteExitInfo
93 */
94 HWTEST_F(ExitInfoDataManagerTest, DeleteExitInfo_001, TestSize.Level1)
95 {
96 TAG_LOGD(AAFwkTag::TEST, "DeleteExitInfo_001 called. start");
97 uint32_t accessTokenId = 222;
98 AbilityRuntime::ExitCacheInfo cacheInfo;
99 auto ret = AbilityRuntime::ExitInfoDataManager::GetInstance().AddExitInfo(accessTokenId, cacheInfo);
100 EXPECT_EQ(ret, true);
101 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().DeleteExitInfo(accessTokenId);
102 EXPECT_EQ(ret, true);
103 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().DeleteExitInfo(accessTokenId);
104 EXPECT_EQ(ret, false);
105 TAG_LOGD(AAFwkTag::TEST, "DeleteExitInfo_001 called. end");
106 }
107
108 /*
109 * Feature: ExitInfoDataManager
110 * Function: GetExitInfo
111 * SubFunction: NA
112 * EnvConditions:NA
113 * CaseDescription: Verify GetExitInfo
114 */
115 HWTEST_F(ExitInfoDataManagerTest, GetExitInfo_001, TestSize.Level1)
116 {
117 TAG_LOGD(AAFwkTag::TEST, "GetExitInfo_001 called. start");
118 uint32_t accessTokenId = 333;
119 AbilityRuntime::ExitCacheInfo cacheInfo;
120 auto ret = AbilityRuntime::ExitInfoDataManager::GetInstance().AddExitInfo(accessTokenId, cacheInfo);
121 EXPECT_EQ(ret, true);
122 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().GetExitInfo(accessTokenId, cacheInfo);
123 EXPECT_EQ(ret, true);
124 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().GetExitInfo(accessTokenId, cacheInfo);
125 EXPECT_EQ(ret, false);
126 TAG_LOGD(AAFwkTag::TEST, "GetExitInfo_001 called. end");
127 }
128
129 /*
130 * Feature: ExitInfoDataManager
131 * Function: GetExitInfo
132 * SubFunction: NA
133 * EnvConditions:NA
134 * CaseDescription: Verify GetExitInfo
135 */
136 HWTEST_F(ExitInfoDataManagerTest, GetExitInfo_002, TestSize.Level1)
137 {
138 TAG_LOGD(AAFwkTag::TEST, "GetExitInfo_002 called. start");
139 uint32_t accessTokenId = 666;
140 AbilityRuntime::ExitCacheInfo cacheInfo;
141 cacheInfo.exitInfo.pid_ = 111;
142 cacheInfo.exitInfo.uid_ = 222;
143 auto ret = AbilityRuntime::ExitInfoDataManager::GetInstance().AddExitInfo(accessTokenId, cacheInfo);
144 EXPECT_EQ(ret, true);
145 AbilityRuntime::ExitCacheInfo cacheInfo2;
146 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().GetExitInfo(111, 222, accessTokenId, cacheInfo2);
147 EXPECT_EQ(ret, true);
148 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().GetExitInfo(111, 222, accessTokenId, cacheInfo2);
149 EXPECT_EQ(ret, false);
150 TAG_LOGD(AAFwkTag::TEST, "GetExitInfo_002 called. end");
151 }
152
153 /*
154 * Feature: ExitInfoDataManager
155 * Function: IsExitInfoExist
156 * SubFunction: NA
157 * EnvConditions:NA
158 * CaseDescription: Verify IsExitInfoExist
159 */
160 HWTEST_F(ExitInfoDataManagerTest, IsExitInfoExist_001, TestSize.Level1)
161 {
162 TAG_LOGD(AAFwkTag::TEST, "IsExitInfoExist_001 called. start");
163 uint32_t accessTokenId = 777;
164 AbilityRuntime::ExitCacheInfo cacheInfo;
165 auto ret = AbilityRuntime::ExitInfoDataManager::GetInstance().AddExitInfo(accessTokenId, cacheInfo);
166 EXPECT_EQ(ret, true);
167 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().IsExitInfoExist(accessTokenId);
168 EXPECT_EQ(ret, true);
169 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().DeleteExitInfo(accessTokenId);
170 EXPECT_EQ(ret, true);
171 ret = AbilityRuntime::ExitInfoDataManager::GetInstance().IsExitInfoExist(accessTokenId);
172 EXPECT_EQ(ret, false);
173 TAG_LOGD(AAFwkTag::TEST, "IsExitInfoExist_001 called. end");
174 }
175 } // namespace AAFwk
176 } // namespace OHOS
177