• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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