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 "credresource.h"
24 #include "oic_malloc.h"
30 //Declare Cred resource methods for testing
31 OCStackResult CreateCredResource();
32 OCEntityHandlerResult CredEntityHandler (OCEntityHandlerFlag flag,
33 OCEntityHandlerRequest * ehRequest);
34 char * BinToCredJSON(const OicSecCred_t * pstat);
35 OicSecCred_t * JSONToCredBin(const char * jsonStr);
36 void InitSecCredInstance(OicSecCred_t * cred);
37 void DeleteCredList(OicSecCred_t* cred);
42 OicSecCred_t * getCredList()
44 OicSecCred_t * cred = (OicSecCred_t*)OICCalloc(1, sizeof(OicSecCred_t));
46 strcpy((char *)cred->subject.id, "subject1");
50 cred->roleIds = (OicSecRole_t *)OICCalloc(cred->roleIdsLen, sizeof(OicSecRole_t));
51 strcpy((char *)cred->roleIds[0].id, "role11");
52 strcpy((char *)cred->roleIds[1].id, "role12");
57 cred->owners = (OicUuid_t*)OICCalloc(cred->ownersLen, sizeof(OicUuid_t));
58 strcpy((char *)cred->owners[0].id, "ownersId11");
60 cred->next = (OicSecCred_t*)OICCalloc(1, sizeof(OicSecCred_t));
61 cred->next->credId = 5678;
62 strcpy((char *)cred->next->subject.id, "subject2");
64 cred->next->roleIdsLen = 0;
66 cred->next->credType = 1;
67 cred->next->privateData.data = (char *)OICCalloc(1, strlen("My private Key21") + 1);
68 strcpy(cred->next->privateData.data, "My private Key21");
70 cred->next->publicData.data = (char *)OICCalloc(1, strlen("My Public Key123") + 1);
71 strcpy(cred->next->publicData.data, "My Public Key123");
73 cred->next->ownersLen = 2;
74 cred->next->owners = (OicUuid_t*)OICCalloc(cred->next->ownersLen, sizeof(OicUuid_t));
75 strcpy((char *)cred->next->owners[0].id, "ownersId21");
76 strcpy((char *)cred->next->owners[1].id, "ownersId22");
80 //InitCredResource Tests
81 TEST(InitCredResourceTest, InitCredResource)
83 EXPECT_EQ(OC_STACK_INVALID_PARAM, InitCredResource());
86 //DeInitCredResource Tests
87 TEST(DeInitCredResourceTest, DeInitCredResource)
89 EXPECT_EQ(OC_STACK_INVALID_PARAM, DeInitCredResource());
92 //CreateCredResource Tests
93 TEST(CreateCredResourceTest, CreateCredResource)
95 EXPECT_EQ(OC_STACK_INVALID_PARAM, CreateCredResource());
98 //CredEntityHandler Tests
99 TEST(CredEntityHandlerTest, CredEntityHandlerWithDummyRequest)
101 OCEntityHandlerRequest req;
102 EXPECT_EQ(OC_EH_ERROR, CredEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, &req));
105 TEST(CredEntityHandlerTest, CredEntityHandlerWithNULLRequest)
107 EXPECT_EQ(OC_EH_ERROR, CredEntityHandler(OCEntityHandlerFlag::OC_REQUEST_FLAG, NULL));
110 TEST(CredEntityHandlerTest, CredEntityHandlerInvalidFlag)
112 OCEntityHandlerRequest req;
113 EXPECT_EQ(OC_EH_ERROR, CredEntityHandler(OCEntityHandlerFlag::OC_OBSERVE_FLAG, &req));
116 //BinToCredJSON Tests
117 TEST(BinToCredJSONTest, BinToCredJSONNullCred)
119 char* value = BinToCredJSON(NULL);
120 EXPECT_TRUE(value == NULL);
123 TEST(BinToCredJSONTest, BinToCredJSONValidCred)
126 OicSecCred_t * cred = getCredList();
128 json = BinToCredJSON(cred);
130 printf("BinToCredJSON:%s\n", json);
131 EXPECT_TRUE(json != NULL);
132 DeleteCredList(cred);
136 //JSONToCredBin Tests
137 TEST(JSONToCredBinTest, JSONToCredBinValidJSON)
139 OicSecCred_t* cred1 = getCredList();
140 char* json = BinToCredJSON(cred1);
142 EXPECT_TRUE(json != NULL);
143 OicSecCred_t *cred2 = JSONToCredBin(json);
144 EXPECT_TRUE(cred2 == NULL);
145 DeleteCredList(cred1);
146 DeleteCredList(cred2);
150 TEST(JSONToCredBinTest, JSONToCredBinNullJSON)
152 OicSecCred_t *cred = JSONToCredBin(NULL);
153 EXPECT_TRUE(cred == NULL);
156 //GetCredResourceData Test
157 TEST(CredGetResourceDataTest, GetCredResourceDataNULLSubject)
159 EXPECT_TRUE(NULL == GetCredResourceData(NULL));
162 TEST(CredGenerateCredentialTest, GenerateCredentialValidInput)
165 strcpy((char *)owners[0].id, "ownersId21");
167 OicUuid_t subject = {};
168 strcpy((char *)subject.id, "subject11");
170 char privateKey[] = "My private Key11";
172 OicSecCred_t * cred = NULL;
174 cred = GenerateCredential(&subject, SYMMETRIC_PAIR_WISE_KEY, NULL,
175 privateKey, 1, owners);
176 printf("cred->credId = %d\n", cred->credId);
177 printf("cred->subject.id = %s\n", cred->subject.id);
178 printf("cred->credType = %d\n", cred->credType);
179 printf("cred->privateData.data = %s\n", cred->privateData.data);
180 printf("cred->ownersLen = %zd\n", cred->ownersLen);
181 printf("cred->owners[0].id = %s\n", cred->owners[0].id);
183 EXPECT_TRUE(NULL != cred);
184 DeleteCredList(cred);
187 TEST(CredAddCredentialTest, GenerateCredentialValidInput)
190 strcpy((char *)owners[0].id, "ownersId21");
192 OicUuid_t subject = {};
193 strcpy((char *)subject.id, "subject11");
195 char privateKey[] = "My private Key11";
197 OicSecCred_t * cred = NULL;
199 cred = GenerateCredential(&subject, SYMMETRIC_PAIR_WISE_KEY, NULL,
200 privateKey, 1, owners);
201 EXPECT_TRUE(NULL != cred);
203 EXPECT_EQ(OC_STACK_ERROR, AddCredential(cred));
205 DeleteCredList(cred);
209 TEST(CredGetResourceDataTest, GetCredResourceDataValidSubject)
211 OicSecCred_t* cred = getCredList();
212 EXPECT_TRUE(NULL != GetCredResourceData(cred->subject));