1 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
3 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
17 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
19 #include "gtest/gtest.h"
21 #include "resourcemanager.h"
22 #include "securevirtualresourcetypes.h"
23 #include "srmresourcestrings.h"
24 #include "doxmresource.h"
25 #include "ocserverrequest.h"
26 #include "oic_malloc.h"
32 //Declare Doxm resource methods for testing
33 OCStackResult CreateDoxmResource();
34 OCEntityHandlerResult DoxmEntityHandler (OCEntityHandlerFlag flag,
35 OCEntityHandlerRequest * ehRequest);
36 char * BinToDoxmJSON(const OicSecDoxm_t * doxm);
37 OicSecDoxm_t * JSONToDoxmBin(const char * jsonStr);
38 void InitSecDoxmInstance(OicSecDoxm_t * doxm);
39 OCEntityHandlerResult HandleDoxmPostRequest (const OCEntityHandlerRequest * ehRequest);
40 void DeleteDoxmBinData(OicSecDoxm_t* doxm);
45 OicSecDoxm_t * getBinDoxm()
47 OicSecDoxm_t * doxm = (OicSecDoxm_t*)OICCalloc(1, sizeof(OicSecDoxm_t));
49 doxm->oxmType = (OicUrn_t *)OICCalloc(doxm->oxmTypeLen, sizeof(char *));
50 doxm->oxmType[0] = (char*)OICMalloc(strlen(OXM_JUST_WORKS) + 1);
51 strcpy(doxm->oxmType[0], OXM_JUST_WORKS);
53 doxm->oxm = (OicSecOxm_t *)OICCalloc(doxm->oxmLen, sizeof(short));
54 doxm->oxm[0] = OIC_JUST_WORKS;
55 doxm->oxmSel = OIC_JUST_WORKS;
57 //TODO: Need more clarification on deviceIDFormat field type.
58 //doxm.deviceIDFormat = URN;
59 strcpy((char *) doxm->deviceID.id, "deviceId");
60 strcpy((char *)doxm->owner.id, "ownersId");
64 //InitDoxmResource Tests
65 TEST(InitDoxmResourceTest, InitDoxmResource)
67 EXPECT_EQ(OC_STACK_INVALID_PARAM, InitDoxmResource());
70 //DeInitDoxmResource Tests
71 TEST(DeInitDoxmResourceTest, DeInitDoxmResource)
73 EXPECT_EQ(OC_STACK_ERROR, DeInitDoxmResource());
76 //CreateDoxmResource Tests
77 TEST(CreateDoxmResourceTest, CreateDoxmResource)
79 EXPECT_EQ(OC_STACK_INVALID_PARAM, CreateDoxmResource());
82 //DoxmEntityHandler Tests
83 TEST(DoxmEntityHandlerTest, DoxmEntityHandlerWithDummyRequest)
85 OCEntityHandlerRequest req;
86 EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req));
89 TEST(DoxmEntityHandlerTest, DoxmEntityHandlerWithNULLRequest)
91 EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, NULL));
94 TEST(DoxmEntityHandlerTest, DoxmEntityHandlerInvalidFlag)
96 OCEntityHandlerRequest req;
97 EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_OBSERVE_FLAG, &req));
100 //BinToDoxmJSON Tests
101 TEST(BinToDoxmJSONTest, BinToDoxmJSONNullDoxm)
103 char* value = BinToDoxmJSON(NULL);
104 EXPECT_TRUE(value == NULL);
107 TEST(BinToDoxmJSONTest, BinToDoxmJSONValidDoxm)
109 OicSecDoxm_t * doxm = getBinDoxm();
111 char * json = BinToDoxmJSON(doxm);
112 printf("BinToDoxmJSON:%s\n", json);
113 EXPECT_TRUE(json != NULL);
115 DeleteDoxmBinData(doxm);
119 //JSONToDoxmBin Tests
120 TEST(JSONToDoxmBinTest, JSONToDoxmBinValidJSON)
122 OicSecDoxm_t * doxm1 = getBinDoxm();
123 char * json = BinToDoxmJSON(doxm1);
124 EXPECT_TRUE(json != NULL);
126 OicSecDoxm_t *doxm2 = JSONToDoxmBin(json);
127 EXPECT_TRUE(doxm2 != NULL);
129 DeleteDoxmBinData(doxm1);
133 TEST(JSONToDoxmBinTest, JSONToDoxmBinNullJSON)
135 OicSecDoxm_t *doxm = JSONToDoxmBin(NULL);
136 EXPECT_TRUE(doxm == NULL);
139 //GetDoxmResourceData Test
140 TEST(DoxmGetResourceDataTest, GetDoxmResourceData)
142 EXPECT_TRUE(NULL == GetDoxmResourceData());
145 TEST(HandleDoxmPostRequestTest, HandleDoxmPostRequestValidInput)
147 OCEntityHandlerRequest ehRequest = {};
148 OCServerRequest svRequest = {};
150 OicSecDoxm_t * doxm = getBinDoxm();
152 strcpy(svRequest.addressInfo.IP.ipAddress, "10.10.10.10");
153 svRequest.addressInfo.IP.port = 2345;
154 svRequest.connectivityType = CA_ETHERNET;
156 ehRequest.reqJSONPayload = (unsigned char *) BinToDoxmJSON(doxm);
157 ehRequest.requestHandle = (OCRequestHandle) &svRequest;
159 EXPECT_EQ(OC_EH_ERROR, HandleDoxmPostRequest(&ehRequest));
160 DeleteDoxmBinData(doxm);
161 OICFree(ehRequest.reqJSONPayload);