6f5581159c41ab39bb9f7a3245ef9bb36279711c
[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
53 #include "gtesthelper.h"
54
55 using namespace std;
56
57 namespace itst = iotivity::test;
58
59 #define DEFAULT_CONTEXT_VALUE 0x99
60
61 //-----------------------------------------------------------------------------
62 // Private variables
63 //-----------------------------------------------------------------------------
64 static const char TAG[] = "TestHarness";
65
66 char ssid[] = "EasySetup123";
67 char passwd[] = "EasySetup123";
68
69 void OnboardingCallback(ESResult esResult);
70
71 //-----------------------------------------------------------------------------
72 // Callback functions
73 //-----------------------------------------------------------------------------
74 extern "C"  void EventCallbackInApplication(ESResult esResult,
75                                                                     EnrolleeState enrolleeState)
76 {
77     OIC_LOG(INFO, TAG, "Entering EventCallbackInApplication");
78
79     if(esResult != ES_OK)
80     {
81         cout<<"Easy stup is failed at Enrollee state = "<<enrolleeState<<endl;
82     }
83     else
84     {
85         if(enrolleeState == ES_ON_BOARDED_STATE)
86         {
87             cout<<"Device is successfully OnBoared on Adhoc network"<<endl;
88         }
89         else if (enrolleeState == ES_PROVISIONED_STATE)
90         {
91             cout<<"Device is provisioned with target network's credentials"<<endl;
92         }
93         else if (enrolleeState == ES_ON_BOARDED_TARGET_NETWORK_STATE)
94         {
95             cout<<"Device is onboarded/connected with target network"<<endl;
96         }
97         else
98         {
99             cout<<"Wrong state !! Easy setup is failed at Enrollee state = "<<enrolleeState<<endl;
100         }
101     }
102 }
103
104 //-----------------------------------------------------------------------------
105 //  Local functions
106 //-----------------------------------------------------------------------------
107
108 void InitESEnrollee()
109 {
110     OIC_LOG(INFO, TAG, "Entering InitESEnrollee");
111
112     EXPECT_EQ(ES_OK, InitEasySetup(CT_ADAPTER_IP,
113                                     "EasySetup123",
114                                     "EasySetup123",
115                                     0,
116                                     EventCallbackInApplication));
117     OIC_LOG(INFO, TAG, "Leaving InitESEnrollee");
118 }
119
120 //-----------------------------------------------------------------------------
121 // Tests
122 //-----------------------------------------------------------------------------
123
124 TEST(ESEnrolleeInit, ESEnrolleeInitNullSSID)
125 {
126     EXPECT_EQ(ES_ERROR, InitEasySetup(CT_ADAPTER_IP, 0, passwd, 0, EventCallbackInApplication));
127 }
128
129 TEST(ESEnrolleeInit, ESEnrolleeInitNullPassword)
130 {
131     EXPECT_EQ(ES_ERROR, InitEasySetup(CT_ADAPTER_IP, ssid, 0, 0, EventCallbackInApplication));
132 }
133
134 TEST(ESEnrolleeInit, ESEnrolleeInitNullCb)
135 {
136     EXPECT_EQ(ES_ERROR, InitEasySetup(CT_ADAPTER_IP, ssid, passwd, 0, 0));
137 }
138
139 TEST(ESEnrolleeInit, ESEnrolleeInitEasySetupSuccess)
140 {
141     EXPECT_EQ(ES_OK, InitEasySetup(CT_ADAPTER_IP,
142                                     ssid,
143                                     passwd,
144                                     0,
145                                     EventCallbackInApplication));
146 }
147
148 TEST(ESEnrolleeInit, ESEnrolleeBleOnboarding)
149 {
150     EXPECT_EQ(0, ESBleOnboarding());
151 }
152
153 TEST(ESEnrolleeInit, ESEnrolleeSoftapOnboarding)
154 {
155     EXPECT_EQ(true, ESSoftapOnboarding());
156 }
157
158 TEST(ESOCInit, ESOCInitNullIPAddr)
159 {
160     EXPECT_EQ(OC_STACK_OK, OCInit(0, 5683, OC_SERVER));
161     EXPECT_EQ(OC_STACK_OK, OCStop());
162 }
163
164 TEST(ESOCInit, ESOCInitNullPort)
165 {
166     EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 0, OC_SERVER));
167     EXPECT_EQ(OC_STACK_OK, OCStop());
168 }
169
170 TEST(ESOCInit, ESOCInitNullAddrAndPort)
171 {
172     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
173     EXPECT_EQ(OC_STACK_OK, OCStop());
174 }
175
176 TEST(ESOCInit, ESOCInitInvalidMode)
177 {
178     EXPECT_EQ(OC_STACK_ERROR, OCInit(0, 0, (OCMode)10));
179     EXPECT_EQ(OC_STACK_ERROR, OCStop());
180 }
181
182 TEST(ESProvisioning, ESInitProvisioning)
183 {
184     EXPECT_EQ(ES_RESOURCECREATED, InitProvisioning());
185 }
186
187 TEST(ESProvisioning, ESInitProvisioningWithOCStackClientMode)
188 {
189     EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_CLIENT));
190     EXPECT_EQ(ES_ERROR, InitProvisioning());
191     EXPECT_EQ(OC_STACK_OK, OCStop());
192 }
193
194 TEST(ESProvisioningResource, ESCreateProvisioningResourceSecurityDisabled)
195 {
196     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
197     EXPECT_EQ(OC_STACK_OK, CreateProvisioningResource(0));
198     EXPECT_EQ(OC_STACK_OK, OCStop());
199 }
200
201 TEST(ESProvisioningResource, ESCreateProvisioningResourceSecurityEnabled)
202 {
203     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
204     EXPECT_EQ(OC_STACK_OK, CreateProvisioningResource(1));
205     EXPECT_EQ(OC_STACK_OK, OCStop());
206 }
207
208 TEST(ESProvisioningResource, ESDeleteProvisioningResource)
209 {
210     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
211     EXPECT_EQ(OC_STACK_OK, CreateProvisioningResource(0));
212     EXPECT_EQ(OC_STACK_OK, DeleteProvisioningResource());
213     EXPECT_EQ(OC_STACK_OK, OCStop());
214 }
215
216 TEST(ESProvisioningResource, ESDeleteProvisioningResourceWithoutCreating)
217 {
218     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
219     EXPECT_EQ(OC_STACK_NO_RESOURCE, DeleteProvisioningResource());
220     EXPECT_EQ(OC_STACK_OK, OCStop());
221 }
222
223 TEST(ESOnboarding, ESOnboardingSoftAp)
224 {
225     EXPECT_EQ(1, ESOnboard(ssid, passwd, OnboardingCallback));
226 }
227
228 TEST(ESOnboarding, ESOnboardingSoftApEnrollee)
229 {
230 #ifdef ENROLLEE_SOFTAP
231     EXPECT_EQ(1, ESSoftapAtEnrollee());
232     EXPECT_EQ(0, ESSoftapAtMediator());
233 #endif
234 }
235
236 TEST(ESOnboarding, ESOnboardingSoftApMediator)
237 {
238 #ifndef ENROLLEE_SOFTAP
239     EXPECT_EQ(0, ESSoftapAtEnrollee());
240     EXPECT_EQ(1, ESSoftapAtMediator());
241 #endif
242 }
243
244 TEST(ESOnboarding, ESOnboardingSoftApHost)
245 {
246 #ifdef ENROLLEE_SOFTAP
247     EXPECT_EQ(ENROLLEE, ESSoftapHost());
248 #else
249     EXPECT_EQ(MEDIATOR, ESSoftapHost());
250 #endif
251 }
252
253 TEST(ESStop, ESTerminateEasysetupWithoutESInit)
254 {
255     EXPECT_EQ(ES_ERROR, TerminateEasySetup());
256 }
257
258 TEST(ESStop, ESTerminateEasysetupWithoutOCStack)
259 {
260     EXPECT_EQ(ES_OK, InitEasySetup(CT_ADAPTER_IP,
261                                     ssid,
262                                     passwd,
263                                     0,
264                                     EventCallbackInApplication));
265     EXPECT_EQ(ES_ERROR, TerminateEasySetup());
266 }
267
268 TEST(ESStop, ESTerminateEasysetupWithOutCreateProvisioningResource)
269 {
270     EXPECT_EQ(ES_OK, InitEasySetup(CT_ADAPTER_IP,
271                                     ssid,
272                                     passwd,
273                                     0,
274                                     EventCallbackInApplication));
275     EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
276     EXPECT_EQ(ES_ERROR, TerminateEasySetup());
277     EXPECT_EQ(OC_STACK_OK, OCStop());
278 }
279
280 TEST(ESStop, ESTerminateEasysetupWithoutProviosioningResource)
281 {
282     EXPECT_EQ(ES_OK, InitEasySetup(CT_ADAPTER_IP,
283                                     ssid,
284                                     passwd,
285                                     0,
286                                     EventCallbackInApplication));
287     EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
288     EXPECT_EQ(ES_ERROR, TerminateEasySetup());
289     EXPECT_EQ(OC_STACK_OK, OCStop());
290 }
291
292 TEST(ESStop, ESTerminateEasysetupSuccess)
293 {
294     EXPECT_EQ(ES_OK, InitEasySetup(CT_ADAPTER_IP,
295                                     ssid,
296                                     passwd,
297                                     0,
298                                     EventCallbackInApplication));
299     EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, OC_SERVER));
300     EXPECT_EQ(ES_RESOURCECREATED, InitProvisioning());
301     EXPECT_EQ(ES_OK, TerminateEasySetup());
302     EXPECT_EQ(OC_STACK_OK, OCStop());
303 }
304