• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <gmock/gmock.h>
18 
19 #include "discovery_service.h"
20 #include "disc_client_proxy.h"
21 #include "softbus_log.h"
22 #include "softbus_error_code.h"
23 #include "softbus_ipc_def.h"
24 #include "remote_object_mock.h"
25 #include "client_info_manager_mock.h"
26 #include "exception_branch_checker.h"
27 
28 using namespace testing::ext;
29 using testing::Return;
30 
31 namespace OHOS {
32 class DiscClientProxyTest : public testing::Test {
33 public:
SetUpTestCase()34     static void SetUpTestCase() {}
TearDownTestCase()35     static void TearDownTestCase() {}
SetUp()36     void SetUp() override {}
TearDown()37     void TearDown() override {}
38 
39     static inline std::string pkgName = "TestPackage";
40     static constexpr int SUBSCRIBE_ID = 8;
41     static constexpr int PUBLISH_ID = 16;
42 };
43 
44 /*
45 * @tc.name: OnDeviceFound001
46 * @tc.desc: both fail and success case
47 * @tc.type: FUNC
48 * @tc.require:
49 */
50 HWTEST_F(DiscClientProxyTest, OnDeviceFound001, TestSize.Level1)
51 {
52     DLOGI("OnDeviceFound001 begin ----");
53     const DeviceInfo device {};
54     const InnerDeviceInfoAddtions addition{};
55 
56     {
57         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
58         RemoteObjectMock::SetupStub(objectMock);
59         EXPECT_CALL(*objectMock, SendRequest).WillRepeatedly(Return(SOFTBUS_ERR));
60         ClientInfoManagerMock managerMock;
61         managerMock.SetupStub();
62         ExceptionBranchChecker checker("send request failed");
63 
64         EXPECT_EQ(ClientIpcOnDeviceFound(pkgName.c_str(), &device, &addition), SOFTBUS_OK);
65         EXPECT_EQ(checker.GetResult(), true);
66     }
67     {
68         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
69         RemoteObjectMock::SetupStub(objectMock);
70         ClientInfoManagerMock managerMock;
71         managerMock.SetupStub();
72 
73         EXPECT_EQ(ClientIpcOnDeviceFound(pkgName.c_str(), &device, &addition), SOFTBUS_OK);
74         EXPECT_EQ(objectMock->GetResult(CLIENT_DISCOVERY_DEVICE_FOUND, &device), true);
75     }
76 
77     RemoteObjectMock::Destroy();
78     DLOGI("OnDeviceFound001 end ----");
79 }
80 
81 /*
82 * @tc.name: OnDiscoverFailed001
83 * @tc.desc: both fail and success case
84 * @tc.type: FUNC
85 * @tc.require:
86 */
87 HWTEST_F(DiscClientProxyTest, OnDiscoverFailed001, TestSize.Level1)
88 {
89     DLOGI("OnDiscoverFailed001 begin ----");
90     {
91         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
92         RemoteObjectMock::SetupStub(objectMock);
93         EXPECT_CALL(*objectMock, SendRequest).WillRepeatedly(Return(SOFTBUS_ERR));
94         ClientInfoManagerMock managerMock;
95         managerMock.SetupStub();
96         ExceptionBranchChecker checker("send request failed");
97 
98         EXPECT_EQ(ClientIpcOnDiscoverFailed(pkgName.c_str(), SUBSCRIBE_ID, DISCOVERY_FAIL_REASON_NOT_SUPPORT_MEDIUM),
99                   SOFTBUS_OK);
100         EXPECT_EQ(checker.GetResult(), true);
101     }
102     {
103         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
104         RemoteObjectMock::SetupStub(objectMock);
105         ClientInfoManagerMock managerMock;
106         managerMock.SetupStub();
107 
108         EXPECT_EQ(ClientIpcOnDiscoverFailed(pkgName.c_str(), SUBSCRIBE_ID, DISCOVERY_FAIL_REASON_NOT_SUPPORT_MEDIUM),
109                   SOFTBUS_OK);
110         EXPECT_EQ(objectMock->GetResult(CLIENT_DISCOVERY_FAIL, nullptr, 0, SUBSCRIBE_ID,
111                                         DISCOVERY_FAIL_REASON_NOT_SUPPORT_MEDIUM), true);
112     }
113 
114     RemoteObjectMock::Destroy();
115     DLOGI("OnDiscoverFailed001 end ----");
116 }
117 
118 /*
119 * @tc.name: DiscoverySuccess001
120 * @tc.desc: both fail and success case
121 * @tc.type: FUNC
122 * @tc.require:
123 */
124 HWTEST_F(DiscClientProxyTest, DiscoverySuccess001, TestSize.Level1)
125 {
126     DLOGI("DiscoverySuccess001 begin ----");
127     {
128         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
129         RemoteObjectMock::SetupStub(objectMock);
130         EXPECT_CALL(*objectMock, SendRequest).WillRepeatedly(Return(SOFTBUS_ERR));
131         ClientInfoManagerMock managerMock;
132         managerMock.SetupStub();
133         ExceptionBranchChecker checker("send request failed");
134 
135         EXPECT_EQ(ClientIpcDiscoverySuccess(pkgName.c_str(), SUBSCRIBE_ID), SOFTBUS_OK);
136         EXPECT_EQ(checker.GetResult(), true);
137     }
138     {
139         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
140         RemoteObjectMock::SetupStub(objectMock);
141         ClientInfoManagerMock managerMock;
142         managerMock.SetupStub();
143 
144         EXPECT_EQ(ClientIpcDiscoverySuccess(pkgName.c_str(), SUBSCRIBE_ID), SOFTBUS_OK);
145         EXPECT_EQ(objectMock->GetResult(CLIENT_DISCOVERY_SUCC, nullptr, 0, SUBSCRIBE_ID), true);
146     }
147 
148     RemoteObjectMock::Destroy();
149     DLOGI("DiscoverySuccess001 end ----");
150 }
151 
152 /*
153 * @tc.name: OnPublishSuccess001
154 * @tc.desc: both fail and success case
155 * @tc.type: FUNC
156 * @tc.require:
157 */
158 HWTEST_F(DiscClientProxyTest, OnPublishSuccess001, TestSize.Level1)
159 {
160     DLOGI("DiscoverySuccess001 begin ----");
161     {
162         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
163         RemoteObjectMock::SetupStub(objectMock);
164         EXPECT_CALL(*objectMock, SendRequest).WillRepeatedly(Return(SOFTBUS_ERR));
165         ClientInfoManagerMock managerMock;
166         managerMock.SetupStub();
167         ExceptionBranchChecker checker("send request failed");
168 
169         EXPECT_EQ(ClientIpcOnPublishSuccess(pkgName.c_str(), PUBLISH_ID), SOFTBUS_OK);
170         EXPECT_EQ(checker.GetResult(), true);
171     }
172     {
173         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
174         RemoteObjectMock::SetupStub(objectMock);
175         ClientInfoManagerMock managerMock;
176         managerMock.SetupStub();
177 
178         EXPECT_EQ(ClientIpcOnPublishSuccess(pkgName.c_str(), PUBLISH_ID), SOFTBUS_OK);
179         EXPECT_EQ(objectMock->GetResult(CLIENT_PUBLISH_SUCC, nullptr, PUBLISH_ID), true);
180     }
181 
182     RemoteObjectMock::Destroy();
183     DLOGI("OnPublishSuccess001 end ----");
184 }
185 
186 /*
187 * @tc.name: OnPublishFail001
188 * @tc.desc: both fail and success case
189 * @tc.type: FUNC
190 * @tc.require:
191 */
192 HWTEST_F(DiscClientProxyTest, OnPublishFail001, TestSize.Level1)
193 {
194     DLOGI("OnPublishFail001 begin ----");
195     {
196         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
197         RemoteObjectMock::SetupStub(objectMock);
198         EXPECT_CALL(*objectMock, SendRequest).WillRepeatedly(Return(SOFTBUS_ERR));
199         ClientInfoManagerMock managerMock;
200         managerMock.SetupStub();
201         ExceptionBranchChecker checker("send request failed");
202 
203         EXPECT_EQ(ClientIpcOnPublishFail(pkgName.c_str(), PUBLISH_ID, PUBLISH_FAIL_REASON_NOT_SUPPORT_MEDIUM),
204                   SOFTBUS_OK);
205         EXPECT_EQ(checker.GetResult(), true);
206     }
207     {
208         sptr<RemoteObjectMock> objectMock = new (std::nothrow) RemoteObjectMock();
209         RemoteObjectMock::SetupStub(objectMock);
210         ClientInfoManagerMock managerMock;
211         managerMock.SetupStub();
212 
213         EXPECT_EQ(ClientIpcOnPublishFail(pkgName.c_str(), PUBLISH_ID, PUBLISH_FAIL_REASON_NOT_SUPPORT_MEDIUM),
214                   SOFTBUS_OK);
215         EXPECT_EQ(objectMock->GetResult(CLIENT_PUBLISH_FAIL, nullptr, PUBLISH_ID, 0,
216                                         PUBLISH_FAIL_REASON_NOT_SUPPORT_MEDIUM), true);
217     }
218 
219     RemoteObjectMock::Destroy();
220     DLOGI("OnPublishFail001 end ----");
221 }
222 }