1 /*
2 * Copyright (c) 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
18 #define private public
19 #define protected public
20 #include "extension_base.h"
21 #undef private
22 #undef protected
23
24 #include "ability_handler.h"
25 #include "ability_transaction_callback_info.h"
26 #include "configuration.h"
27 #include "hilog_wrapper.h"
28 #include "iremote_object.h"
29 #include "mock_ability_token.h"
30 #include "ohos_application.h"
31 #include "extension_context.h"
32 #include "want.h"
33
34 using namespace testing::ext;
35 using OHOS::AppExecFwk::ElementName;
36
37 namespace OHOS {
38 namespace AbilityRuntime {
39 class AbilityExtensionBaseTest : public testing::Test {
40 public:
41 static void SetUpTestCase();
42 static void TearDownTestCase();
43 void SetUp() override;
44 void TearDown() override;
45 };
46
SetUpTestCase(void)47 void AbilityExtensionBaseTest::SetUpTestCase(void)
48 {}
49
TearDownTestCase(void)50 void AbilityExtensionBaseTest::TearDownTestCase(void)
51 {}
52
SetUp()53 void AbilityExtensionBaseTest::SetUp()
54 {}
55
TearDown()56 void AbilityExtensionBaseTest::TearDown()
57 {}
58
59 /**
60 * @tc.name: Init_0100
61 * @tc.desc: basic function test.
62 * @tc.type: FUNC
63 */
64 HWTEST_F(AbilityExtensionBaseTest, Init_0100, TestSize.Level1)
65 {
66 HILOG_INFO("Init start");
67
68 std::shared_ptr<AppExecFwk::AbilityLocalRecord> record = nullptr;
69 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
70 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
71 sptr<IRemoteObject> token = nullptr;
72
73 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
74 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
75 AbilityRuntime::ApplicationContext::GetInstance();
76 applicationContext->AttachContextImpl(contextImpl);
77 application->SetApplicationContext(applicationContext);
78
79 ExtensionBase<ExtensionContext> extensionBase;
80 extensionBase.Init(record, application, handler, token);
81 EXPECT_TRUE(true);
82
83 HILOG_INFO("Init end");
84 }
85
86 /**
87 * @tc.name: CreateAndInitContext_0100
88 * @tc.desc: basic function test.
89 * @tc.type: FUNC
90 */
91 HWTEST_F(AbilityExtensionBaseTest, CreateAndInitContext_0100, TestSize.Level1)
92 {
93 HILOG_INFO("CreateAndInitContext start");
94
95 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
96 info->name = "ExtensionBaseTest";
97 std::shared_ptr<AppExecFwk::AbilityLocalRecord> record =
98 std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr);
99 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
100 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
101 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
102
103 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
104 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
105 AbilityRuntime::ApplicationContext::GetInstance();
106 applicationContext->AttachContextImpl(contextImpl);
107 application->SetApplicationContext(applicationContext);
108
109 ExtensionBase<ExtensionContext> extensionBase;
110 extensionBase.Init(record, application, handler, token);
111 std::shared_ptr<ExtensionContext> context = extensionBase.CreateAndInitContext(record, application, handler, token);
112 EXPECT_STREQ(context->GetAbilityInfo()->name.c_str(), "ExtensionBaseTest");
113 EXPECT_TRUE(true);
114
115 HILOG_INFO("CreateAndInitContext end");
116 }
117
118 /**
119 * @tc.name: GetContext_0100
120 * @tc.desc: basic function test.
121 * @tc.type: FUNC
122 */
123 HWTEST_F(AbilityExtensionBaseTest, GetContext_0100, TestSize.Level1)
124 {
125 HILOG_INFO("GetContext start");
126
127 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
128 info->name = "ExtensionBaseTest";
129 std::shared_ptr<AppExecFwk::AbilityLocalRecord> record =
130 std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr);
131 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
132 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
133 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
134
135 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
136 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
137 AbilityRuntime::ApplicationContext::GetInstance();
138 applicationContext->AttachContextImpl(contextImpl);
139 application->SetApplicationContext(applicationContext);
140
141 ExtensionBase<ExtensionContext> extensionBase;
142 extensionBase.Init(record, application, handler, token);
143 std::shared_ptr<ExtensionContext> context = extensionBase.GetContext();
144 EXPECT_STREQ(context->GetAbilityInfo()->name.c_str(), "ExtensionBaseTest");
145 EXPECT_TRUE(true);
146
147 HILOG_INFO("GetContext end");
148 }
149
150 /**
151 * @tc.name: OnConfigurationUpdated_0100
152 * @tc.desc: basic function test.
153 * @tc.type: FUNC
154 */
155 HWTEST_F(AbilityExtensionBaseTest, OnConfigurationUpdated_0100, TestSize.Level1)
156 {
157 HILOG_INFO("OnConfigurationUpdated start");
158
159 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
160 std::shared_ptr<AppExecFwk::AbilityLocalRecord> record =
161 std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr);
162 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
163 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
164 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
165
166 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
167 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
168 AbilityRuntime::ApplicationContext::GetInstance();
169 applicationContext->AttachContextImpl(contextImpl);
170 application->SetApplicationContext(applicationContext);
171
172 AppExecFwk::Configuration configuration;
173 application->SetConfiguration(configuration);
174
175 ExtensionBase<ExtensionContext> extensionBase;
176 extensionBase.Init(record, application, handler, token);
177 extensionBase.OnConfigurationUpdated(configuration);
178 EXPECT_TRUE(true);
179
180 HILOG_INFO("OnConfigurationUpdated end");
181 }
182
183 /**
184 * @tc.name: OnMemoryLevel_0100
185 * @tc.desc: basic function test.
186 * @tc.type: FUNC
187 */
188 HWTEST_F(AbilityExtensionBaseTest, OnMemoryLevel_0100, TestSize.Level1)
189 {
190 HILOG_INFO("OnMemoryLevel start");
191
192 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
193 std::shared_ptr<AppExecFwk::AbilityLocalRecord> record =
194 std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr);
195 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
196 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
197 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
198
199 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
200 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
201 AbilityRuntime::ApplicationContext::GetInstance();
202 applicationContext->AttachContextImpl(contextImpl);
203 application->SetApplicationContext(applicationContext);
204
205 ExtensionBase<ExtensionContext> extensionBase;
206 extensionBase.Init(record, application, handler, token);
207
208 int level = 0;
209 extensionBase.OnMemoryLevel(level);
210 EXPECT_TRUE(true);
211
212 HILOG_INFO("OnMemoryLevel end");
213 }
214
215 } // namespace AbilityRuntime
216 } // namespace OHOS
217