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 <securec.h>
18 #include <unistd.h>
19
20 #include "disc_coap.h"
21 #include "disc_manager.h"
22 #include "softbus_adapter_mem.h"
23 #include "softbus_error_code.h"
24
25
26 using namespace testing::ext;
27 namespace OHOS {
28
29 static DiscoveryFuncInterface *g_discCoapFuncInterface = nullptr;
30
31 class DiscCoapTest : public testing::Test {
32 public:
DiscCoapTest()33 DiscCoapTest()
34 {}
~DiscCoapTest()35 ~DiscCoapTest()
36 {}
37 static void SetUpTestCase(void);
38 static void TearDownTestCase(void);
SetUp()39 void SetUp() override {}
TearDown()40 void TearDown() override {}
41 };
42
SetUpTestCase(void)43 void DiscCoapTest::SetUpTestCase(void)
44 {}
45
TearDownTestCase(void)46 void DiscCoapTest::TearDownTestCase(void)
47 {}
48
49 static DiscInnerCallback g_discInnerCb = {
50 .OnDeviceFound = NULL
51 };
52
53 static PublishOption testPubOption = {
54 .freq = LOW,
55 .capabilityBitmap = {64},
56 .capabilityData = nullptr,
57 .dataLen = 0,
58 .ranging = false
59 };
60
61 static SubscribeOption testSubOption = {
62 .freq = LOW,
63 .isSameAccount = false,
64 .isWakeRemote = false,
65 .capabilityBitmap = {128},
66 .capabilityData = nullptr,
67 .dataLen = 0
68 };
69
70 /*
71 * @tc.name: testCoapPublish001
72 * @tc.desc: test CoapPublish
73 * @tc.type: FUNC
74 * @tc.require:
75 */
76 HWTEST_F(DiscCoapTest, testCoapPublish001, TestSize.Level1)
77 {
78 g_discCoapFuncInterface = DiscCoapInit(&g_discInnerCb);
79 int32_t ret = g_discCoapFuncInterface->Publish(nullptr);
80 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
81 ret = g_discCoapFuncInterface->Unpublish(nullptr);
82 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
83
84 ret = g_discCoapFuncInterface->Publish(&testPubOption);
85 EXPECT_EQ(ret, SOFTBUS_OK);
86 ret = g_discCoapFuncInterface->Unpublish(&testPubOption);
87 EXPECT_EQ(ret, SOFTBUS_OK);
88
89 testPubOption.ranging = true;
90 ret = g_discCoapFuncInterface->Publish(&testPubOption);
91 testPubOption.ranging = false;
92 EXPECT_EQ(ret, SOFTBUS_OK);
93 ret = g_discCoapFuncInterface->Unpublish(&testPubOption);
94 EXPECT_EQ(ret, SOFTBUS_OK);
95
96 DiscCoapDeinit();
97 g_discCoapFuncInterface = nullptr;
98 }
99
100 /*
101 * @tc.name: testCoapStartScan001
102 * @tc.desc: test CoapStartScan
103 * @tc.type: FUNC
104 * @tc.require:
105 */
106 HWTEST_F(DiscCoapTest, testCoapStartScan001, TestSize.Level1)
107 {
108 g_discCoapFuncInterface = DiscCoapInit(&g_discInnerCb);
109 int32_t ret = g_discCoapFuncInterface->StartScan(nullptr);
110 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
111 ret = g_discCoapFuncInterface->StopScan(nullptr);
112 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
113
114 ret = g_discCoapFuncInterface->StartScan(&testPubOption);
115 EXPECT_EQ(ret, SOFTBUS_OK);
116 ret = g_discCoapFuncInterface->StopScan(&testPubOption);
117 EXPECT_EQ(ret, SOFTBUS_OK);
118
119 testPubOption.ranging = true;
120 ret = g_discCoapFuncInterface->StartScan(&testPubOption);
121 testPubOption.ranging = false;
122 EXPECT_EQ(ret, SOFTBUS_OK);
123 ret = g_discCoapFuncInterface->StopScan(&testPubOption);
124 EXPECT_EQ(ret, SOFTBUS_OK);
125
126 DiscCoapDeinit();
127 g_discCoapFuncInterface = nullptr;
128 }
129
130 /*
131 * @tc.name: testCoapStartAdvertise001
132 * @tc.desc: test CoapStartAdvertise
133 * @tc.type: FUNC
134 * @tc.require:
135 */
136 HWTEST_F(DiscCoapTest, testCoapStartAdvertise001, TestSize.Level1)
137 {
138 g_discCoapFuncInterface = DiscCoapInit(&g_discInnerCb);
139 int32_t ret = g_discCoapFuncInterface->StartAdvertise(nullptr);
140 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
141 ret = g_discCoapFuncInterface->StopAdvertise(nullptr);
142 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
143
144 ret = g_discCoapFuncInterface->StartAdvertise(&testSubOption);
145 EXPECT_EQ(ret, SOFTBUS_OK);
146 ret = g_discCoapFuncInterface->StopAdvertise(&testSubOption);
147 EXPECT_EQ(ret, SOFTBUS_OK);
148
149 DiscCoapDeinit();
150 g_discCoapFuncInterface = nullptr;
151 }
152
153 /*
154 * @tc.name: testCoapSubscribe001
155 * @tc.desc: test CoapSubscribe
156 * @tc.type: FUNC
157 * @tc.require:
158 */
159 HWTEST_F(DiscCoapTest, testCoapSubscribe001, TestSize.Level1)
160 {
161 g_discCoapFuncInterface = DiscCoapInit(&g_discInnerCb);
162 int32_t ret = g_discCoapFuncInterface->Subscribe(nullptr);
163 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
164 ret = g_discCoapFuncInterface->Unsubscribe(nullptr);
165 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
166
167 ret = g_discCoapFuncInterface->Subscribe(&testSubOption);
168 EXPECT_EQ(ret, SOFTBUS_OK);
169 ret = g_discCoapFuncInterface->Unsubscribe(&testSubOption);
170 EXPECT_EQ(ret, SOFTBUS_OK);
171
172 DiscCoapDeinit();
173 g_discCoapFuncInterface = nullptr;
174 }
175
176 /*
177 * @tc.name: testCoapLinkStatusChanged001
178 * @tc.desc: test CoapLinkStatusChanged
179 * @tc.type: FUNC
180 * @tc.require:
181 */
182 HWTEST_F(DiscCoapTest, testCoapLinkStatusChanged001, TestSize.Level1)
183 {
184 g_discCoapFuncInterface = DiscCoapInit(&g_discInnerCb);
185 int32_t ret = g_discCoapFuncInterface->StartAdvertise(&testSubOption);
186 EXPECT_EQ(ret, SOFTBUS_OK);
187 ret = g_discCoapFuncInterface->StopAdvertise(&testSubOption);
188 EXPECT_EQ(ret, SOFTBUS_OK);
189
190 g_discCoapFuncInterface->LinkStatusChanged(LINK_STATUS_UP);
191 ret = g_discCoapFuncInterface->StartAdvertise(&testSubOption);
192 EXPECT_EQ(ret, SOFTBUS_OK);
193 ret = g_discCoapFuncInterface->StopAdvertise(&testSubOption);
194 EXPECT_EQ(ret, SOFTBUS_OK);
195
196 DiscCoapDeinit();
197 g_discCoapFuncInterface = nullptr;
198 }
199
200 /*
201 * @tc.name: testCoapUpdateLocalDevInfo001
202 * @tc.desc: test CoapUpdateLocalDevInfo
203 * @tc.type: FUNC
204 * @tc.require:
205 */
206 HWTEST_F(DiscCoapTest, testCoapUpdateLocalDevInfo001, TestSize.Level1)
207 {
208 g_discCoapFuncInterface = DiscCoapInit(&g_discInnerCb);
209 int32_t ret = g_discCoapFuncInterface->StartAdvertise(&testSubOption);
210 EXPECT_EQ(ret, SOFTBUS_OK);
211 ret = g_discCoapFuncInterface->StopAdvertise(&testSubOption);
212 EXPECT_EQ(ret, SOFTBUS_OK);
213
214 g_discCoapFuncInterface->UpdateLocalDeviceInfo(TYPE_LOCAL_DEVICE_NAME);
215 ret = g_discCoapFuncInterface->StartAdvertise(&testSubOption);
216 EXPECT_EQ(ret, SOFTBUS_OK);
217 ret = g_discCoapFuncInterface->StopAdvertise(&testSubOption);
218 EXPECT_EQ(ret, SOFTBUS_OK);
219
220 g_discCoapFuncInterface->UpdateLocalDeviceInfo(TYPE_ACCOUNT);
221 ret = g_discCoapFuncInterface->StartAdvertise(&testSubOption);
222 EXPECT_EQ(ret, SOFTBUS_OK);
223 ret = g_discCoapFuncInterface->StopAdvertise(&testSubOption);
224 EXPECT_EQ(ret, SOFTBUS_OK);
225
226 DiscCoapDeinit();
227 g_discCoapFuncInterface = nullptr;
228 }
229 }