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 auto record = std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr, nullptr, 0);
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 = new AppExecFwk::MockAbilityToken();
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 std::shared_ptr<ExtensionContext> context = extensionBase.GetContext();
82
83 std::shared_ptr<AppExecFwk::AbilityInfo> abilityInfo = context->GetAbilityInfo();
84 EXPECT_STREQ(abilityInfo->name.c_str(), "ExtensionContextTest");
85
86 TAG_LOGI(AAFwkTag::TEST, "GetAbilityInfo end");
87 }
88
89 /**
90 * @tc.name: SetAbilityInfo_0100
91 * @tc.desc: basic function test.
92 * @tc.type: FUNC
93 */
94 HWTEST_F(AbilityExtensionContextTest, SetAbilityInfo_0100, TestSize.Level1)
95 {
96 TAG_LOGI(AAFwkTag::TEST, "SetAbilityInfo start");
97
98 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
99 info->name = "ExtensionContextTest";
100 auto record = std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr, nullptr, 0);
101 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
102 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
103 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
104
105 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
106 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
107 AbilityRuntime::ApplicationContext::GetInstance();
108 applicationContext->AttachContextImpl(contextImpl);
109 application->SetApplicationContext(applicationContext);
110
111 ExtensionBase<ExtensionContext> extensionBase;
112 extensionBase.Init(record, application, handler, token);
113 std::shared_ptr<ExtensionContext> context = extensionBase.GetContext();
114
115 std::shared_ptr<AppExecFwk::AbilityInfo> abilityInfo = context->GetAbilityInfo();
116 EXPECT_STREQ(abilityInfo->name.c_str(), "ExtensionContextTest");
117
118 info->name = "NewExtensionContextTest";
119 context->SetAbilityInfo(info);
120
121 abilityInfo = context->GetAbilityInfo();
122 EXPECT_STREQ(abilityInfo->name.c_str(), "NewExtensionContextTest");
123
124 TAG_LOGI(AAFwkTag::TEST, "SetAbilityInfo end");
125 }
126
127 /**
128 * @tc.number: SetAbilityInfo_0200
129 * @tc.name: SetAbilityInfo
130 * @tc.desc: Set AbilityInfo Failed
131 */
132 HWTEST_F(AbilityExtensionContextTest, SetAbilityInfo_0200, TestSize.Level1)
133 {
134 TAG_LOGI(AAFwkTag::TEST, "SetAbilityInfo start");
135
136 std::shared_ptr<AppExecFwk::AbilityInfo> info = std::make_shared<AppExecFwk::AbilityInfo>();
137 info->name = "ExtensionContextTest";
138 auto record = std::make_shared<AppExecFwk::AbilityLocalRecord>(info, nullptr, nullptr, 0);
139 std::shared_ptr<AppExecFwk::OHOSApplication> application = std::make_shared<AppExecFwk::OHOSApplication>();
140 std::shared_ptr<AppExecFwk::AbilityHandler> handler = std::make_shared<AppExecFwk::AbilityHandler>(nullptr);
141 sptr<IRemoteObject> token = new AppExecFwk::MockAbilityToken();
142
143 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
144 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
145 AbilityRuntime::ApplicationContext::GetInstance();
146 applicationContext->AttachContextImpl(contextImpl);
147 application->SetApplicationContext(applicationContext);
148
149 ExtensionBase<ExtensionContext> extensionBase;
150 extensionBase.Init(record, application, handler, token);
151 std::shared_ptr<ExtensionContext> context = extensionBase.GetContext();
152
153 std::shared_ptr<AppExecFwk::AbilityInfo> abilityInfo = context->GetAbilityInfo();
154 EXPECT_STREQ(abilityInfo->name.c_str(), "ExtensionContextTest");
155
156 info = nullptr;
157 context->SetAbilityInfo(info);
158
159 abilityInfo = context->GetAbilityInfo();
160 EXPECT_NE(abilityInfo, nullptr);
161
162 TAG_LOGI(AAFwkTag::TEST, "SetAbilityInfo end");
163 }
164 } // namespace AbilityRuntime
165 } // namespace OHOS
166