Imported Upstream version 1.1.1
[platform/upstream/iotivity.git] / service / easy-setup / enrollee / unittests / enrolleetests.cpp
1 //******************************************************************
2 //
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
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
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
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.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 /**
22  * @file
23  *
24  * This file contains the implementation for EasySetup Enrollee testcases
25  */
26
27 #include "gtest/gtest.h"
28 #include <sys/types.h>
29 #include <sys/stat.h>
30 #include <errno.h>
31 #include <fcntl.h>
32 #include <unistd.h>
33 #include <stdlib.h>
34
35 //-----------------------------------------------------------------------------
36 // Includes
37 //-----------------------------------------------------------------------------
38 #include <stdio.h>
39 #include <string.h>
40
41 #include <iostream>
42 #include <stdint.h>
43
44 #include "ocstack.h"
45 #include "logger.h"
46 #include "oic_malloc.h"
47 #include "escommon.h"
48 #include "easysetup.h"
49 #include "onboarding.h"
50 #include "resourcehandler.h"
51 #include "softap.h"
52 #include "easysetupcallbacks.h"
53
54 #include "gtesthelper.h"
55
56 using namespace std;
57
58 namespace itst = iotivity::test;
59
60 #define DEFAULT_CONTEXT_VALUE 0x99
61
62 //-----------------------------------------------------------------------------
63 // Private variables
64 //-----------------------------------------------------------------------------
65 static const char TAG[] = "TestHarness";
66
67 char ssid[] = "EasySetup123";
68 char passwd[] = "EasySetup123";
69
70 //-----------------------------------------------------------------------------
71 // Callback functions
72 //-----------------------------------------------------------------------------
73 extern "C"  void EventCallbackInApplication(ESResult esResult,
74                                                                     ESEnrolleeState enrolleeState)
75 {
76     OIC_LOG(INFO, TAG, "Entering EventCallbackInApplication");
77
78     if(esResult != ES_OK)
79     {
80         cout<<"Easy stup is failed at Enrollee state = "<<enrolleeState<<endl;
81     }
82     else
83     {
84         if(enrolleeState == ES_ON_BOARDED_STATE)
85         {
86             cout<<"Device is successfully OnBoared on Adhoc network"<<endl;
87         }
88         else if (enrolleeState == ES_PROVISIONED_STATE)
89         {
90             cout<<"Device is provisioned with target network's credentials"<<endl;
91         }
92         else if (enrolleeState == ES_ON_BOARDED_TARGET_NETWORK_STATE)
93         {
94             cout<<"Device is onboarded/connected with target network"<<endl;
95         }
96         else
97         {
98             cout<<"Wrong state !! Easy setup is failed at Enrollee state = "<<enrolleeState<<endl;
99         }
100     }
101 }
102
103 //-----------------------------------------------------------------------------
104 //  Local functions
105 //-----------------------------------------------------------------------------
106
107 void InitESEnrollee()
108 {
109     OIC_LOG(INFO, TAG, "Entering InitESEnrollee");
110
111     EXPECT_EQ(ES_OK, ESInitEnrollee(CT_ADAPTER_IP,
112                                     "EasySetup123",
113                                     "EasySetup123",
114                                     0,
115                                     EventCallbackInApplication));
116     OIC_LOG(INFO, TAG, "Leaving InitESEnrollee");
117 }
118
119 //-----------------------------------------------------------------------------
120 // Tests
121 //-----------------------------------------------------------------------------
122
123 TEST(ESEnrolleeInit, ESEnrolleeInitNullSSID)
124 {
125     EXPECT_EQ(ES_ERROR, ESInitEnrollee(CT_ADAPTER_IP, 0, passwd, 0, EventCallbackInApplication));
126 }
127
128 TEST(ESEnrolleeInit, ESEnrolleeInitNullPassword)
129 {
130     EXPECT_EQ(ES_ERROR, ESInitEnrollee(CT_ADAPTER_IP, ssid, 0, 0, EventCallbackInApplication));
131 }
132
133 TEST(ESEnrolleeInit, ESEnrolleeInitNullCb)
134 {
135     EXPECT_EQ(ES_ERROR, ESInitEnrollee(CT_ADAPTER_IP, ssid, passwd, 0, 0));
136 }
137
138 TEST(ESEnrolleeInit, ESEnrolleeESInitEnrolleeSuccess)
139 {
140     EXPECT_EQ(ES_OK, ESInitEnrollee(CT_ADAPTER_IP,
141                                     ssid,
142                                     passwd,
143                                     0,
144                                     EventCallbackInApplication));
145 }
146
147 TEST(ESEnrolleeInit, ESEnrolleeBleOnboarding)
148 {
149     EXPECT_EQ(0, ESBleOnboarding());
150 }
151
152 TEST(ESEnrolleeInit, ESEnrolleeSoftapOnboarding)
153 {
154     EXPECT_EQ(true, ESSoftapOnboarding());
155 }
156
157 TEST(ESOCInit, ESOCInitNullIPAddr)
158 {
159     EXPECT_EQ(OC_STACK_OK, OCInit(0, 5683, OC_SERVER));
160     EXPECT_EQ(OC_STACK_OK, OCStop());
161 }
162
163 TEST(ESOCInit, ESOCInitNullPort)
164 {
165     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 0, OC_SERVER));
166     EXPECT_EQ(OC_STACK_OK, OCStop());
167 }
168
169 TEST(ESOCInit, ESOCInitNullAddrAndPort)
170 {
171     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
172     EXPECT_EQ(OC_STACK_OK, OCStop());
173 }
174
175 TEST(ESOCInit, ESOCInitInvalidMode)
176 {
177     EXPECT_EQ(OC_STACK_ERROR, OCInit(0, 0, (OCMode)10));
178     EXPECT_EQ(OC_STACK_ERROR, OCStop());
179 }
180
181 TEST(ESProvisioning, ESInitProvisioningResource)
182 {
183     EXPECT_EQ(ES_RESOURCECREATED, ESInitProvisioning());
184 }
185
186 TEST(ESProvisioning, ESInitProvisioningWithOCStackClientMode)
187 {
188     EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_CLIENT));
189     EXPECT_EQ(ES_ERROR, ESInitProvisioning());
190     EXPECT_EQ(OC_STACK_OK, OCStop());
191 }
192
193 TEST(ESProvisioningResource, ESCreateProvisioningResourceSecurityDisabled)
194 {
195     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
196     EXPECT_EQ(OC_STACK_OK, CreateProvisioningResource(0));
197     EXPECT_EQ(OC_STACK_OK, OCStop());
198 }
199
200 TEST(ESProvisioningResource, ESCreateProvisioningResourceSecurityEnabled)
201 {
202     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
203     EXPECT_EQ(OC_STACK_OK, CreateProvisioningResource(1));
204     EXPECT_EQ(OC_STACK_OK, OCStop());
205 }
206
207 TEST(ESProvisioningResource, ESDeleteProvisioningResource)
208 {
209     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
210     EXPECT_EQ(OC_STACK_OK, CreateProvisioningResource(0));
211     EXPECT_EQ(OC_STACK_OK, DeleteProvisioningResource());
212     EXPECT_EQ(OC_STACK_OK, OCStop());
213 }
214
215 TEST(ESProvisioningResource, ESDeleteProvisioningResourceWithoutCreating)
216 {
217     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
218     EXPECT_EQ(OC_STACK_NO_RESOURCE, DeleteProvisioningResource());
219     EXPECT_EQ(OC_STACK_OK, OCStop());
220 }
221
222 TEST(ESOnboarding, ESOnboardingSoftAp)
223 {
224     EXPECT_EQ(1, ESOnboard(ssid, passwd, ESOnboardingCallback));
225 }
226
227 TEST(ESOnboarding, ESOnboardingSoftApEnrollee)
228 {
229 #ifdef ENROLLEE_SOFTAP
230     EXPECT_EQ(1, ESSoftapAtEnrollee());
231     EXPECT_EQ(0, ESSoftapAtMediator());
232 #endif
233 }
234
235 TEST(ESOnboarding, ESOnboardingSoftApMediator)
236 {
237 #ifndef ENROLLEE_SOFTAP
238     EXPECT_EQ(0, ESSoftapAtEnrollee());
239     EXPECT_EQ(1, ESSoftapAtMediator());
240 #endif
241 }
242
243 TEST(ESOnboarding, ESOnboardingSoftApHost)
244 {
245 #ifdef ENROLLEE_SOFTAP
246     EXPECT_EQ(ENROLLEE, ESSoftapHost());
247 #else
248     EXPECT_EQ(MEDIATOR, ESSoftapHost());
249 #endif
250 }
251
252 TEST(ESStop, ESTerminateEasysetupWithoutESInit)
253 {
254     EXPECT_EQ(ES_ERROR, ESTerminateEnrollee());
255 }
256
257 TEST(ESStop, ESTerminateEasysetupWithoutOCStack)
258 {
259     EXPECT_EQ(ES_OK, ESInitEnrollee(CT_ADAPTER_IP,
260                                     ssid,
261                                     passwd,
262                                     0,
263                                     EventCallbackInApplication));
264     EXPECT_EQ(ES_ERROR, ESTerminateEnrollee());
265 }
266
267 TEST(ESStop, ESTerminateEasysetupWithOutCreateProvisioningResource)
268 {
269     EXPECT_EQ(ES_OK, ESInitEnrollee(CT_ADAPTER_IP,
270                                     ssid,
271                                     passwd,
272                                     0,
273                                     EventCallbackInApplication));
274     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
275     EXPECT_EQ(ES_ERROR, ESTerminateEnrollee());
276     EXPECT_EQ(OC_STACK_OK, OCStop());
277 }
278
279 TEST(ESStop, ESTerminateEasysetupWithoutProviosioningResource)
280 {
281     EXPECT_EQ(ES_OK, ESInitEnrollee(CT_ADAPTER_IP,
282                                     ssid,
283                                     passwd,
284                                     0,
285                                     EventCallbackInApplication));
286     EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
287     EXPECT_EQ(ES_ERROR, ESTerminateEnrollee());
288     EXPECT_EQ(OC_STACK_OK, OCStop());
289 }
290
291 TEST(ESStop, ESTerminateEasysetupSuccess)
292 {
293     EXPECT_EQ(ES_OK, ESInitEnrollee(CT_ADAPTER_IP,
294                                     ssid,
295                                     passwd,
296                                     0,
297                                     EventCallbackInApplication));
298     EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
299     EXPECT_EQ(ES_RESOURCECREATED, ESInitProvisioning());
300     EXPECT_EQ(ES_OK, ESTerminateEnrollee());
301     EXPECT_EQ(OC_STACK_OK, OCStop());
302 }
303