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