1 /*
2 * Copyright (c) 2022-2024 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 "message_parcel_mock.h"
27 #include "module_ipc/svc_backup_connection.h"
28
29 namespace OHOS::FileManagement::Backup {
30 using namespace std;
31 using namespace testing;
32
33 class SvcBackupConnectionTest : public testing::Test {
34 public:
35 static void SetUpTestCase(void);
36 static void TearDownTestCase();
SetUp()37 void SetUp() override {};
TearDown()38 void TearDown() override {};
39 public:
40 static inline sptr<SvcBackupConnection> backupCon_ = nullptr;
41 static inline shared_ptr<IfaceCastMock> castMock = nullptr;
42 };
43
CallDied(const std::string && name,bool isCleanCalled)44 static void CallDied(const std::string &&name, bool isCleanCalled)
45 {
46 GTEST_LOG_(INFO) << "ServiceReverseProxyTest-CallDied SUCCESS";
47 }
48
CallDone(const std::string && name)49 static void CallDone(const std::string &&name)
50 {
51 GTEST_LOG_(INFO) << "ServiceReverseProxyTest-CallDone SUCCESS";
52 }
53
SetUpTestCase()54 void SvcBackupConnectionTest::SetUpTestCase()
55 {
56 backupCon_ = sptr(new SvcBackupConnection(CallDied, CallDone, "com.example.app"));
57 castMock = std::make_shared<IfaceCastMock>();
58 IfaceCastMock::cast = castMock;
59 }
TearDownTestCase()60 void SvcBackupConnectionTest::TearDownTestCase()
61 {
62 backupCon_ = nullptr;
63 IfaceCastMock::cast = nullptr;
64 castMock = nullptr;
65 }
66
67 /**
68 * @tc.number: SUB_BackupConnection_OnAbilityConnectDone_0100
69 * @tc.name: SUB_BackupConnection_OnAbilityConnectDone_0100
70 * @tc.desc: 测试 OnAbilityConnectDone 链接回调接口调用成功
71 * @tc.size: MEDIUM
72 * @tc.type: FUNC
73 * @tc.level Level 1
74 * @tc.require: I6F3GV
75 */
76 HWTEST_F(SvcBackupConnectionTest, SUB_BackupConnection_OnAbilityConnectDone_0100, testing::ext::TestSize.Level1)
77 {
78 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-begin SUB_BackupConnection_OnAbilityConnectDone_0100";
79 try {
80 int resultCode = 0;
81 AppExecFwk::ElementName element;
82 EXPECT_TRUE(backupCon_ != nullptr);
83 EXPECT_TRUE(castMock != nullptr);
84 backupCon_->OnAbilityConnectDone(element, nullptr, resultCode);
85 EXPECT_TRUE(true);
86
87 sptr<IRemoteObject> remoteObject = sptr(new BackupExtExtensionMock);
88 EXPECT_CALL(*castMock, iface_cast(_)).WillOnce(Return(nullptr));
89 backupCon_->OnAbilityConnectDone(element, remoteObject, resultCode);
90 EXPECT_TRUE(true);
91 } catch (...) {
92 EXPECT_TRUE(false);
93 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-an exception occurred by OnAbilityConnectDone.";
94 }
95 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-end SUB_BackupConnection_OnAbilityConnectDone_0100";
96 }
97
98 /**
99 * @tc.number: SUB_BackupConnection_OnAbilityDisconnectDone_0100
100 * @tc.name: SUB_BackupConnection_OnAbilityDisconnectDone_0100
101 * @tc.desc: 测试 OnAbilityDisconnectDone 链接回调接口调用成功
102 * @tc.size: MEDIUM
103 * @tc.type: FUNC
104 * @tc.level Level 1
105 * @tc.require: I6F3GV
106 */
107 HWTEST_F(SvcBackupConnectionTest, SUB_BackupConnection_OnAbilityDisconnectDone_0100, testing::ext::TestSize.Level1)
108 {
109 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-begin SUB_BackupConnection_OnAbilityDisconnectDone_0100";
110 try {
111 AppExecFwk::ElementName element;
112 string bundleName = "";
113 element.SetBundleName(bundleName);
114 int resultCode = 1;
115
116 EXPECT_TRUE(backupCon_ != nullptr);
117 backupCon_->isConnectCalled_ = false;
118 backupCon_->OnAbilityDisconnectDone(element, resultCode);
119 bool ret = backupCon_->IsExtAbilityConnected();
120 EXPECT_FALSE(ret);
121
122 backupCon_->isConnectCalled_ = true;
123 backupCon_->OnAbilityDisconnectDone(element, resultCode);
124 ret = backupCon_->IsExtAbilityConnected();
125 EXPECT_FALSE(ret);
126 } catch (...) {
127 EXPECT_TRUE(false);
128 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-an exception occurred by OnAbilityDisconnectDone.";
129 }
130 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-end SUB_BackupConnection_OnAbilityDisconnectDone_0100";
131 }
132
133 /**
134 * @tc.number: SUB_BackupConnection_GetBackupExtProxy_0100
135 * @tc.name: SUB_BackupConnection_GetBackupExtProxy_0100
136 * @tc.desc: 测试 GetBackupExtProxy 获取连接状态接口调用成功
137 * @tc.size: MEDIUM
138 * @tc.type: FUNC
139 * @tc.level Level 1
140 * @tc.require: I6F3GV
141 */
142 HWTEST_F(SvcBackupConnectionTest, SUB_BackupConnection_GetBackupExtProxy_0100, testing::ext::TestSize.Level1)
143 {
144 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-begin SUB_BackupConnection_GetBackupExtProxy_0100";
145 EXPECT_TRUE(backupCon_ != nullptr);
146 auto proxy = backupCon_->GetBackupExtProxy();
147 EXPECT_EQ(proxy, nullptr);
148 GTEST_LOG_(INFO) << "SvcBackupConnectionTest-end SUB_BackupConnection_GetBackupExtProxy_0100";
149 }
150 } // namespace OHOS::FileManagement::Backup