1 /*
2 * Copyright (c) 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 <gtest/gtest.h>
17 #include <thread>
18
19 #include "hce_service.h"
20 #include "nfc_controller.h"
21 #include "hce_cmd_callback_stub.h"
22
23 namespace OHOS {
24 namespace NFC {
25 namespace TEST {
26 using namespace testing::ext;
27 using namespace OHOS::NFC::KITS;
28 using namespace OHOS::NFC::HCE;
29 class HceServiceTest : public testing::Test {
30 public:
31 static void SetUpTestCase();
32 static void TearDownTestCase();
33 void SetUp();
34 void TearDown();
35 };
36
SetUpTestCase()37 void HceServiceTest::SetUpTestCase()
38 {
39 std::cout << " SetUpTestCase HceServiceTest." << std::endl;
40 }
41
TearDownTestCase()42 void HceServiceTest::TearDownTestCase()
43 {
44 std::cout << " TearDownTestCase HceServiceTest." << std::endl;
45 }
46
SetUp()47 void HceServiceTest::SetUp()
48 {
49 std::cout << " SetUp HceServiceTest." << std::endl;
50 }
51
TearDown()52 void HceServiceTest::TearDown()
53 {
54 std::cout << " TearDown HceServiceTest." << std::endl;
55 }
56
57 class HceCmdListener : public IHceCmdCallback {
58 public:
HceCmdListener()59 HceCmdListener() {}
60
~HceCmdListener()61 virtual ~HceCmdListener() {}
62
63 public:
OnCeApduData(const std::vector<uint8_t> & data)64 void OnCeApduData(const std::vector<uint8_t>& data) override
65 {
66 std::cout << "OnCeApduData" << std::endl;
67 }
68
AsObject()69 OHOS::sptr<OHOS::IRemoteObject> AsObject() override
70 {
71 return nullptr;
72 }
73 };
74
75 /**
76 * @tc.name: RegHceCmdCallback001
77 * @tc.desc: Test HceServiceTest RegHceCmdCallback.
78 * @tc.type: FUNC
79 */
80 HWTEST_F(HceServiceTest, RegHceCmdCallback001, TestSize.Level1)
81 {
82 sptr<HceCmdListener> callback = sptr<HceCmdListener>(new (std::nothrow) HceCmdListener());
83 HceService::GetInstance().RegHceCmdCallback(callback, "hceCmd");
84 uint32_t code = 0;
85 MessageParcel data;
86 MessageParcel reply;
87 MessageOption option;
88 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
89 ASSERT_TRUE(ret == KITS::ERR_NFC_PARAMETERS);
90 }
91
92 /**
93 * @tc.name: UnRegHceCmdCallback001
94 * @tc.desc: Test HceServiceTest UnRegHceCmdCallback.
95 * @tc.type: FUNC
96 */
97 HWTEST_F(HceServiceTest, UnRegHceCmdCallback001, TestSize.Level1)
98 {
99 sptr<HceCmdListener> callback = sptr<HceCmdListener>(new (std::nothrow) HceCmdListener());
100 HceService::GetInstance().UnRegHceCmdCallback(callback, "hceCmd");
101 uint32_t code = 0;
102 MessageParcel data;
103 MessageParcel reply;
104 MessageOption option;
105 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
106 ASSERT_TRUE(ret == KITS::ERR_NFC_PARAMETERS);
107 }
108
109 /**
110 * @tc.name: SendRawFrame001
111 * @tc.desc: Test HceServiceTest SendRawFrame001.
112 * @tc.type: FUNC
113 */
114 HWTEST_F(HceServiceTest, SendRawFrame001, TestSize.Level1)
115 {
116 std::string hexCmdData = "010203";
117 std::string hexRespData = "";
118 HceService::GetInstance().SendRawFrame(hexCmdData, true, hexRespData);
119 uint32_t code = 0;
120 MessageParcel data;
121 MessageParcel reply;
122 MessageOption option;
123 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
124 ASSERT_TRUE(ret == KITS::ERR_NFC_PARAMETERS);
125 }
126
127 /**
128 * @tc.name: GetPaymentServices001
129 * @tc.desc: Test HceServiceTest GetPaymentServices001.
130 * @tc.type: FUNC
131 */
132 HWTEST_F(HceServiceTest, GetPaymentServices001, TestSize.Level1)
133 {
134 std::vector<AbilityInfo> abilityInfos;
135 HceService::GetInstance().GetPaymentServices(abilityInfos);
136 uint32_t code = 0;
137 MessageParcel data;
138 MessageParcel reply;
139 MessageOption option;
140 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
141 ASSERT_TRUE(ret == KITS::ERR_NFC_PARAMETERS);
142 }
143
144 /**
145 * @tc.name: IsDefaultService001
146 * @tc.desc: Test HceServiceTest IsDefaultService001.
147 * @tc.type: FUNC
148 */
149 HWTEST_F(HceServiceTest, IsDefaultService001, TestSize.Level1)
150 {
151 ElementName element;
152 const std::string type = "";
153 bool isDefaultService = true;
154 HceService::GetInstance().IsDefaultService(element, type, isDefaultService);
155 uint32_t code = 0;
156 MessageParcel data;
157 MessageParcel reply;
158 MessageOption option;
159 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
160 ASSERT_TRUE(ret == KITS::ERR_NFC_PARAMETERS);
161 }
162
163 /**
164 * @tc.name: StopHce001
165 * @tc.desc: Test HceServiceTest StopHce001.
166 * @tc.type: FUNC
167 */
168 HWTEST_F(HceServiceTest, StopHce001, TestSize.Level1)
169 {
170 ElementName element;
171 HceService::GetInstance().StopHce(element);
172 uint32_t code = 0;
173 MessageParcel data;
174 MessageParcel reply;
175 MessageOption option;
176 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
177 ASSERT_TRUE(ret == KITS::ERR_NFC_PARAMETERS);
178 }
179
180 /**
181 * @tc.name: RegHceCmdCallback0001
182 * @tc.desc: Test HceServiceTest RegHceCmdCallback.
183 * @tc.type: FUNC
184 */
185 HWTEST_F(HceServiceTest, RegHceCmdCallback0001, TestSize.Level1)
186 {
187 sptr<HceCmdListener> callback = nullptr;
188 KITS::ErrorCode ret = HceCmdCallbackStub::GetInstance().RegHceCmdCallback(callback);
189 ASSERT_TRUE(ret == NFC::KITS::ErrorCode::ERR_NFC_PARAMETERS);
190 }
191
192 /**
193 * @tc.name: RegHceCmdCallback0002
194 * @tc.desc: Test HceServiceTest RegHceCmdCallback.
195 * @tc.type: FUNC
196 */
197 HWTEST_F(HceServiceTest, RegHceCmdCallback0002, TestSize.Level1)
198 {
199 sptr<HceCmdListener> callback = sptr<HceCmdListener>(new (std::nothrow) HceCmdListener());
200 KITS::ErrorCode ret = HceCmdCallbackStub::GetInstance().RegHceCmdCallback(callback);
201 ASSERT_TRUE(ret == NFC::KITS::ErrorCode::ERR_NONE);
202 }
203
204 /**
205 * @tc.name: OnRemoteRequest0001
206 * @tc.desc: Test HceServiceTest OnRemoteRequest.
207 * @tc.type: FUNC
208 */
209 HWTEST_F(HceServiceTest, OnRemoteRequest0001, TestSize.Level1)
210 {
211 uint32_t code = 0;
212 MessageParcel data;
213 MessageParcel reply;
214 MessageOption option;
215 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
216 ASSERT_TRUE(ret == KITS::ERR_NFC_PARAMETERS);
217 }
218
219 /**
220 * @tc.name: OnRemoteRequest0002
221 * @tc.desc: Test HceServiceTest OnRemoteRequest.
222 * @tc.type: FUNC
223 */
224 HWTEST_F(HceServiceTest, OnRemoteRequest0002, TestSize.Level1)
225 {
226 uint32_t code = 0;
227 MessageParcel data;
228 MessageParcel reply;
229 MessageOption option;
230 std::u16string descriptor = u"ohos.nfc.kits.IHceCmdCallback";
231 data.WriteInterfaceToken(descriptor);
232 data.WriteInt32(1);
233 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
234 ASSERT_TRUE(ret == 1);
235 }
236
237 /**
238 * @tc.name: OnRemoteRequest0003
239 * @tc.desc: Test HceServiceTest OnRemoteRequest.
240 * @tc.type: FUNC
241 */
242 HWTEST_F(HceServiceTest, OnRemoteRequest0003, TestSize.Level1)
243 {
244 uint32_t code = 0;
245 MessageParcel data;
246 MessageParcel reply;
247 MessageOption option;
248 std::u16string descriptor = u"ohos.nfc.kits.IHceCmdCallback";
249 data.WriteInterfaceToken(descriptor);
250 data.WriteInt32(0);
251 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
252 ASSERT_TRUE(ret);
253 }
254
255 /**
256 * @tc.name: OnRemoteRequest0004
257 * @tc.desc: Test HceServiceTest OnRemoteRequest.
258 * @tc.type: FUNC
259 */
260 HWTEST_F(HceServiceTest, OnRemoteRequest0004, TestSize.Level1)
261 {
262 uint32_t code = 304;
263 MessageParcel data;
264 MessageParcel reply;
265 MessageOption option;
266 std::u16string descriptor = u"ohos.nfc.kits.IHceCmdCallback";
267 data.WriteInterfaceToken(descriptor);
268 data.WriteInt32(0);
269 int ret = HceCmdCallbackStub::GetInstance().OnRemoteRequest(code, data, reply, option);
270 ASSERT_TRUE(ret == KITS::ERR_NONE);
271 }
272 }
273 }
274 }