1 /*
2 * Copyright (c) 2022-2023 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 <cstddef>
17 #include <cstdio>
18 #include <future>
19 #include <gmock/gmock.h>
20 #include <gtest/gtest.h>
21 #include <string>
22
23 #include "b_error/b_error.h"
24 #include "element_name.h"
25 #include "ext_extension_mock.h"
26 #include "module_ipc/svc_backup_connection.h"
27
28 namespace OHOS::FileManagement::Backup {
29 using namespace std;
30 using namespace testing;
31
32 namespace {
33 constexpr int32_t WAIT_TIME = 1;
34 constexpr int DEFAULT_USER_ID = 100;
35 } // namespace
36
37 class SvcBackupConnectionTest : public testing::Test {
38 public:
SetUpTestCase(void)39 static void SetUpTestCase(void) {};
TearDownTestCase()40 static void TearDownTestCase() {};
41 void SetUp() override;
42 void TearDown() override;
43 sptr<SvcBackupConnection> backupCon_ = nullptr;
44 };
45
CallDied(const std::string && name)46 static void CallDied(const std::string &&name)
47 {
48 GTEST_LOG_(INFO) << "ServiceReverseProxyTest-CallDied SUCCESS";
49 }
50
CallDone(const std::string && name)51 static void CallDone(const std::string &&name)
52 {
53 GTEST_LOG_(INFO) << "ServiceReverseProxyTest-CallDone SUCCESS";
54 }
55
SetUp()56 void SvcBackupConnectionTest::SetUp()
57 {
58 backupCon_ = sptr(new SvcBackupConnection(CallDied, CallDone));
59 }
TearDown()60 void SvcBackupConnectionTest::TearDown()
61 {
62 backupCon_ = nullptr;
63 }
64
65 /**
66 * @tc.number: SUB_BackupConnection_OnAbilityConnectDone_0100
67 * @tc.name: SUB_BackupConnection_OnAbilityConnectDone_0100
68 * @tc.desc: 测试 OnAbilityConnectDone 链接回调接口调用成功
69 * @tc.size: MEDIUM
70 * @tc.type: FUNC
71 * @tc.level Level 1
72 * @tc.require: I6F3GV
73 */
74 HWTEST_F(SvcBackupConnectionTest, SUB_BackupConnection_OnAbilityConnectDone_0100, testing::ext::TestSize.Level1)
75 {
76 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-begin SUB_BackupConnection_OnAbilityConnectDone_0100";
77 AppExecFwk::ElementName element;
78 string bundleName = "";
79 element.SetBundleName(bundleName);
80 int resultCode = 1;
81 sptr<BackupExtExtensionMock> mock = sptr(new BackupExtExtensionMock());
82 backupCon_->OnAbilityConnectDone(element, mock->AsObject(), resultCode);
83 bool ret = backupCon_->IsExtAbilityConnected();
84 EXPECT_TRUE(ret);
85 mock = nullptr;
86 backupCon_->OnAbilityConnectDone(element, nullptr, resultCode);
87 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-end SUB_BackupConnection_OnAbilityConnectDone_0100";
88 }
89
90 /**
91 * @tc.number: SUB_BackupConnection_OnAbilityDisconnectDone_0100
92 * @tc.name: SUB_BackupConnection_OnAbilityDisconnectDone_0100
93 * @tc.desc: 测试 OnAbilityDisconnectDone 链接回调接口调用成功
94 * @tc.size: MEDIUM
95 * @tc.type: FUNC
96 * @tc.level Level 1
97 * @tc.require: I6F3GV
98 */
99 HWTEST_F(SvcBackupConnectionTest, SUB_BackupConnection_OnAbilityDisconnectDone_0100, testing::ext::TestSize.Level1)
100 {
101 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-begin SUB_BackupConnection_OnAbilityDisconnectDone_0100";
102 AppExecFwk::ElementName element;
103 string bundleName = "";
104 element.SetBundleName(bundleName);
105 int resultCode = 1;
106 backupCon_->OnAbilityDisconnectDone(element, resultCode);
107 bool ret = backupCon_->IsExtAbilityConnected();
108 EXPECT_FALSE(ret);
109 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-end SUB_BackupConnection_OnAbilityDisconnectDone_0100";
110 }
111
112 /**
113 * @tc.number: SUB_BackupConnection_GetBackupExtProxy_0100
114 * @tc.name: SUB_BackupConnection_GetBackupExtProxy_0100
115 * @tc.desc: 测试 GetBackupExtProxy 获取连接状态接口调用成功
116 * @tc.size: MEDIUM
117 * @tc.type: FUNC
118 * @tc.level Level 1
119 * @tc.require: I6F3GV
120 */
121 HWTEST_F(SvcBackupConnectionTest, SUB_BackupConnection_GetBackupExtProxy_0100, testing::ext::TestSize.Level1)
122 {
123 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-begin SUB_BackupConnection_GetBackupExtProxy_0100";
124 auto proxy = backupCon_->GetBackupExtProxy();
125 EXPECT_EQ(proxy, nullptr);
126 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-end SUB_BackupConnection_GetBackupExtProxy_0100";
127 }
128
129 /**
130 * @tc.number: SUB_BackupConnection_ConnectBackupExtAbility_0100
131 * @tc.name: SUB_BackupConnection_ConnectBackupExtAbility_0100
132 * @tc.desc: 测试 ConnectBackupExtAbility 拉起extension接口调用成功
133 * @tc.size: MEDIUM
134 * @tc.type: FUNC
135 * @tc.level Level 1
136 * @tc.require: I6F3GV
137 */
138 HWTEST_F(SvcBackupConnectionTest, SUB_BackupConnection_ConnectBackupExtAbility_0100, testing::ext::TestSize.Level1)
139 {
140 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-begin SUB_BackupConnection_ConnectBackupExtAbility_0100";
141 AAFwk::Want want;
142 ErrCode ret = backupCon_->ConnectBackupExtAbility(want, DEFAULT_USER_ID);
143 EXPECT_NE(ret, BError(BError::Codes::OK));
144 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-end SUB_BackupConnection_ConnectBackupExtAbility_0100";
145 }
146
CallBack(sptr<SvcBackupConnection> backupCon)147 static void CallBack(sptr<SvcBackupConnection> backupCon)
148 {
149 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-CallBack Begin";
150 sleep(WAIT_TIME);
151 backupCon->OnAbilityDisconnectDone({}, WAIT_TIME);
152 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-CallBack End";
153 }
154
155 /**
156 * @tc.number: SUB_BackupConnection_DisconnectBackupExtAbility_0100
157 * @tc.name: SUB_BackupConnection_DisconnectBackupExtAbility_0100
158 * @tc.desc: 测试 DisconnectBackupExtAbility 拉起extension接口调用成功
159 * @tc.size: MEDIUM
160 * @tc.type: FUNC
161 * @tc.level Level 1
162 * @tc.require: I6F3GV
163 */
164 HWTEST_F(SvcBackupConnectionTest, SUB_BackupConnection_DisconnectBackupExtAbility_0100, testing::ext::TestSize.Level1)
165 {
166 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-begin SUB_BackupConnection_DisconnectBackupExtAbility_0100";
167 ErrCode ret = backupCon_->DisconnectBackupExtAbility();
168 EXPECT_EQ(ret, BError(BError::Codes::OK));
169 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-DisconnectBackupExtAbility async Begin";
170 auto future = std::async(std::launch::async, CallBack, backupCon_);
171 sleep(WAIT_TIME);
172 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-DisconnectBackupExtAbility Branches Begin";
173 ret = backupCon_->DisconnectBackupExtAbility();
174 EXPECT_EQ(ret, BError(BError::Codes::OK));
175 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-DisconnectBackupExtAbility Branches End";
176 future.get();
177 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-end SUB_BackupConnection_DisconnectBackupExtAbility_0100";
178 }
179 } // namespace OHOS::FileManagement::Backup