1 /* *****************************************************************
3 * Copyright 2015 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 * *****************************************************************/
20 #include "iotivity_config.h"
21 #include "gtest/gtest.h"
22 #include "provisioningdatabasemanager.h"
24 #define DB_FILE "PDM.db"
25 const char ID_1 [] = "1111111111111111";
26 const char ID_2 [] = "2111111111111111";
27 const char ID_3 [] = "3111111111111111";
28 const char ID_4 [] = "4111111111111111";
29 const char ID_5 [] = "5111111111111111";
30 const char ID_6 [] = "6111111111111111";
31 const char ID_7 [] = "7111111111111111";
32 const char ID_8 [] = "8111111111111111";
33 const char ID_9 [] = "9111111111111111";
34 const char ID_10[] = "1222222222222222";
35 const char ID_11[] = "2222222222222222";
36 const char ID_12[] = "3222222222222222";
37 const char ID_13[] = "4222222222222222";
40 TEST(CallPDMAPIbeforeInit, BeforeInit)
42 if (0 == access(DB_FILE, F_OK))
44 EXPECT_EQ(0, unlink(DB_FILE));
46 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMAddDevice(NULL));
47 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMIsDuplicateDevice(NULL,NULL));
48 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMLinkDevices(NULL, NULL));
49 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMUnlinkDevices(NULL, NULL));
50 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMDeleteDevice(NULL));
51 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetOwnedDevices(NULL, NULL));
52 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetLinkedDevices(NULL, NULL, NULL));
53 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMSetLinkStale(NULL, NULL));
54 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetToBeUnlinkedDevices(NULL, NULL));
55 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMIsLinkExists(NULL, NULL, NULL));
58 TEST(PDMInitTest, PDMInitWithNULL)
60 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
63 TEST(PDMAddDeviceTest, NullUUID)
65 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMAddDevice(NULL));
68 TEST(PDMIsDuplicateDeviceTest, NullUUID)
70 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMIsDuplicateDevice(NULL,NULL));
74 TEST(PDMIsDuplicateDeviceTest, ValidUUID)
76 OicUuid_t uid1 = {{0,}};
77 memcpy(&uid1.id, ID_1, sizeof(uid1.id));
79 OicUuid_t uid2 = {{0,}};
80 memcpy(&uid2.id, ID_2, sizeof(uid2.id));
82 OicUuid_t uid3 = {{0,}};
83 memcpy(&uid3.id, ID_3, sizeof(uid3.id));
84 bool isDuplicate = true;
85 EXPECT_EQ(OC_STACK_OK, PDMIsDuplicateDevice(&uid1,&isDuplicate));
86 EXPECT_TRUE(isDuplicate);
88 EXPECT_EQ(OC_STACK_OK, PDMIsDuplicateDevice(&uid3, &isDuplicate));
89 EXPECT_FALSE(isDuplicate);
92 TEST(PDMAddDeviceTest, ValidUUID)
94 OicUuid_t uid = {{0,}};
96 uint8_t id[UUID_LENGTH] = {0,};
97 for (size_t i = 0 ; i < sizeof(id) ; i++)
99 int tem = rand() % 25;
104 memcpy(&uid.id, &id, UUID_LENGTH);
106 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid));
107 EXPECT_EQ(OC_STACK_OK, PDMDeleteDevice(&uid));
110 TEST(PDMLinkDevicesTest, NULLDevice1)
112 OicUuid_t uid = {{0,}};
113 memcpy(&uid.id, ID_2, sizeof(uid.id));
114 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMLinkDevices(NULL, &uid));
117 TEST(PDMLinkDevicesTest, NULLDevice2)
119 OicUuid_t uid = {{0,}};
120 memcpy(&uid.id, ID_3, sizeof(uid.id));
121 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMLinkDevices(&uid, NULL));
124 TEST(PDMLinkDevicesTest, ValidCase)
126 OicUuid_t uid1 = {{0,}};
127 memcpy(&uid1.id, ID_4, sizeof(uid1.id));
129 OicUuid_t uid2 = {{0,}};
130 memcpy(&uid2.id, ID_5, sizeof(uid2.id));
132 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid1, &uid2));
135 TEST(PDMUnlinkDevicesTest, NULLDevice1)
137 OicUuid_t uid = {{0,}};
138 memcpy(&uid.id, ID_3, sizeof(uid.id));
139 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMUnlinkDevices(NULL, &uid));
142 TEST(PDMUnlinkDevicesTest, NULLDevice2)
144 OicUuid_t uid = {{0,}};
145 memcpy(&uid.id, ID_3, sizeof(uid.id));
146 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMUnlinkDevices(&uid, NULL));
149 TEST(PDMUnlinkDevices, ValidCase)
151 OicUuid_t uid1 = {{0,}};
152 memcpy(&uid1.id, ID_4, sizeof(uid1.id));
153 OicUuid_t uid2 = {{0,}};
154 memcpy(&uid2.id, ID_5, sizeof(uid2.id));
155 EXPECT_EQ(OC_STACK_OK, PDMUnlinkDevices(&uid1, &uid2));
159 TEST (PDMDeleteDevice, NULLDeviceID)
161 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMDeleteDevice(NULL));
164 TEST (PDMDeleteDevice, ValidButNonExistDeviceID)
167 OicUuid_t uid = {{0,}};
168 uint8_t id[UUID_LENGTH] = {0,};
169 for (size_t i = 0 ; i < sizeof(id) ; i++)
171 int tem = rand() % 25;
176 memcpy(&uid.id, &id, sizeof(uid.id));
177 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMDeleteDevice(&uid));
180 TEST(PDMGetOwnedDevices, ValidCase)
182 OCUuidList_t *list = NULL;
183 size_t noOfDevcies = 0;
184 EXPECT_EQ(OC_STACK_OK, PDMGetOwnedDevices(&list, &noOfDevcies));
187 TEST(PDMGetLinkedDevices, NULLDeviceID)
189 OCUuidList_t *list = NULL;
190 size_t noOfDevices = 0;
191 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMGetLinkedDevices(NULL, &list, &noOfDevices));
194 TEST(PDMGetLinkedDevices, ValidCase)
196 OicUuid_t uid = {{0,}};
197 memcpy(&uid.id, ID_1, sizeof(uid.id));
198 OCUuidList_t *list = NULL;
199 size_t noOfDevices = 0;
200 EXPECT_EQ(OC_STACK_OK, PDMGetLinkedDevices(&uid, &list, &noOfDevices));
203 TEST(PDMGetLinkedDevices, InvalidCase)
205 OicUuid_t uid = {{0,}};
206 memcpy(&uid.id, ID_6, sizeof(uid.id));
207 OCUuidList_t *list = NULL;
208 size_t noOfDevices = 0;
209 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMGetLinkedDevices(&uid, &list, &noOfDevices));
212 TEST(PDMSetLinkStale, NULLDeviceID1)
214 OicUuid_t uid = {{0,}};
215 memcpy(&uid.id, ID_1, sizeof(uid.id));
216 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMSetLinkStale(NULL, &uid));
219 TEST(PDMSetLinkStale, NULLDeviceID2)
221 OicUuid_t uid = {{0,}};
222 memcpy(&uid.id, ID_1, sizeof(uid.id));
223 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMSetLinkStale(&uid, NULL));
226 TEST(PDMSetLinkStale, ValidCase)
228 OicUuid_t uid1 = {{0,}};
229 memcpy(&uid1.id, ID_6, sizeof(uid1.id));
230 OicUuid_t uid2 = {{0,}};
231 memcpy(&uid2.id, ID_1, sizeof(uid2.id));
233 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMSetLinkStale(&uid1, &uid2));
235 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
237 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid1, &uid2));
239 EXPECT_EQ(OC_STACK_OK, PDMSetLinkStale(&uid1, &uid2));
242 TEST(PDMGetToBeUnlinkedDevices, ValidCase)
244 OCPairList_t *list = NULL;
245 size_t noOfDevices = 0;
246 EXPECT_EQ(OC_STACK_OK, PDMGetToBeUnlinkedDevices(&list, &noOfDevices));
249 TEST(PDMClose, ValidCase)
251 EXPECT_EQ(OC_STACK_OK, PDMClose());
254 TEST(PDMDestoryOicUuidLinkList, NULLParam)
256 PDMDestoryOicUuidLinkList(NULL);
259 TEST(PDMDestoryStaleLinkList, NULLParam)
261 PDMDestoryStaleLinkList(NULL);
264 TEST(PDMIsLinkExistsTest, DuplicateID)
266 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
267 OicUuid_t uid1 = {{0,}};
268 memcpy(&uid1.id, ID_7, sizeof(uid1.id));
269 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
270 OicUuid_t uid2 = {{0,}};
271 memcpy(&uid2.id, ID_8, sizeof(uid2.id));
272 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid2));
274 bool linkExisits = true;
275 OCStackResult res = PDMIsLinkExists(&uid1, &uid2, &linkExisits);
276 EXPECT_EQ(OC_STACK_OK, res);
277 EXPECT_FALSE(linkExisits);
280 TEST(PDMSetDeviceStaleTest, NULLUUID)
282 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
283 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMSetDeviceStale(NULL));
286 TEST(PDMSetDeviceStaleTest, VALIDUUID)
288 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
289 OicUuid_t uid1 = {{0,}};
290 memcpy(&uid1.id, ID_9, sizeof(uid1.id));
291 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
292 EXPECT_EQ(OC_STACK_OK,PDMSetDeviceStale(&uid1));
295 TEST(PDMSetDeviceStaleTest, StaleDeviceNotinDeviceList)
297 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
298 OicUuid_t uid1 = {{0,}};
299 memcpy(&uid1.id, ID_10, sizeof(uid1.id));
300 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
301 EXPECT_EQ(OC_STACK_OK,PDMSetDeviceStale(&uid1));
303 OCUuidList_t *list = NULL;
304 size_t noOfDevcies = 0;
305 EXPECT_EQ(OC_STACK_OK, PDMGetOwnedDevices(&list, &noOfDevcies));
309 EXPECT_FALSE(0 == memcmp(list->dev.id, uid1.id,sizeof(uid1.id)));
314 TEST(PDMSetDeviceStaleTest, StaleDeviceNotinLinkedDevice)
316 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
317 OicUuid_t uid1 = {{0,}};
318 memcpy(&uid1.id, ID_11, sizeof(uid1.id));
320 OicUuid_t uid2 = {{0,}};
321 memcpy(&uid2.id, ID_12, sizeof(uid2.id));
323 OicUuid_t uid3 = {{0,}};
324 memcpy(&uid3.id, ID_13, sizeof(uid3.id));
326 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
327 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid2));
328 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid3));
330 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid1, &uid2));
331 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid2, &uid3));
332 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid1, &uid3));
334 EXPECT_EQ(OC_STACK_OK,PDMSetDeviceStale(&uid1));
336 OCUuidList_t *list1 = NULL;
337 size_t noOfDevices1 = 0;
338 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMGetLinkedDevices(&uid1, &list1, &noOfDevices1));
340 OCUuidList_t *list2 = NULL;
341 size_t noOfDevices2 = 0;
342 EXPECT_EQ(OC_STACK_OK, PDMGetLinkedDevices(&uid2, &list2, &noOfDevices2));
343 OCUuidList_t *ptr = list2;
346 EXPECT_FALSE(0 == memcmp(ptr->dev.id, uid1.id,sizeof(uid1.id)));
352 EXPECT_TRUE(0 == memcmp(ptr->dev.id, uid3.id,sizeof(uid3.id)));
356 OCUuidList_t *list3 = NULL;
357 size_t noOfDevices3 = 0;
358 EXPECT_EQ(OC_STACK_OK, PDMGetLinkedDevices(&uid3, &list3, &noOfDevices3));
362 EXPECT_FALSE(0 == memcmp(ptr->dev.id, uid1.id,sizeof(uid1.id)));
369 EXPECT_TRUE(0 == memcmp(ptr->dev.id, uid2.id,sizeof(uid2.id)));