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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
24 #include "gtest/gtest.h"
26 #include "ocpayload.h"
28 #include "oic_malloc.h"
29 #include "cainterface.h"
30 #include "resourcemanager.h"
31 #include "secureresourcemanager.h"
32 #include "pstatresource.h"
33 #include "security_internals.h"
35 // InitPstatResource Tests
36 TEST(PstatResourceTest, InitPstatResource)
38 EXPECT_EQ(OC_STACK_INVALID_PARAM, InitPstatResource());
41 // DeInitPstatResource Tests
42 TEST(PstatResourceTest, DeInitPstatResource)
44 EXPECT_EQ(OC_STACK_INVALID_PARAM, DeInitPstatResource());
47 //CreatePstatResource Tests
48 TEST(PstatResourceTest, CreatePstatResource)
50 EXPECT_EQ(OC_STACK_INVALID_PARAM, CreatePstatResource());
53 //PstatEntityHandler Tests
54 TEST(PstatResourceTest, PstatEntityHandlerWithDummyRequest)
56 OCEntityHandlerRequest req = OCEntityHandlerRequest();
57 EXPECT_EQ(OC_EH_ERROR, PstatEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req));
60 TEST(PstatResourceTest, PstatEntityHandlerWithPostRequest)
62 OicSecPstat_t *defaultPstat = (OicSecPstat_t *) OICCalloc(1, sizeof(*defaultPstat));
63 ASSERT_TRUE(defaultPstat != NULL);
64 defaultPstat->isOp = false;
65 uint8_t deviceId[] = {0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x69, 0x64, 0x00,
66 0x00, 0x00, 0x00, 0x00, 0x18, 0x5a, 0x9f};
67 memcpy(defaultPstat->deviceID.id, deviceId, sizeof(deviceId));
68 EXPECT_EQ(sizeof(defaultPstat->deviceID.id), sizeof(deviceId));
69 defaultPstat->commitHash = 1234;
70 defaultPstat->cm = (OicSecDpm_t) 63;
71 defaultPstat->tm = (OicSecDpm_t) 48;
72 defaultPstat->om = (OicSecDpom_t) 0;
73 defaultPstat->smLen = 1;
74 defaultPstat->sm = (OicSecDpom_t *)OICCalloc(defaultPstat->smLen, sizeof(*defaultPstat->sm));
75 ASSERT_TRUE(defaultPstat->sm != NULL);
76 defaultPstat->sm[0] = (OicSecDpom_t) 3;
79 EXPECT_EQ(OC_STACK_OK, PstatToCBORPayload(defaultPstat, &cbor, &size, true));
80 DeletePstatBinData(defaultPstat);
81 ASSERT_TRUE(cbor != NULL);
83 OCEntityHandlerRequest req = OCEntityHandlerRequest();
84 req.method = OC_REST_POST;
85 req.payload = (OCPayload *) OCSecurityPayloadCreate(cbor, size);
86 EXPECT_EQ(OC_EH_ERROR, PstatEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req));
88 OCPayloadDestroy(req.payload);
91 TEST(PstatResourceTest, PstatEntityHandlerInvalidRequest)
93 EXPECT_EQ(OC_EH_ERROR, PstatEntityHandler(OCEntityHandlerFlag::OC_OBSERVE_FLAG, NULL));
96 TEST(PstatResourceTest, PstatToCBORPayloadNULL)
98 EXPECT_EQ(OC_STACK_INVALID_PARAM, PstatToCBORPayload(NULL, NULL, 0, false));
99 // Case when cbor payload is NULL
102 EXPECT_EQ(OC_STACK_INVALID_PARAM, PstatToCBORPayload(&pstat, NULL, &size, false));
103 uint8_t *cborPayload = (uint8_t *) OICCalloc(1, size);
104 ASSERT_TRUE(NULL != cborPayload);
105 EXPECT_EQ(OC_STACK_INVALID_PARAM, PstatToCBORPayload(&pstat, &cborPayload, &size, false));
106 OICFree(cborPayload);
108 // Case when pstat is zero.
109 EXPECT_EQ(OC_STACK_INVALID_PARAM, PstatToCBORPayload(NULL, &cborPayload, &size, false));
110 // Case when size is 0.
111 EXPECT_EQ(OC_STACK_INVALID_PARAM, PstatToCBORPayload(&pstat, &cborPayload, 0, false));
112 OICFree(cborPayload);
115 TEST(PstatResourceTest, CBORPayloadToPstat)
117 EXPECT_EQ(OC_STACK_INVALID_PARAM, CBORPayloadToPstat(NULL, 0, NULL));
120 TEST(PstatResourceTest, PstatToCBORPayloadAndCBORPayloadToPstat)
124 pstat.commitHash = 0;
125 uint8_t deviceId[] = {0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x69, 0x64, 0x00,
126 0x00, 0x00, 0x00, 0x00, 0x18, 0x5a, 0x9f};
127 memcpy(pstat.deviceID.id, deviceId, sizeof(deviceId));
130 pstat.om = SINGLE_SERVICE_CLIENT_DRIVEN;
132 pstat.sm = (OicSecDpom_t*)OICCalloc(pstat.smLen, sizeof(*pstat.sm));
133 ASSERT_TRUE(NULL != pstat.sm);
134 pstat.sm[0] = SINGLE_SERVICE_CLIENT_DRIVEN;
137 uint8_t *cbor = NULL;
138 EXPECT_EQ(OC_STACK_OK, PstatToCBORPayload(&pstat, &cbor, &size, false));
142 FAIL() << "Failed to convert PstatToCBORPayload";
145 ASSERT_TRUE(NULL != cbor);
146 OicSecPstat_t *pstat1 = NULL;
147 EXPECT_EQ(OC_STACK_OK, CBORPayloadToPstat(cbor, size, &pstat1));
148 ASSERT_TRUE(NULL != pstat1);
149 EXPECT_EQ(pstat.commitHash, pstat1->commitHash);
150 EXPECT_EQ(pstat.isOp, pstat1->isOp);
151 EXPECT_EQ(pstat.tm, pstat1->tm);
152 EXPECT_EQ(pstat.om, pstat1->om);
153 EXPECT_EQ(pstat.smLen, pstat1->smLen);
154 EXPECT_EQ(pstat.sm[0], pstat1->sm[0]);
156 DeletePstatBinData(pstat1);