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 "gtest/gtest.h"
21 #include "secureresourceprovider.h"
23 static OicSecAcl_t acl;
24 static OCProvisionDev_t pDev1;
25 static OCProvisionDev_t pDev2;
26 static OicSecCredType_t credType = SYMMETRIC_PAIR_WISE_KEY;
27 static OCProvisionDev_t selectedDeviceInfo;
28 static OicSecPconf_t pconf;
29 static OicSecOxm_t oicSecDoxmJustWorks = OIC_JUST_WORKS;
30 static OicSecOxm_t oicSecDoxmRandomPin = OIC_RANDOM_DEVICE_PIN;
31 static unsigned short timeout = 60;
32 static OicSecDoxm_t defaultDoxm1 =
34 &oicSecDoxmJustWorks, /* uint16_t *oxm */
35 1, /* size_t oxmLen */
36 OIC_JUST_WORKS, /* uint16_t oxmSel */
37 SYMMETRIC_PAIR_WISE_KEY,/* OicSecCredType_t sct */
38 false, /* bool owned */
39 {{0}}, /* OicUuid_t deviceID */
41 {{0}}, /* OicUuid_t owner */
43 NULL, /* OicSecSubOwner_t* subOwners */
44 NULL, /* OicSecMom_t *mom */
45 #endif //MULTIPLE_OWNER
49 static OicSecDoxm_t defaultDoxm2 =
51 &oicSecDoxmRandomPin, /* uint16_t *oxm */
52 1, /* size_t oxmLen */
53 OIC_RANDOM_DEVICE_PIN, /* uint16_t oxmSel */
54 SYMMETRIC_PAIR_WISE_KEY,/* OicSecCredType_t sct */
55 false, /* bool owned */
56 {{0}}, /* OicUuid_t deviceID */
58 {{0}}, /* OicUuid_t owner */
60 NULL, /* OicSecSubOwner_t* subOwners */
61 NULL, /* OicSecMom_t *mom */
62 #endif //MULTIPLE_OWNER
66 static void provisioningCB (void* UNUSED1, size_t UNUSED2, OCProvisionResult_t *UNUSED3, bool UNUSED4)
75 TEST(SRPProvisionACLTest, NullDeviceInfo)
77 pDev1.doxm = &defaultDoxm1;
78 uint8_t deviceId1[] = {0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64};
79 memcpy(pDev1.doxm->deviceID.id, deviceId1, sizeof(deviceId1));
81 pDev2.doxm = &defaultDoxm2;
82 uint8_t deviceId2[] = {0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x63};
83 memcpy(pDev2.doxm->deviceID.id, deviceId2, sizeof(deviceId2));
85 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionACL(NULL, NULL, &acl, OIC_SEC_ACL_V2, &provisioningCB));
88 TEST(SRPProvisionACLTest, NullCallback)
90 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPProvisionACL(NULL, &pDev1, &acl, OIC_SEC_ACL_V2, NULL));
93 TEST(SRPProvisionACLTest, NullACL)
95 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionACL(NULL, &pDev1, NULL, OIC_SEC_ACL_V2, &provisioningCB));
98 TEST(SRPProvisionACLTest, InvalidVersion)
100 EXPECT_EQ(OC_STACK_ERROR, SRPProvisionACL(NULL, &pDev1, &acl, OIC_SEC_ACL_UNKNOWN, &provisioningCB));
103 TEST(SRPProvisionCredentialsTest, NullDevice1)
105 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionCredentials(NULL, credType,
106 OWNER_PSK_LENGTH_128, NULL,
107 &pDev2, NULL, NULL, NULL, &provisioningCB));
110 TEST(SRPProvisionCredentialsTest, SamelDeviceId)
112 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionCredentials(NULL, credType,
113 OWNER_PSK_LENGTH_128, &pDev1,
114 &pDev1, NULL, NULL, NULL, &provisioningCB));
117 TEST(SRPProvisionCredentialsTest, NullCallback)
119 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPProvisionCredentials(NULL, credType,
120 OWNER_PSK_LENGTH_128,
121 &pDev1, &pDev2, NULL, NULL, NULL, NULL));
124 TEST(SRPProvisionCredentialsTest, InvalidKeySize)
126 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionCredentials(NULL, credType,
127 0, &pDev1, &pDev2, NULL, NULL, NULL,
131 TEST(SRPUnlinkDevicesTest, NullDevice1)
133 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPUnlinkDevices(NULL, NULL, &pDev2, provisioningCB));
136 TEST(SRPUnlinkDevicesTest, SamelDeviceId)
138 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPUnlinkDevices(NULL, &pDev1, &pDev1, provisioningCB));
141 TEST(SRPUnlinkDevicesTest, NullCallback)
143 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPUnlinkDevices(NULL, &pDev1, &pDev2, NULL));
146 TEST(SRPRemoveDeviceTest, NullTargetDevice)
148 unsigned short waitTime = 10 ;
149 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPRemoveDevice(NULL, waitTime, NULL, provisioningCB));
152 TEST(SRPRemoveDeviceTest, NullResultCallback)
154 unsigned short waitTime = 10;
155 OCProvisionDev_t dev1;
156 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPRemoveDevice(NULL, waitTime, &dev1, NULL));
159 TEST(SRPRemoveDeviceTest, ZeroWaitTime)
161 OCProvisionDev_t dev1;
162 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPRemoveDevice(NULL, 0, &dev1, NULL));
165 TEST(SRPProvisionDirectPairingTest, NullselectedDeviceInfo)
167 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionDirectPairing(NULL, NULL, &pconf, &provisioningCB));
170 TEST(SRPProvisionDirectPairingTest, Nullpconf)
172 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPProvisionDirectPairing(NULL, &selectedDeviceInfo, NULL, &provisioningCB));
175 TEST(SRPProvisionDirectPairingTest, Nullcallback)
177 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPProvisionDirectPairing(NULL, &selectedDeviceInfo, &pconf, NULL));
180 const char *SECURE_RESOURCE_PROVIDER_TEST_FILE_NAME = "secureresourceprovider.dat";
181 OCPersistentStorage ps = { NULL, NULL, NULL, NULL, NULL};
183 static FILE* TestFopen(const char *path, const char *mode)
185 if (0 == strcmp(path, OC_SECURITY_DB_DAT_FILE_NAME))
187 return fopen(SECURE_RESOURCE_PROVIDER_TEST_FILE_NAME, mode);
191 return fopen(path, mode);
195 void SetPersistentHandler(OCPersistentStorage *persistentStorage)
197 if(persistentStorage)
199 persistentStorage->open = TestFopen;
200 persistentStorage->read = fread;
201 persistentStorage->write = fwrite;
202 persistentStorage->close = fclose;
203 persistentStorage->unlink = remove;
207 class SRPTest : public ::testing::Test
210 static void SetUpTestCase()
212 SetPersistentHandler(&ps);
213 OCStackResult res = OCRegisterPersistentStorageHandler(&ps);
214 ASSERT_TRUE(res == OC_STACK_OK);
215 res = OCInit(NULL, 0, OC_SERVER);
216 ASSERT_TRUE(res == OC_STACK_OK);
219 static void TearDownTestCase()
221 OCStackResult res = OCStop();
222 ASSERT_TRUE(res == OC_STACK_OK);
225 static const ByteArray g_caPublicKey;
227 static const ByteArray g_derCode ;
229 static ByteArray g_serNum;
232 static uint8_t certData[] = {
233 0x30, 0x82, 0x02, 0x39, 0x30, 0x82, 0x01, 0xdf, 0x02, 0x01, 0x01, 0x30, 0x0a, 0x06, 0x08, 0x2a,
234 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x7c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
235 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c,
236 0x09, 0x53, 0x6f, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x74, 0x65, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03,
237 0x55, 0x04, 0x07, 0x0c, 0x08, 0x53, 0x6f, 0x6d, 0x65, 0x63, 0x69, 0x74, 0x79, 0x31, 0x0b, 0x30,
238 0x09, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x02, 0x42, 0x42, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03,
239 0x55, 0x04, 0x0b, 0x0c, 0x0d, 0x53, 0x65, 0x71, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x50, 0x61,
240 0x72, 0x74, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x02, 0x6f, 0x62, 0x31,
241 0x14, 0x30, 0x12, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x05,
242 0x6f, 0x62, 0x40, 0x62, 0x62, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x38, 0x31, 0x35, 0x31,
243 0x33, 0x31, 0x31, 0x31, 0x37, 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x30, 0x35, 0x31, 0x32, 0x31, 0x33,
244 0x31, 0x31, 0x31, 0x37, 0x5a, 0x30, 0x81, 0xd4, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
245 0x06, 0x13, 0x02, 0x55, 0x41, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x03,
246 0x41, 0x73, 0x64, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x06, 0x47, 0x6f,
247 0x74, 0x68, 0x61, 0x6d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x02, 0x5a,
248 0x5a, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x08, 0x42, 0x65, 0x61, 0x6d,
249 0x54, 0x65, 0x61, 0x6d, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
250 0x01, 0x09, 0x01, 0x16, 0x0d, 0x72, 0x61, 0x69, 0x6c, 0x40, 0x6d, 0x61, 0x69, 0x6c, 0x2e, 0x63,
251 0x6f, 0x6d, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x29, 0x75, 0x75, 0x69,
252 0x64, 0x3a, 0x33, 0x32, 0x33, 0x32, 0x33, 0x32, 0x33, 0x32, 0x2d, 0x33, 0x32, 0x33, 0x32, 0x2d,
253 0x33, 0x32, 0x33, 0x32, 0x2d, 0x33, 0x32, 0x33, 0x32, 0x2d, 0x33, 0x32, 0x33, 0x32, 0x33, 0x32,
254 0x33, 0x32, 0x33, 0x32, 0x33, 0x32, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x0c,
255 0x2b, 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x3a, 0x36, 0x37, 0x36, 0x37, 0x36, 0x37, 0x36, 0x37,
256 0x2d, 0x36, 0x37, 0x36, 0x37, 0x2d, 0x36, 0x37, 0x36, 0x37, 0x2d, 0x36, 0x37, 0x36, 0x37, 0x2d,
257 0x36, 0x37, 0x36, 0x37, 0x36, 0x37, 0x36, 0x37, 0x36, 0x37, 0x36, 0x37, 0x30, 0x59, 0x30, 0x13,
258 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,
259 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xf7, 0x13, 0x5c, 0x73, 0x72, 0xce, 0x10, 0xe5, 0x09,
260 0x97, 0x9a, 0xf8, 0xf2, 0x70, 0xa6, 0x3d, 0x89, 0xf5, 0xc5, 0xe4, 0x44, 0xe2, 0x4a, 0xb6, 0x61,
261 0xa8, 0x12, 0x8d, 0xb4, 0xdc, 0x2b, 0x47, 0x84, 0x60, 0x0c, 0x25, 0x66, 0xe9, 0xe0, 0xe5, 0xac,
262 0x22, 0xbf, 0x15, 0xdc, 0x71, 0xb1, 0x88, 0x4f, 0x16, 0xbf, 0xc2, 0x77, 0x37, 0x76, 0x3f, 0xe0,
263 0x67, 0xc6, 0x1d, 0x23, 0xfe, 0x7c, 0x8b, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,
264 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x47, 0xcc, 0x41, 0x8a, 0x27, 0xc7,
265 0xd0, 0xaa, 0xb4, 0xab, 0x85, 0xbf, 0x09, 0x4d, 0x06, 0xd7, 0x7e, 0x0d, 0x39, 0xf9, 0x36, 0xa1,
266 0x3d, 0x96, 0x23, 0xe2, 0x24, 0x64, 0x98, 0x63, 0x21, 0xba, 0x02, 0x21, 0x00, 0xe5, 0x8f, 0x7f,
267 0xf1, 0xa6, 0x82, 0x03, 0x6a, 0x18, 0x7a, 0x54, 0xe7, 0x0e, 0x25, 0x77, 0xd8, 0x46, 0xfa, 0x96,
268 0x8a, 0x7e, 0x14, 0xc4, 0xcb, 0x21, 0x32, 0x3e, 0x89, 0xd9, 0xba, 0x8c, 0x3f
271 static uint8_t keyData[] = {
272 0x67, 0xc6, 0x1d, 0x23, 0xfe, 0x7c, 0x8b, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,
273 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x47, 0xcc, 0x41, 0x8a, 0x27, 0xc7,
274 0xd0, 0xaa, 0xb4, 0xab, 0x85, 0xbf, 0x09, 0x4d, 0x06, 0xd7, 0x7e, 0x0d, 0x39, 0xf9, 0x36, 0xa1,
275 0x3d, 0x96, 0x23, 0xe2, 0x24, 0x64, 0x98, 0x63, 0x21, 0xba, 0x02, 0x21
278 TEST_F(SRPTest, SRPSaveTrustCertChainDER)
283 result = SRPSaveTrustCertChain(certData, sizeof(certData), OIC_ENCODING_DER, &credId);
284 EXPECT_EQ(OC_STACK_OK, result);
287 TEST_F(SRPTest, SRPSaveTrustCertChainPEM)
292 result = SRPSaveTrustCertChain(certData, sizeof(certData), OIC_ENCODING_PEM, &credId);
293 EXPECT_EQ(OC_STACK_OK, result);
296 TEST_F(SRPTest, SRPSaveTrustCertChainNullCertData)
301 result = SRPSaveTrustCertChain(NULL, sizeof(certData), OIC_ENCODING_DER, &credId);
303 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
306 TEST_F(SRPTest, SRPSaveTrustCertChainNullCredId)
310 result = SRPSaveTrustCertChain(certData, sizeof(certData), OIC_ENCODING_DER, NULL);
312 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
315 TEST_F(SRPTest, SRPSaveOwnCertChainTest)
322 cert.data = certData;
323 cert.len = sizeof(certData);
324 cert.encoding = OIC_ENCODING_DER;
327 key.len = sizeof(keyData);
328 key.encoding = OIC_ENCODING_DER;
330 result = SRPSaveOwnCertChain(&cert, &key, &credId);
332 EXPECT_EQ(OC_STACK_OK, result);
335 TEST_F(SRPTest, SRPSaveOwnCertChainTestNullCert)
342 key.len = sizeof(keyData);
344 result = SRPSaveOwnCertChain(NULL, &key, &credId);
346 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
349 TEST_F(SRPTest, SRPSaveOwnCertChainTestNullCertData)
357 cert.len = sizeof(certData);
359 key.len = sizeof(keyData);
361 result = SRPSaveOwnCertChain(&cert, &key, &credId);
363 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
366 TEST_F(SRPTest, SRPSaveOwnCertChainTestNullKey)
372 cert.data = certData;
373 cert.len = sizeof(certData);
375 result = SRPSaveOwnCertChain(&cert, NULL, &credId);
377 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
380 TEST_F(SRPTest, SRPSaveOwnCertChainTestNullKeyData)
387 cert.data = certData;
388 cert.len = sizeof(certData);
390 key.len = sizeof(keyData);
392 result = SRPSaveOwnCertChain(&cert, &key, &credId);
394 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
397 TEST_F(SRPTest, SRPSaveOwnCertChainTestNullCredId)
403 cert.data = certData;
404 cert.len = sizeof(certData);
406 key.len = sizeof(keyData);
408 result = SRPSaveOwnCertChain(&cert, &key, NULL);
410 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
414 TEST(SRPProvisionTrustCertChainTest, SRPProvisionTrustCertChainNullSelectedDeviceInfo)
418 OicSecCredType_t type = SIGNED_ASYMMETRIC_KEY;
421 result = SRPProvisionTrustCertChain(&ctx, type, credId, NULL, provisioningCB);
422 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
425 TEST(SRPProvisionTrustCertChainTest, SRPProvisionTrustCertChainNullResultCallback)
429 OicSecCredType_t type = SIGNED_ASYMMETRIC_KEY;
431 OCProvisionDev_t deviceInfo;
433 result = SRPProvisionTrustCertChain(&ctx, type, credId, &deviceInfo, NULL);
434 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, result);
437 TEST(SRPProvisionTrustCertChainTest, SRPProvisionTrustCertChainInvalidOicSecCredType)
441 OicSecCredType_t type = PIN_PASSWORD;
443 OCProvisionDev_t deviceInfo;
445 result = SRPProvisionTrustCertChain(&ctx, type, credId, &deviceInfo, provisioningCB);
446 EXPECT_EQ(OC_STACK_INVALID_PARAM, result);
449 TEST_F(SRPTest, SRPProvisionTrustCertChainNoResource)
453 OicSecCredType_t type = SIGNED_ASYMMETRIC_KEY;
455 OCProvisionDev_t deviceInfo;
457 result = SRPProvisionTrustCertChain(&ctx, type, credId, &deviceInfo, provisioningCB);
458 EXPECT_EQ(OC_STACK_ERROR, result);
461 TEST(SRPProvisionTrustCertChainTest, SRPGetACLResourceNoCallback)
463 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPGetACLResource(NULL, &pDev1, OIC_SEC_ACL_V2, NULL));
466 TEST(SRPProvisionTrustCertChainTest, SRPGetACLResourceNoDevice)
468 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPGetACLResource(NULL, NULL, OIC_SEC_ACL_V2, provisioningCB));
471 TEST(SRPProvisionTrustCertChainTest, SRPGetCredResourceNoCallback)
473 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPGetCredResource(NULL, &pDev1, NULL));
476 TEST(SRPProvisionTrustCertChainTest, SRPGetCredResourceNoDevice)
478 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPGetCredResource(NULL, NULL, provisioningCB));
481 TEST(SRPProvisionTrustCertChainTest, SRPResetDeviceNoCallback)
483 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPResetDevice(&pDev1, NULL));
486 TEST(SRPProvisionTrustCertChainTest, SRPResetDeviceNoDevice)
488 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPResetDevice(NULL, provisioningCB));
491 TEST(SRPProvisionTrustCertChainTest, SRPSyncDeviceNoCallback)
493 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, SRPSyncDevice(NULL, timeout, &pDev1, NULL));
496 TEST(SRPProvisionTrustCertChainTest, SRPSyncDeviceNoDevice)
498 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPSyncDevice(NULL, timeout, NULL, provisioningCB));
501 TEST(SRPProvisionTrustCertChainTest, SRPSyncDeviceZeroWaitTime)
503 EXPECT_EQ(OC_STACK_INVALID_PARAM, SRPSyncDevice(NULL, 0, &pDev1, provisioningCB));
506 TEST(SRPProvisionTrustCertChainTest, SRPRemoveDeviceWithoutDiscoveryNoCallback)
508 EXPECT_EQ(OC_STACK_INVALID_CALLBACK,
509 SRPRemoveDeviceWithoutDiscovery(NULL, &pDev1, &pDev2, NULL));
512 TEST(SRPProvisionTrustCertChainTest, SRPRemoveDeviceWithoutDiscoveryNoDevice)
514 EXPECT_EQ(OC_STACK_INVALID_PARAM,
515 SRPRemoveDeviceWithoutDiscovery(NULL, &pDev1, NULL, provisioningCB));
518 TEST(SRPProvisionTrustCertChainTest, SRPRemoveDeviceWithoutDiscoveryNoDeviceList)
520 EXPECT_EQ(OC_STACK_CONTINUE,
521 SRPRemoveDeviceWithoutDiscovery(NULL, NULL, &pDev2, provisioningCB));