• 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 <cstring>
17 #include <gtest/gtest.h>
18 #include <securec.h>
19 
20 #include "sqlite3_utils.h"
21 #include "softbus_adapter_file.h"
22 #include "softbus_adapter_mem.h"
23 #include "softbus_bus_center.h"
24 #include "softbus_errcode.h"
25 
26 namespace OHOS {
27 using namespace testing::ext;
28 
29 constexpr char DEVICE1_HASH[] = "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b";
30 constexpr char DEVICE2_HASH[] = "d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35";
31 constexpr char USER1_ID[] = "4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce";
32 constexpr char USER2_ID[] = "4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a";
33 constexpr uint8_t PASSWORD1[] = "ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d";
34 constexpr uint8_t PASSWORD2[] = "e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683";
35 
36 static TrustedDevInfoRecord g_record1, g_record2, g_record3;
37 
38 class Sqlite3UtilsTest : public testing::Test {
39 public:
40     static void SetUpTestCase();
41     static void TearDownTestCase();
42     void SetUp();
43     void TearDown();
44 };
45 
SetUpTestCase()46 void Sqlite3UtilsTest::SetUpTestCase()
47 {
48     (void)strcpy_s(g_record1.accountHexHash, SHA_256_HEX_HASH_LEN, USER1_ID);
49     (void)strcpy_s(g_record1.udid, UDID_BUF_LEN, DEVICE1_HASH);
50     (void)strcpy_s(g_record2.accountHexHash, SHA_256_HEX_HASH_LEN, USER1_ID);
51     (void)strcpy_s(g_record2.udid, UDID_BUF_LEN, DEVICE2_HASH);
52     (void)strcpy_s(g_record3.accountHexHash, SHA_256_HEX_HASH_LEN, USER2_ID);
53     (void)strcpy_s(g_record3.udid, UDID_BUF_LEN, DEVICE1_HASH);
54 }
55 
TearDownTestCase()56 void Sqlite3UtilsTest::TearDownTestCase()
57 {
58 }
59 
SetUp()60 void Sqlite3UtilsTest::SetUp()
61 {
62 }
63 
TearDown()64 void Sqlite3UtilsTest::TearDown()
65 {
66     SoftBusRemoveFile(DATABASE_NAME);
67 }
68 
69 /*
70 * @tc.name: Open_Database_Test_001
71 * @tc.desc: open database test
72 * @tc.type: FUNC
73 * @tc.require: I5PIFW
74 */
75 HWTEST_F(Sqlite3UtilsTest, Open_Database_Test_01, TestSize.Level0)
76 {
77     DbContext **ctxPtr = nullptr;
78 
79     EXPECT_EQ(OpenDatabase(ctxPtr), SOFTBUS_INVALID_PARAM);
80 }
81 
82 /*
83 * @tc.name: Open_Database_Test_002
84 * @tc.desc: open database test
85 * @tc.type: FUNC
86 * @tc.require: I5PIFW
87 */
88 HWTEST_F(Sqlite3UtilsTest, Open_Database_Test_02, TestSize.Level0)
89 {
90     DbContext *ctx = nullptr;
91 
92     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
93     ASSERT_TRUE(ctx != nullptr);
94     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
95 }
96 
97 /*
98 * @tc.name: Open_Database_Test_003
99 * @tc.desc: open database test
100 * @tc.type: FUNC
101 * @tc.require: I5PIFW
102 */
103 HWTEST_F(Sqlite3UtilsTest, Open_Database_Test_03, TestSize.Level0)
104 {
105     DbContext *ctx = nullptr;
106 
107     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
108     ASSERT_TRUE(ctx != nullptr);
109     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
110     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
111     ASSERT_TRUE(ctx != nullptr);
112     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
113 }
114 
115 /*
116 * @tc.name: Create_Table_Test_001
117 * @tc.desc: create table test
118 * @tc.type: FUNC
119 * @tc.require: I5PIFW
120 */
121 HWTEST_F(Sqlite3UtilsTest, Create_Table_Test_001, TestSize.Level0)
122 {
123     DbContext *ctx = nullptr;
124 
125     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_INVALID_PARAM);
126     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_INVALID_PARAM);
127 }
128 
129 /*
130 * @tc.name: Create_Table_Test_002
131 * @tc.desc: create table test
132 * @tc.type: FUNC
133 * @tc.require: I5PIFW
134 */
135 HWTEST_F(Sqlite3UtilsTest, Create_Table_Test_002, TestSize.Level0)
136 {
137     bool isExist = false;
138     DbContext *ctx = nullptr;
139 
140     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
141     ASSERT_TRUE(ctx != nullptr);
142     EXPECT_EQ(CheckTableExist(ctx, TABLE_TRUSTED_DEV_INFO, &isExist), SOFTBUS_OK);
143     EXPECT_TRUE(!isExist);
144     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
145     EXPECT_EQ(CheckTableExist(ctx, TABLE_TRUSTED_DEV_INFO, &isExist), SOFTBUS_OK);
146     EXPECT_TRUE(isExist);
147     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
148     EXPECT_EQ(CheckTableExist(ctx, TABLE_TRUSTED_DEV_INFO, &isExist), SOFTBUS_OK);
149     EXPECT_TRUE(!isExist);
150     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
151 }
152 
153 /*
154 * @tc.name: Create_and_Encrypt_Database_Test_001
155 * @tc.desc: create and encrypt database test
156 * @tc.type: FUNC
157 * @tc.require: I5PIFW
158 */
159 HWTEST_F(Sqlite3UtilsTest, Create_and_Encrypt_Database_Test_001, TestSize.Level0)
160 {
161     bool isExist = false;
162     DbContext *ctx = nullptr;
163 
164     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
165     ASSERT_TRUE(ctx != nullptr);
166     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
167     EXPECT_EQ(CheckTableExist(ctx, TABLE_TRUSTED_DEV_INFO, &isExist), SOFTBUS_OK);
168     EXPECT_TRUE(!isExist);
169     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
170     EXPECT_EQ(CheckTableExist(ctx, TABLE_TRUSTED_DEV_INFO, &isExist), SOFTBUS_OK);
171     EXPECT_TRUE(isExist);
172     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
173     EXPECT_EQ(CheckTableExist(ctx, TABLE_TRUSTED_DEV_INFO, &isExist), SOFTBUS_OK);
174     EXPECT_TRUE(!isExist);
175     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
176 }
177 
178 /*
179 * @tc.name: Create_and_Encrypt_Database_Test_002
180 * @tc.desc: create and encrypt database test
181 * @tc.type: FUNC
182 * @tc.require: I5PIFW
183 */
184 HWTEST_F(Sqlite3UtilsTest, Create_and_Encrypt_Database_Test_002, TestSize.Level0)
185 {
186     DbContext *ctx = nullptr;
187 
188     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
189     ASSERT_TRUE(ctx != nullptr);
190     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
191     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
192     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
193     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
194 
195     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
196     ASSERT_TRUE(ctx != nullptr);
197     EXPECT_NE(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
198     EXPECT_NE(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
199     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
200 
201     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
202     ASSERT_TRUE(ctx != nullptr);
203     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
204     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
205     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
206     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
207 
208     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
209     ASSERT_TRUE(ctx != nullptr);
210     EXPECT_NE(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
211     EXPECT_NE(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
212     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
213 }
214 
215 /*
216 * @tc.name: Create_and_Encrypt_Database_Test_003
217 * @tc.desc: create and encrypt database test
218 * @tc.type: FUNC
219 * @tc.require: I5PIFW
220 */
221 HWTEST_F(Sqlite3UtilsTest, Create_and_Encrypt_Database_Test_003, TestSize.Level0)
222 {
223     DbContext *ctx = nullptr;
224 
225     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
226     ASSERT_TRUE(ctx != nullptr);
227     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
228     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
229     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
230     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
231 
232     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
233     ASSERT_TRUE(ctx != nullptr);
234     EXPECT_EQ(EncryptedDb(ctx, PASSWORD2, sizeof(PASSWORD2)), SOFTBUS_OK);
235     EXPECT_NE(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
236     EXPECT_NE(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
237     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
238 
239     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
240     ASSERT_TRUE(ctx != nullptr);
241     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
242     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
243     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
244     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
245 
246     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
247     ASSERT_TRUE(ctx != nullptr);
248     EXPECT_EQ(EncryptedDb(ctx, PASSWORD2, sizeof(PASSWORD2)), SOFTBUS_OK);
249     EXPECT_NE(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
250     EXPECT_NE(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
251     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
252 }
253 
254 /*
255 * @tc.name: Create_and_Encrypt_Database_Test_004
256 * @tc.desc: create and encrypt database test
257 * @tc.type: FUNC
258 * @tc.require: I5PIFW
259 */
260 HWTEST_F(Sqlite3UtilsTest, Create_and_Encrypt_Database_Test_004, TestSize.Level0)
261 {
262     DbContext *ctx = nullptr;
263 
264     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
265     ASSERT_TRUE(ctx != nullptr);
266     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
267     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
268     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
269     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
270 
271     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
272     ASSERT_TRUE(ctx != nullptr);
273     EXPECT_EQ(UpdateDbPassword(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
274     EXPECT_NE(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
275     EXPECT_NE(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
276     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
277 
278     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
279     ASSERT_TRUE(ctx != nullptr);
280     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
281     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
282     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
283     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
284 
285     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
286     ASSERT_TRUE(ctx != nullptr);
287     EXPECT_EQ(UpdateDbPassword(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
288     EXPECT_NE(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
289     EXPECT_NE(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
290     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
291 }
292 
293 /*
294 * @tc.name: Create_and_Encrypt_Database_Test_005
295 * @tc.desc: create and encrypt database test
296 * @tc.type: FUNC
297 * @tc.require: I5PIFW
298 */
299 HWTEST_F(Sqlite3UtilsTest, Create_and_Encrypt_Database_Test_005, TestSize.Level0)
300 {
301     DbContext *ctx = nullptr;
302 
303     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
304     ASSERT_TRUE(ctx != nullptr);
305     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
306     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
307     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
308     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
309 
310     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
311     ASSERT_TRUE(ctx != nullptr);
312     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
313     EXPECT_EQ(UpdateDbPassword(ctx, PASSWORD2, sizeof(PASSWORD2)), SOFTBUS_OK);
314     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
315     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
316     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
317 
318     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
319     ASSERT_TRUE(ctx != nullptr);
320     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
321     EXPECT_NE(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
322     EXPECT_NE(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
323     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
324 
325     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
326     ASSERT_TRUE(ctx != nullptr);
327     EXPECT_EQ(EncryptedDb(ctx, PASSWORD2, sizeof(PASSWORD2)), SOFTBUS_OK);
328     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
329     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
330     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
331 }
332 
333 /*
334 * @tc.name: Insert_data_Inerface_Test_001
335 * @tc.desc: insert data interface test
336 * @tc.type: FUNC
337 * @tc.require: I5PIFW
338 */
339 HWTEST_F(Sqlite3UtilsTest, Insert_data_Inerface_Test_001, TestSize.Level0)
340 {
341     DbContext *ctx = nullptr;
342 
343     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
344     ASSERT_TRUE(ctx != nullptr);
345     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
346     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 0);
347     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
348     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 0);
349     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
350     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 1);
351     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
352     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 0);
353     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
354 }
355 
356 /*
357 * @tc.name: Insert_data_Inerface_Test_002
358 * @tc.desc: insert data interface test
359 * @tc.type: FUNC
360 * @tc.require: I5PIFW
361 */
362 HWTEST_F(Sqlite3UtilsTest, Insert_data_Inerface_Test_002, TestSize.Level0)
363 {
364     DbContext *ctx = nullptr;
365 
366     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
367     ASSERT_TRUE(ctx != nullptr);
368     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
369     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
370     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
371     EXPECT_NE(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
372     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 1);
373     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record2), SOFTBUS_OK);
374     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 2);
375     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record3), SOFTBUS_OK);
376     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER2_ID), 1);
377     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
378     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
379 }
380 
381 /*
382 * @tc.name: Remove_data_Inerface_Test_001
383 * @tc.desc: remove data interface test
384 * @tc.type: FUNC
385 * @tc.require: I5PIFW
386 */
387 HWTEST_F(Sqlite3UtilsTest, Remove_data_Inerface_Test_001, TestSize.Level0)
388 {
389     DbContext *ctx = nullptr;
390 
391     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
392     ASSERT_TRUE(ctx != nullptr);
393     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
394     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
395     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
396     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 1);
397     EXPECT_EQ(RemoveAllRecord(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
398     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 0);
399     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
400     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 1);
401     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
402     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
403 }
404 
405 /*
406 * @tc.name: Remove_data_Inerface_Test_002
407 * @tc.desc: remove data interface test
408 * @tc.type: FUNC
409 * @tc.require: I5PIFW
410 */
411 HWTEST_F(Sqlite3UtilsTest, Remove_data_Inerface_Test_002, TestSize.Level0)
412 {
413     DbContext *ctx = nullptr;
414 
415     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
416     ASSERT_TRUE(ctx != nullptr);
417     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
418     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
419     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
420     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 1);
421     EXPECT_EQ(RemoveRecordByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
422     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 0);
423     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
424     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 1);
425     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
426     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
427 }
428 
429 /*
430 * @tc.name: Remove_data_Inerface_Test_003
431 * @tc.desc: remove data interface test
432 * @tc.type: FUNC
433 * @tc.require: I5PIFW
434 */
435 HWTEST_F(Sqlite3UtilsTest, Remove_data_Inerface_Test_003, TestSize.Level0)
436 {
437     DbContext *ctx = nullptr;
438 
439     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
440     ASSERT_TRUE(ctx != nullptr);
441     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
442     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
443     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
444     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 1);
445     EXPECT_EQ(RemoveRecordByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record2), SOFTBUS_OK);
446     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 1);
447     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record2), SOFTBUS_OK);
448     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 2);
449     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
450     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
451 }
452 
453 /*
454 * @tc.name: Query_data_Inerface_Test_001
455 * @tc.desc: query data interface test
456 * @tc.type: FUNC
457 * @tc.require: I5PIFW
458 */
459 HWTEST_F(Sqlite3UtilsTest, Query_data_Inerface_Test_001, TestSize.Level0)
460 {
461     int32_t num;
462     DbContext *ctx = nullptr;
463     char *record;
464 
465     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
466     ASSERT_TRUE(ctx != nullptr);
467     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
468     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
469     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
470     num = GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID);
471     ASSERT_TRUE(num != 0);
472     record = (char *)SoftBusCalloc(num * UDID_BUF_LEN);
473     ASSERT_TRUE(record != nullptr);
474     EXPECT_EQ(QueryRecordByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID,
475         (uint8_t **)&record, num), SOFTBUS_OK);
476     EXPECT_STREQ(record, DEVICE1_HASH);
477     SoftBusFree(record);
478     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
479     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
480 }
481 
482 /*
483 * @tc.name: Query_data_Inerface_Test_002
484 * @tc.desc: query data interface test
485 * @tc.type: FUNC
486 * @tc.require: I5PIFW
487 */
488 HWTEST_F(Sqlite3UtilsTest, Query_data_Inerface_Test_002, TestSize.Level0)
489 {
490     int32_t num;
491     DbContext *ctx = nullptr;
492     char *record;
493 
494     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
495     ASSERT_TRUE(ctx != nullptr);
496     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
497     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
498     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
499     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record2), SOFTBUS_OK);
500     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record3), SOFTBUS_OK);
501     num = GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID);
502     ASSERT_TRUE(num != 0);
503     record = (char *)SoftBusCalloc(num * UDID_BUF_LEN);
504     ASSERT_TRUE(record != nullptr);
505     EXPECT_EQ(QueryRecordByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID,
506         (uint8_t **)&record, num), SOFTBUS_OK);
507     EXPECT_STREQ(record, DEVICE1_HASH);
508     EXPECT_STREQ(record + UDID_BUF_LEN, DEVICE2_HASH);
509     SoftBusFree(record);
510     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
511     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
512 }
513 
514 /*
515 * @tc.name: Open_and_Close_Transaction_Test_001
516 * @tc.desc: open and close transaction test
517 * @tc.type: FUNC
518 * @tc.require: I5PIFW
519 */
520 HWTEST_F(Sqlite3UtilsTest, Open_and_Close_Transaction_Test_001, TestSize.Level0)
521 {
522     DbContext *ctx = nullptr;
523 
524     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
525     ASSERT_TRUE(ctx != nullptr);
526     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
527     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
528     EXPECT_EQ(OpenTransaction(ctx), SOFTBUS_OK);
529     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
530     EXPECT_EQ(CloseTransaction(ctx, CLOSE_TRANS_ROLLBACK), SOFTBUS_OK);
531     EXPECT_EQ(GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID), 0);
532     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
533     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
534 }
535 
536 /*
537 * @tc.name: Open_and_Close_Transaction_Test_002
538 * @tc.desc: open and close transaction test
539 * @tc.type: FUNC
540 * @tc.require: I5PIFW
541 */
542 HWTEST_F(Sqlite3UtilsTest, Open_and_Close_Transaction_Test_002, TestSize.Level0)
543 {
544     int32_t num;
545     DbContext *ctx = nullptr;
546     char *record;
547 
548     EXPECT_EQ(OpenDatabase(&ctx), SOFTBUS_OK);
549     ASSERT_TRUE(ctx != nullptr);
550     EXPECT_EQ(EncryptedDb(ctx, PASSWORD1, sizeof(PASSWORD1)), SOFTBUS_OK);
551     EXPECT_EQ(CreateTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
552     EXPECT_EQ(OpenTransaction(ctx), SOFTBUS_OK);
553     EXPECT_EQ(InsertRecord(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)&g_record1), SOFTBUS_OK);
554     EXPECT_EQ(CloseTransaction(ctx, CLOSE_TRANS_COMMIT), SOFTBUS_OK);
555     num = GetRecordNumByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID);
556     ASSERT_TRUE(num != 0);
557     record = (char *)SoftBusCalloc(num * UDID_BUF_LEN);
558     ASSERT_TRUE(record != nullptr);
559     EXPECT_EQ(QueryRecordByKey(ctx, TABLE_TRUSTED_DEV_INFO, (uint8_t *)USER1_ID,
560         (uint8_t **)&record, num), SOFTBUS_OK);
561     EXPECT_STREQ(record, DEVICE1_HASH);
562     SoftBusFree(record);
563     EXPECT_EQ(DeleteTable(ctx, TABLE_TRUSTED_DEV_INFO), SOFTBUS_OK);
564     EXPECT_EQ(CloseDatabase(ctx), SOFTBUS_OK);
565 }
566 } // namespace OHOS
567