1 //******************************************************************
3 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include "gtest/gtest.h"
23 #include "ocserverrequest.h"
24 #include "oic_string.h"
25 #include "oic_malloc.h"
26 #include "resourcemanager.h"
27 #include "securevirtualresourcetypes.h"
28 #include "srmresourcestrings.h"
29 #include "doxmresource.h"
30 #include "security_internals.h"
32 #define TAG "SRM-DOXM"
34 OicSecDoxm_t * getBinDoxm()
36 OicSecDoxm_t *doxm = (OicSecDoxm_t *)OICCalloc(1, sizeof(*doxm));
42 doxm->oxmType = (OicUrn_t *)OICCalloc(doxm->oxmTypeLen, sizeof(*doxm->oxmType));
48 doxm->oxmType[0] = (char *) OICMalloc(strlen(OXM_JUST_WORKS) + 1);
49 if (!doxm->oxmType[0])
51 OICFree(doxm->oxmType);
56 OICStrcpy(doxm->oxmType[0], strlen(OXM_JUST_WORKS) + 1, OXM_JUST_WORKS);
58 doxm->oxm = (OicSecOxm_t *)OICCalloc(doxm->oxmLen, sizeof(OicSecOxm_t));
61 OICFree(doxm->oxmType[0]);
62 OICFree(doxm->oxmType);
67 doxm->oxm[0] = OIC_JUST_WORKS;
68 doxm->oxmSel = OIC_JUST_WORKS;
69 doxm->sct = SYMMETRIC_PAIR_WISE_KEY;
71 //TODO: Need more clarification on deviceIDFormat field type.
72 //doxm.deviceIDFormat = URN;
74 uint8_t deviceId[] = {0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64};
75 memcpy(doxm->deviceID.id, deviceId, sizeof(deviceId));
76 uint8_t ownerId[] = {0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x49, 0x64};
77 memcpy(doxm->owner.id, ownerId, sizeof(ownerId));
81 //InitDoxmResource Tests
82 TEST(DoxmResourceTest, InitDoxmResource)
84 EXPECT_EQ(OC_STACK_INVALID_PARAM, InitDoxmResource());
87 //DeInitDoxmResource Tests
88 TEST(DoxmResourceTest, DeInitDoxmResource)
90 EXPECT_EQ(OC_STACK_ERROR, DeInitDoxmResource());
93 //CreateDoxmResource Tests
94 TEST(DoxmResourceTest, CreateDoxmResource)
96 EXPECT_EQ(OC_STACK_INVALID_PARAM, CreateDoxmResource());
99 //DoxmEntityHandler Tests
100 TEST(DoxmResourceTest, DoxmEntityHandlerWithDummyRequest)
102 OCEntityHandlerRequest req = OCEntityHandlerRequest();
103 EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req, NULL));
106 TEST(DoxmResourceTest, DoxmEntityHandlerWithNULLRequest)
108 EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, NULL, NULL));
111 TEST(DoxmResourceTest, DoxmEntityHandlerInvalidFlag)
113 OCEntityHandlerRequest req = OCEntityHandlerRequest();
114 EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_OBSERVE_FLAG, &req, NULL));
117 TEST(DoxmResourceTest, DoxmEntityHandlerValidRequest)
119 EXPECT_EQ(OC_STACK_INVALID_PARAM, InitDoxmResource());
120 char query[] = "oxm=0;owned=false;owner=owner1";
121 OCEntityHandlerRequest req = OCEntityHandlerRequest();
122 req.method = OC_REST_GET;
123 req.query = OICStrdup(query);
124 EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req, NULL));
129 TEST(DoxmResourceTest, DoxmEntityHandlerDeviceIdQuery)
131 EXPECT_EQ(OC_STACK_INVALID_PARAM, InitDoxmResource());
132 char query[] = "deviceuuid=2222222222222222";
133 OCEntityHandlerRequest req = OCEntityHandlerRequest();
134 req.method = OC_REST_GET;
135 req.query = OICStrdup(query);
136 EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req, NULL));
141 TEST(DoxmResourceTest, DoxmToCBORPayloadNULL)
143 OicSecDoxm_t *doxm = getBinDoxm();
145 uint8_t *payload = NULL;
146 EXPECT_EQ(OC_STACK_INVALID_PARAM, DoxmToCBORPayload(NULL, NULL, 0, false));
147 EXPECT_EQ(OC_STACK_INVALID_PARAM, DoxmToCBORPayload(doxm, NULL, &size, false));
148 EXPECT_EQ(OC_STACK_INVALID_PARAM, DoxmToCBORPayload(doxm, &payload, 0, false));
149 EXPECT_EQ(OC_STACK_INVALID_PARAM, DoxmToCBORPayload(NULL, &payload, &size, false));
150 DeleteDoxmBinData(doxm);
153 TEST(DoxmResourceTest, DoxmToCBORPayloadVALID)
155 OicSecDoxm_t *doxm = getBinDoxm();
157 uint8_t *payload = NULL;
159 EXPECT_EQ(OC_STACK_OK, DoxmToCBORPayload(doxm, &payload, &size, false));
160 EXPECT_TRUE(payload != NULL);
162 DeleteDoxmBinData(doxm);
166 //CBORPayloadToDoxm Tests
167 TEST(DoxmResourceTest, CBORPayloadToDoxmNULL)
169 OicSecDoxm_t *doxm = NULL;
170 uint8_t *cborPayload = (uint8_t *)OICCalloc(1, sizeof(uint8_t));
172 ASSERT_TRUE(NULL != cborPayload);
173 EXPECT_EQ(OC_STACK_INVALID_PARAM, CBORPayloadToDoxm(NULL, 0, NULL));
174 EXPECT_EQ(OC_STACK_INVALID_PARAM, CBORPayloadToDoxm(NULL, size, &doxm));
175 EXPECT_EQ(OC_STACK_INVALID_PARAM, CBORPayloadToDoxm(cborPayload, size, NULL));
176 OICFree(cborPayload);
179 TEST(DoxmResourceTest, CBORPayloadToDoxmVALID)
181 OicSecDoxm_t *doxm = getBinDoxm();
182 uint8_t *payload = NULL;
184 EXPECT_EQ(OC_STACK_OK, DoxmToCBORPayload(doxm, &payload, &size, false));
185 EXPECT_TRUE(payload != NULL);
187 OicSecDoxm_t *doxmSec = NULL;
188 EXPECT_EQ(OC_STACK_OK, CBORPayloadToDoxm(payload, size, &doxmSec));
189 ASSERT_TRUE(doxmSec != NULL);
190 EXPECT_EQ(doxmSec->oxmTypeLen, doxm->oxmTypeLen);
191 EXPECT_STREQ(doxmSec->oxmType[0], doxm->oxmType[0]);
192 EXPECT_EQ(doxmSec->oxmLen, doxm->oxmLen);
193 EXPECT_EQ(doxmSec->oxm[0], doxm->oxm[0]);
194 EXPECT_EQ(doxmSec->oxmSel, doxm->oxmSel);
195 EXPECT_EQ(doxmSec->sct, doxm->sct);
196 EXPECT_EQ(doxmSec->owned, doxm->owned);
198 DeleteDoxmBinData(doxmSec);
199 DeleteDoxmBinData(doxm);