X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fsecurity%2Funittest%2Fdoxmresource.cpp;h=a5a03dd5e19e0857e8abf6beec8433941737beba;hb=refs%2Ftags%2Fsubmit%2Ftizen_4.0%2F20171010.021147;hp=f2de1ddd0e90fde7c03a73e4724a415b2452b31d;hpb=ae6e681f3aa422e0bad2cc0cf706b54bde18bb1b;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/security/unittest/doxmresource.cpp b/resource/csdk/security/unittest/doxmresource.cpp index f2de1dd..a5a03dd 100644 --- a/resource/csdk/security/unittest/doxmresource.cpp +++ b/resource/csdk/security/unittest/doxmresource.cpp @@ -1,3 +1,5 @@ +//****************************************************************** +// // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved. // //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -18,60 +20,40 @@ #include "gtest/gtest.h" #include "ocstack.h" +#include "ocserverrequest.h" +#include "oic_string.h" +#include "oic_malloc.h" #include "resourcemanager.h" #include "securevirtualresourcetypes.h" #include "srmresourcestrings.h" #include "doxmresource.h" -#include "ocserverrequest.h" -#include "oic_string.h" -#include "oic_malloc.h" -#include "logger.h" +#include "security_internals.h" #define TAG "SRM-DOXM" -#ifdef __cplusplus -extern "C" { -#endif - - -//Declare Doxm resource methods for testing -OCStackResult CreateDoxmResource(); -OCEntityHandlerResult DoxmEntityHandler (OCEntityHandlerFlag flag, - OCEntityHandlerRequest * ehRequest); -char * BinToDoxmJSON(const OicSecDoxm_t * doxm); -OicSecDoxm_t * JSONToDoxmBin(const char * jsonStr); -void InitSecDoxmInstance(OicSecDoxm_t * doxm); -OCEntityHandlerResult HandleDoxmPostRequest (const OCEntityHandlerRequest * ehRequest); -void DeleteDoxmBinData(OicSecDoxm_t* doxm); -OCEntityHandlerResult HandleDoxmGetRequest (const OCEntityHandlerRequest * ehRequest); -#ifdef __cplusplus -} -#endif - - OicSecDoxm_t * getBinDoxm() { - OicSecDoxm_t * doxm = (OicSecDoxm_t*)OICCalloc(1, sizeof(OicSecDoxm_t)); - if(!doxm) + OicSecDoxm_t *doxm = (OicSecDoxm_t *)OICCalloc(1, sizeof(*doxm)); + if (!doxm) { return NULL; } doxm->oxmTypeLen = 1; - doxm->oxmType = (OicUrn_t *)OICCalloc(doxm->oxmTypeLen, sizeof(char *)); - if(!doxm->oxmType) + doxm->oxmType = (OicUrn_t *)OICCalloc(doxm->oxmTypeLen, sizeof(*doxm->oxmType)); + if (!doxm->oxmType) { OICFree(doxm); return NULL; } - doxm->oxmType[0] = (char*)OICMalloc(strlen(OXM_JUST_WORKS) + 1); - if(!doxm->oxmType[0]) + doxm->oxmType[0] = (char *) OICMalloc(strlen(OXM_JUST_WORKS) + 1); + if (!doxm->oxmType[0]) { OICFree(doxm->oxmType); OICFree(doxm); return NULL; } - strcpy(doxm->oxmType[0], OXM_JUST_WORKS); + OICStrcpy(doxm->oxmType[0], strlen(OXM_JUST_WORKS) + 1, OXM_JUST_WORKS); doxm->oxmLen = 1; doxm->oxm = (OicSecOxm_t *)OICCalloc(doxm->oxmLen, sizeof(OicSecOxm_t)); if(!doxm->oxm) @@ -88,129 +70,132 @@ OicSecDoxm_t * getBinDoxm() doxm->owned = true; //TODO: Need more clarification on deviceIDFormat field type. //doxm.deviceIDFormat = URN; - strcpy((char *) doxm->deviceID.id, "deviceId"); - strcpy((char *)doxm->owner.id, "ownersId"); + + uint8_t deviceId[] = {0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64}; + memcpy(doxm->deviceID.id, deviceId, sizeof(deviceId)); + uint8_t ownerId[] = {0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x49, 0x64}; + memcpy(doxm->owner.id, ownerId, sizeof(ownerId)); return doxm; } //InitDoxmResource Tests -TEST(InitDoxmResourceTest, InitDoxmResource) +TEST(DoxmResourceTest, InitDoxmResource) { EXPECT_EQ(OC_STACK_INVALID_PARAM, InitDoxmResource()); } //DeInitDoxmResource Tests -TEST(DeInitDoxmResourceTest, DeInitDoxmResource) +TEST(DoxmResourceTest, DeInitDoxmResource) { EXPECT_EQ(OC_STACK_ERROR, DeInitDoxmResource()); } //CreateDoxmResource Tests -TEST(CreateDoxmResourceTest, CreateDoxmResource) +TEST(DoxmResourceTest, CreateDoxmResource) { EXPECT_EQ(OC_STACK_INVALID_PARAM, CreateDoxmResource()); } //DoxmEntityHandler Tests -TEST(DoxmEntityHandlerTest, DoxmEntityHandlerWithDummyRequest) +TEST(DoxmResourceTest, DoxmEntityHandlerWithDummyRequest) { - OCEntityHandlerRequest req; - EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req)); + OCEntityHandlerRequest req = OCEntityHandlerRequest(); + EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req, NULL)); } -TEST(DoxmEntityHandlerTest, DoxmEntityHandlerWithNULLRequest) +TEST(DoxmResourceTest, DoxmEntityHandlerWithNULLRequest) { - EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, NULL)); + EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, NULL, NULL)); } -TEST(DoxmEntityHandlerTest, DoxmEntityHandlerInvalidFlag) +TEST(DoxmResourceTest, DoxmEntityHandlerInvalidFlag) { - OCEntityHandlerRequest req; - EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_OBSERVE_FLAG, &req)); + OCEntityHandlerRequest req = OCEntityHandlerRequest(); + EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_OBSERVE_FLAG, &req, NULL)); } -TEST(DoxmEntityHandlerTest, DoxmEntityHandlerValidRequest) +TEST(DoxmResourceTest, DoxmEntityHandlerValidRequest) { EXPECT_EQ(OC_STACK_INVALID_PARAM, InitDoxmResource()); char query[] = "oxm=0;owned=false;owner=owner1"; OCEntityHandlerRequest req = OCEntityHandlerRequest(); req.method = OC_REST_GET; req.query = OICStrdup(query); - EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req)); + EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req, NULL)); OICFree(req.query); } -TEST(DoxmEntityHandlerTest, DoxmEntityHandlerDeviceIdQuery) +TEST(DoxmResourceTest, DoxmEntityHandlerDeviceIdQuery) { EXPECT_EQ(OC_STACK_INVALID_PARAM, InitDoxmResource()); - char query[] = "deviceid=MjIyMjIyMjIyMjIyMjIyMg=="; + char query[] = "deviceuuid=2222222222222222"; OCEntityHandlerRequest req = OCEntityHandlerRequest(); req.method = OC_REST_GET; req.query = OICStrdup(query); - EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req)); + EXPECT_EQ(OC_EH_ERROR, DoxmEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req, NULL)); OICFree(req.query); } -//BinToDoxmJSON Tests -TEST(BinToDoxmJSONTest, BinToDoxmJSONNullDoxm) -{ - char* value = BinToDoxmJSON(NULL); - EXPECT_TRUE(value == NULL); -} - -TEST(BinToDoxmJSONTest, BinToDoxmJSONValidDoxm) +TEST(DoxmResourceTest, DoxmToCBORPayloadNULL) { - OicSecDoxm_t * doxm = getBinDoxm(); - - char * json = BinToDoxmJSON(doxm); - OC_LOG_V(INFO, TAG, "BinToDoxmJSON:%s", json); - EXPECT_TRUE(json != NULL); - + OicSecDoxm_t *doxm = getBinDoxm(); + size_t size = 10; + uint8_t *payload = NULL; + EXPECT_EQ(OC_STACK_INVALID_PARAM, DoxmToCBORPayload(NULL, NULL, 0, false)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, DoxmToCBORPayload(doxm, NULL, &size, false)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, DoxmToCBORPayload(doxm, &payload, 0, false)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, DoxmToCBORPayload(NULL, &payload, &size, false)); DeleteDoxmBinData(doxm); - OICFree(json); } -//JSONToDoxmBin Tests -TEST(JSONToDoxmBinTest, JSONToDoxmBinValidJSON) +TEST(DoxmResourceTest, DoxmToCBORPayloadVALID) { - OicSecDoxm_t * doxm1 = getBinDoxm(); - char * json = BinToDoxmJSON(doxm1); - EXPECT_TRUE(json != NULL); + OicSecDoxm_t *doxm = getBinDoxm(); - OicSecDoxm_t *doxm2 = JSONToDoxmBin(json); - EXPECT_TRUE(doxm2 != NULL); + uint8_t *payload = NULL; + size_t size = 0; + EXPECT_EQ(OC_STACK_OK, DoxmToCBORPayload(doxm, &payload, &size, false)); + EXPECT_TRUE(payload != NULL); - DeleteDoxmBinData(doxm1); - DeleteDoxmBinData(doxm2); - OICFree(json); + DeleteDoxmBinData(doxm); + OICFree(payload); } -TEST(JSONToDoxmBinTest, JSONToDoxmBinNullJSON) +//CBORPayloadToDoxm Tests +TEST(DoxmResourceTest, CBORPayloadToDoxmNULL) { - OicSecDoxm_t *doxm = JSONToDoxmBin(NULL); - EXPECT_TRUE(doxm == NULL); + OicSecDoxm_t *doxm = NULL; + uint8_t *cborPayload = (uint8_t *)OICCalloc(1, sizeof(uint8_t)); + size_t size = 10; + ASSERT_TRUE(NULL != cborPayload); + EXPECT_EQ(OC_STACK_INVALID_PARAM, CBORPayloadToDoxm(NULL, 0, NULL)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, CBORPayloadToDoxm(NULL, size, &doxm)); + EXPECT_EQ(OC_STACK_INVALID_PARAM, CBORPayloadToDoxm(cborPayload, size, NULL)); + OICFree(cborPayload); } -#if 0 -//HandleDoxmPostRequest Test -TEST(HandleDoxmPostRequestTest, HandleDoxmPostRequestValidInput) +TEST(DoxmResourceTest, CBORPayloadToDoxmVALID) { - OCEntityHandlerRequest ehRequest = {}; - OCServerRequest svRequest = {}; - - OicSecDoxm_t * doxm = getBinDoxm(); - - strcpy(svRequest.addressInfo.IP.ipAddress, "10.10.10.10"); - svRequest.addressInfo.IP.port = 2345; - svRequest.connectivityType = CA_ETHERNET; - - ehRequest.reqJSONPayload = (unsigned char *) BinToDoxmJSON(doxm); - ehRequest.requestHandle = (OCRequestHandle) &svRequest; - - EXPECT_EQ(OC_EH_ERROR, HandleDoxmPostRequest(&ehRequest)); + OicSecDoxm_t *doxm = getBinDoxm(); + uint8_t *payload = NULL; + size_t size = 0; + EXPECT_EQ(OC_STACK_OK, DoxmToCBORPayload(doxm, &payload, &size, false)); + EXPECT_TRUE(payload != NULL); + + OicSecDoxm_t *doxmSec = NULL; + EXPECT_EQ(OC_STACK_OK, CBORPayloadToDoxm(payload, size, &doxmSec)); + ASSERT_TRUE(doxmSec != NULL); + EXPECT_EQ(doxmSec->oxmTypeLen, doxm->oxmTypeLen); + EXPECT_STREQ(doxmSec->oxmType[0], doxm->oxmType[0]); + EXPECT_EQ(doxmSec->oxmLen, doxm->oxmLen); + EXPECT_EQ(doxmSec->oxm[0], doxm->oxm[0]); + EXPECT_EQ(doxmSec->oxmSel, doxm->oxmSel); + EXPECT_EQ(doxmSec->sct, doxm->sct); + EXPECT_EQ(doxmSec->owned, doxm->owned); + + DeleteDoxmBinData(doxmSec); DeleteDoxmBinData(doxm); - OICFree(ehRequest.reqJSONPayload); + OICFree(payload); } -#endif