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 "configuration.h"
26 #include "hilog_tag_wrapper.h"
27 #include "iremote_object.h"
28 #include "mock_ability_token.h"
29 #include "ohos_application.h"
30 #include "extension_context.h"
31 #include "want.h"
32
33 using namespace testing::ext;
34
35 namespace OHOS {
36 namespace AbilityRuntime {
37 class AbilityExtensionContextTest : public testing::Test {
38 public:
39 static void SetUpTestCase();
40 static void TearDownTestCase();
41 void SetUp() override;
42 void TearDown() override;
43 };
44
SetUpTestCase(void)45 void AbilityExtensionContextTest::SetUpTestCase(void)
46 {}
47
TearDownTestCase(void)48 void AbilityExtensionContextTest::TearDownTestCase(void)
49 {}
50
SetUp()51 void AbilityExtensionContextTest::SetUp()
52 {}
53
TearDown()54 void AbilityExtensionContextTest::TearDown()
55 {}
56
57 /**
58 * @tc.name: GetAbilityInfo_0100
59 * @tc.desc: basic function test.
60 * @tc.type: FUNC
61 */
62 HWTEST_F(AbilityExtensionContextTest, GetAbilityInfo_0100, TestSize.Level1)
63 {
64 TAG_LOGI(AAFwkTag::TEST, "GetAbilityInfo start");
65
66 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
67 info->name = "ExtensionContextTest";
68 std::shared_ptr<AppExecFwk::AbilityLocalRecord> record =
69 std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr);
70 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
71 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
72 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
73
74 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
75 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
76 AbilityRuntime::ApplicationContext::GetInstance();
77 applicationContext->AttachContextImpl(contextImpl);
78 application->SetApplicationContext(applicationContext);
79
80 ExtensionBase<ExtensionContext> extensionBase;
81 extensionBase.Init(record, application, handler, token);
82 std::shared_ptr<ExtensionContext> context = extensionBase.GetContext();
83
84 std::shared_ptr<AppExecFwk::AbilityInfo> abilityInfo = context->GetAbilityInfo();
85 EXPECT_STREQ(abilityInfo->name.c_str(), "ExtensionContextTest");
86
87 TAG_LOGI(AAFwkTag::TEST, "GetAbilityInfo end");
88 }
89
90 /**
91 * @tc.name: SetAbilityInfo_0100
92 * @tc.desc: basic function test.
93 * @tc.type: FUNC
94 */
95 HWTEST_F(AbilityExtensionContextTest, SetAbilityInfo_0100, TestSize.Level1)
96 {
97 TAG_LOGI(AAFwkTag::TEST, "SetAbilityInfo start");
98
99 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
100 info->name = "ExtensionContextTest";
101 std::shared_ptr<AppExecFwk::AbilityLocalRecord> record =
102 std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr);
103 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
104 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
105 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
106
107 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
108 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
109 AbilityRuntime::ApplicationContext::GetInstance();
110 applicationContext->AttachContextImpl(contextImpl);
111 application->SetApplicationContext(applicationContext);
112
113 ExtensionBase<ExtensionContext> extensionBase;
114 extensionBase.Init(record, application, handler, token);
115 std::shared_ptr<ExtensionContext> context = extensionBase.GetContext();
116
117 std::shared_ptr<AppExecFwk::AbilityInfo> abilityInfo = context->GetAbilityInfo();
118 EXPECT_STREQ(abilityInfo->name.c_str(), "ExtensionContextTest");
119
120 info->name = "NewExtensionContextTest";
121 context->SetAbilityInfo(info);
122
123 abilityInfo = context->GetAbilityInfo();
124 EXPECT_STREQ(abilityInfo->name.c_str(), "NewExtensionContextTest");
125
126 TAG_LOGI(AAFwkTag::TEST, "SetAbilityInfo end");
127 }
128
129 /**
130 * @tc.number: SetAbilityInfo_0200
131 * @tc.name: SetAbilityInfo
132 * @tc.desc: Set AbilityInfo Failed
133 */
134 HWTEST_F(AbilityExtensionContextTest, SetAbilityInfo_0200, TestSize.Level1)
135 {
136 TAG_LOGI(AAFwkTag::TEST, "SetAbilityInfo start");
137
138 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
139 info->name = "ExtensionContextTest";
140 std::shared_ptr<AppExecFwk::AbilityLocalRecord> record =
141 std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr);
142 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
143 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
144 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
145
146 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
147 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
148 AbilityRuntime::ApplicationContext::GetInstance();
149 applicationContext->AttachContextImpl(contextImpl);
150 application->SetApplicationContext(applicationContext);
151
152 ExtensionBase<ExtensionContext> extensionBase;
153 extensionBase.Init(record, application, handler, token);
154 std::shared_ptr<ExtensionContext> context = extensionBase.GetContext();
155
156 std::shared_ptr<AppExecFwk::AbilityInfo> abilityInfo = context->GetAbilityInfo();
157 EXPECT_STREQ(abilityInfo->name.c_str(), "ExtensionContextTest");
158
159 info = nullptr;
160 context->SetAbilityInfo(info);
161
162 abilityInfo = context->GetAbilityInfo();
163 EXPECT_NE(abilityInfo, nullptr);
164
165 TAG_LOGI(AAFwkTag::TEST, "SetAbilityInfo end");
166 }
167 } // namespace AbilityRuntime
168 } // namespace OHOS
169