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 * *****************************************************************/
22 #include <oic_malloc.h>
24 #include <OCPlatform_impl.h>
25 #include <oxmjustworks.h>
26 #include <oxmrandompin.h>
27 #include <srmutility.h>
28 #include <OCProvisioningManager.hpp>
29 #include <gtest/gtest.h>
33 namespace OCProvisioningTest
37 void resultCallback(PMResultList_t *result, int hasError)
43 TEST(ProvisionInitTest, TestWithEmptyPath)
45 std::string dbPath("");
46 EXPECT_EQ(OC_STACK_OK, OCSecure::provisionInit(dbPath));
49 TEST(ProvisionInitTest, TestValidPath)
51 std::string dbPath("./dbPath");
52 EXPECT_EQ(OC_STACK_OK, OCSecure::provisionInit(dbPath));
55 TEST(DiscoveryTest, SecureResource)
57 std::shared_ptr< OC::OCSecureResource > secureResource;
59 ConvertStrToUuid("11111111-1111-1111-1111-111111111111", &uuid);
61 EXPECT_EQ(OC_STACK_OK, OCSecure::discoverSingleDevice(TIMEOUT, &uuid, secureResource));
64 TEST(DiscoveryTest, SecureResourceZeroTimeout)
66 std::shared_ptr< OC::OCSecureResource > secureResource;
68 ConvertStrToUuid("11111111-1111-1111-1111-111111111111", &uuid);
70 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::discoverSingleDevice(0, &uuid, secureResource));
73 TEST(DiscoveryTest, UnownedDevices)
76 EXPECT_EQ(OC_STACK_OK, OCSecure::discoverUnownedDevices(TIMEOUT, list));
79 TEST(DiscoveryTest, UnownedDevicesZeroTimeout)
82 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::discoverUnownedDevices(0, list));
85 TEST(DiscoveryTest, OwnedDevices)
88 EXPECT_EQ(OC_STACK_OK, OCSecure::discoverOwnedDevices(TIMEOUT, list));
91 TEST(DiscoveryTest, OwnedDevicesZeroTimeout)
94 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::discoverOwnedDevices(0, list));
97 TEST(OwnershipTest, SetOwnershipTransferCBDataNull)
99 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::setOwnerTransferCallbackData(
100 OIC_JUST_WORKS, NULL, NULL));
103 TEST(OwnershipTest, SetOwnershipTransferCBData)
105 OTMCallbackData_t justWorksCBData;
106 justWorksCBData.loadSecretCB = LoadSecretJustWorksCallback;
107 justWorksCBData.createSecureSessionCB = CreateSecureSessionJustWorksCallback;
108 justWorksCBData.createSelectOxmPayloadCB = CreateJustWorksSelectOxmPayload;
109 justWorksCBData.createOwnerTransferPayloadCB = CreateJustWorksOwnerTransferPayload;
110 EXPECT_EQ(OC_STACK_OK, OCSecure::setOwnerTransferCallbackData(OIC_JUST_WORKS,
111 &justWorksCBData, NULL));
114 TEST(OwnershipTest, SetOwnershipTransferCBDataInvalidType)
116 OTMCallbackData_t justWorksCBData;
117 justWorksCBData.loadSecretCB = LoadSecretJustWorksCallback;
118 justWorksCBData.createSecureSessionCB = CreateSecureSessionJustWorksCallback;
119 justWorksCBData.createSelectOxmPayloadCB = CreateJustWorksSelectOxmPayload;
120 justWorksCBData.createOwnerTransferPayloadCB = CreateJustWorksOwnerTransferPayload;
121 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::setOwnerTransferCallbackData(OIC_OXM_COUNT,
122 &justWorksCBData, NULL));
125 TEST(OwnershipTest, SetOwnershipTransferCBDataNullInputPin)
127 OTMCallbackData_t pinBasedCBData;
128 pinBasedCBData.loadSecretCB = InputPinCodeCallback;
129 pinBasedCBData.createSecureSessionCB = CreateSecureSessionRandomPinCallback;
130 pinBasedCBData.createSelectOxmPayloadCB = CreatePinBasedSelectOxmPayload;
131 pinBasedCBData.createOwnerTransferPayloadCB = CreatePinBasedOwnerTransferPayload;
132 OTMSetOwnershipTransferCallbackData(OIC_RANDOM_DEVICE_PIN, &pinBasedCBData);
134 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::setOwnerTransferCallbackData(
135 OIC_RANDOM_DEVICE_PIN, &pinBasedCBData, NULL));
138 TEST(OwnershipTest, OwnershipTransferNullCallback)
140 OCSecureResource device;
141 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, device.doOwnershipTransfer(nullptr));
144 TEST(DeviceInfoTest, DevInfoFromNetwork)
146 DeviceList_t owned, unowned;
147 EXPECT_EQ(OC_STACK_OK, OCSecure::getDevInfoFromNetwork(TIMEOUT,
151 TEST(SetDisplayPinCBTest, SetDisplayPinCBTestNullCB)
153 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::setDisplayPinCB(nullptr));
156 TEST(ProvisionAclTest, ProvisionAclTestNullAcl)
158 OCSecureResource device;
159 EXPECT_EQ(OC_STACK_INVALID_PARAM, device.provisionACL(nullptr, resultCallback));
162 TEST(ProvisionAclTest, ProvisionAclTestNullCallback)
164 OCSecureResource device;
165 OicSecAcl_t *acl = (OicSecAcl_t *)OICCalloc(1,sizeof(OicSecAcl_t));
166 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, device.provisionACL(acl, nullptr));
170 TEST(ProvisionAclTest, ProvisionAclTestNullCallbackNUllAcl)
172 OCSecureResource device;
173 EXPECT_EQ(OC_STACK_INVALID_PARAM, device.provisionACL(nullptr, nullptr));
176 TEST(ProvisionCredTest, ProvisionCredTestNullCallback)
178 OCSecureResource device, dev2;
180 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, device.provisionCredentials(cred, dev2, nullptr));
183 TEST(ProvisionPairwiseTest, ProvisionPairwiseTestNullCallback)
185 OCSecureResource device, dev2;
187 OicSecAcl_t *acl1 = (OicSecAcl_t *)OICCalloc(1,sizeof(OicSecAcl_t));
188 OicSecAcl_t *acl2 = (OicSecAcl_t *)OICCalloc(1,sizeof(OicSecAcl_t));
189 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, device.provisionPairwiseDevices(cred, acl1,
190 dev2, acl2, nullptr));
195 TEST(ProvisionDirectPairingTest, ProvisionDirectPairingTestNullPconf)
197 OCSecureResource device;
198 EXPECT_EQ(OC_STACK_INVALID_PARAM, device.provisionDirectPairing(nullptr, resultCallback));
201 TEST(ProvisionDirectPairingTest, ProvisionDirectPairingTestNullCallback)
203 OCSecureResource device;
204 OicSecPconf_t *pconf = (OicSecPconf_t *)OICCalloc(1,sizeof(OicSecPconf_t));
205 EXPECT_EQ(OC_STACK_INVALID_CALLBACK, device.provisionDirectPairing(pconf, nullptr));
209 TEST(ProvisionDirectPairingTest, ProvisionDirectPairingTestNullCallbackNUllPconf)
211 OCSecureResource device;
212 EXPECT_EQ(OC_STACK_INVALID_PARAM, device.provisionDirectPairing(nullptr, nullptr));