[IOT-1719] Restore empty UUID string conversion
[platform/upstream/iotivity.git] / resource / csdk / security / unittest / srmutility.cpp
1 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
2 //
3 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4 //
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
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16 //
17 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
18
19 #include "gtest/gtest.h"
20 #include "ocstack.h"
21 #include "srmutility.h"
22 #include "oic_string.h"
23
24 #define TEST_FILL_CHARACTER ((int)0xfb)
25
26 //ParseRestQuery Tests
27 TEST(ParseRestQueryTest, ParseRestQueryEmpty)
28 {
29     unsigned char query[] = "";
30     OicParseQueryIter_t parseIter =  OicParseQueryIter_t();
31     ParseQueryIterInit(query, &parseIter);
32     EXPECT_EQ(NULL,  GetNextQuery(&parseIter));
33 }
34
35
36 TEST(ParseRestQueryTest, ParseSingleRestQuery)
37 {
38     char attr[10], val[10];
39     unsigned char query[] = "owned=false";
40
41     OicParseQueryIter_t parseIter =  OicParseQueryIter_t();
42     ParseQueryIterInit(query, &parseIter);
43     EXPECT_NE((OicParseQueryIter_t *)NULL,  GetNextQuery(&parseIter));
44
45     OICStrcpyPartial(attr, sizeof(attr), (char *)parseIter.attrPos, parseIter.attrLen);
46     OICStrcpyPartial(val, sizeof(val), (char *)parseIter.valPos, parseIter.valLen);
47     printf("\nAttribute: %s  value: %s\n\n", attr, val);
48 }
49
50 TEST(ParseRestQueryTest, ParseRestMultipleQuery)
51 {
52     char attr[10], val[10];
53     unsigned char query[] = "oxm=0;owned=true;owner=owner1";
54
55     OicParseQueryIter_t parseIter =  OicParseQueryIter_t();
56     ParseQueryIterInit(query, &parseIter);
57     printf("\n");
58     while(GetNextQuery(&parseIter))
59     {
60         EXPECT_NE(static_cast<size_t>(0),  parseIter.pi.segment_length);
61
62         OICStrcpyPartial(attr, sizeof(attr), (char *)parseIter.attrPos, parseIter.attrLen);
63         OICStrcpyPartial(val, sizeof(val), (char *)parseIter.valPos, parseIter.valLen);
64         printf("Attribute: %s  value: %s\n", attr, val);
65
66     }
67     printf("\n");
68 }
69
70 TEST(ConvertStrToUuidTest, LowCase)
71 {
72     OicUuid_t uuid;
73     memset(&uuid, TEST_FILL_CHARACTER, sizeof(uuid));
74
75     const char *uuidString1 = "ca5bfba0-c0f1-4906-b995-f139d626dfbd";
76     EXPECT_EQ(OC_STACK_OK, ConvertStrToUuid(uuidString1, &uuid));
77
78     EXPECT_EQ((uint8_t)0xca, uuid.id[0]);
79     EXPECT_EQ((uint8_t)0x5b, uuid.id[1]);
80     EXPECT_EQ((uint8_t)0xfb, uuid.id[2]);
81     EXPECT_EQ((uint8_t)0xa0, uuid.id[3]);
82     EXPECT_EQ((uint8_t)0xc0, uuid.id[4]);
83     EXPECT_EQ((uint8_t)0xf1, uuid.id[5]);
84     EXPECT_EQ((uint8_t)0x49, uuid.id[6]);
85     EXPECT_EQ((uint8_t)0x06, uuid.id[7]);
86     EXPECT_EQ((uint8_t)0xb9, uuid.id[8]);
87     EXPECT_EQ((uint8_t)0x95, uuid.id[9]);
88     EXPECT_EQ((uint8_t)0xf1, uuid.id[10]);
89     EXPECT_EQ((uint8_t)0x39, uuid.id[11]);
90     EXPECT_EQ((uint8_t)0xd6, uuid.id[12]);
91     EXPECT_EQ((uint8_t)0x26, uuid.id[13]);
92     EXPECT_EQ((uint8_t)0xdf, uuid.id[14]);
93     EXPECT_EQ((uint8_t)0xbd, uuid.id[15]);
94 }
95
96 TEST(ConvertStrToUuidTest, UpCase)
97 {
98     OicUuid_t uuid;
99     memset(&uuid, TEST_FILL_CHARACTER, sizeof(uuid));
100
101     const char *uuidString1 = "2320EF4B-D714-4936-93E5-846E1B5DA202";
102     EXPECT_EQ(OC_STACK_OK, ConvertStrToUuid(uuidString1, &uuid));
103
104     EXPECT_EQ((uint8_t)0x23, uuid.id[0]);
105     EXPECT_EQ((uint8_t)0x20, uuid.id[1]);
106     EXPECT_EQ((uint8_t)0xef, uuid.id[2]);
107     EXPECT_EQ((uint8_t)0x4b, uuid.id[3]);
108     EXPECT_EQ((uint8_t)0xd7, uuid.id[4]);
109     EXPECT_EQ((uint8_t)0x14, uuid.id[5]);
110     EXPECT_EQ((uint8_t)0x49, uuid.id[6]);
111     EXPECT_EQ((uint8_t)0x36, uuid.id[7]);
112     EXPECT_EQ((uint8_t)0x93, uuid.id[8]);
113     EXPECT_EQ((uint8_t)0xe5, uuid.id[9]);
114     EXPECT_EQ((uint8_t)0x84, uuid.id[10]);
115     EXPECT_EQ((uint8_t)0x6e, uuid.id[11]);
116     EXPECT_EQ((uint8_t)0x1b, uuid.id[12]);
117     EXPECT_EQ((uint8_t)0x5d, uuid.id[13]);
118     EXPECT_EQ((uint8_t)0xa2, uuid.id[14]);
119     EXPECT_EQ((uint8_t)0x02, uuid.id[15]);
120 }
121
122 TEST(ConvertStrToUuidTest, MixedCase)
123 {
124     OicUuid_t uuid;
125     memset(&uuid, TEST_FILL_CHARACTER, sizeof(uuid));
126
127     const char *uuidString1 = "6905485c-9693-4CF7-9350-4eB39022af7d";
128     EXPECT_EQ(OC_STACK_OK, ConvertStrToUuid(uuidString1, &uuid));
129
130     EXPECT_EQ((uint8_t)0x69, uuid.id[0]);
131     EXPECT_EQ((uint8_t)0x05, uuid.id[1]);
132     EXPECT_EQ((uint8_t)0x48, uuid.id[2]);
133     EXPECT_EQ((uint8_t)0x5c, uuid.id[3]);
134     EXPECT_EQ((uint8_t)0x96, uuid.id[4]);
135     EXPECT_EQ((uint8_t)0x93, uuid.id[5]);
136     EXPECT_EQ((uint8_t)0x4c, uuid.id[6]);
137     EXPECT_EQ((uint8_t)0xf7, uuid.id[7]);
138     EXPECT_EQ((uint8_t)0x93, uuid.id[8]);
139     EXPECT_EQ((uint8_t)0x50, uuid.id[9]);
140     EXPECT_EQ((uint8_t)0x4e, uuid.id[10]);
141     EXPECT_EQ((uint8_t)0xb3, uuid.id[11]);
142     EXPECT_EQ((uint8_t)0x90, uuid.id[12]);
143     EXPECT_EQ((uint8_t)0x22, uuid.id[13]);
144     EXPECT_EQ((uint8_t)0xaf, uuid.id[14]);
145     EXPECT_EQ((uint8_t)0x7d, uuid.id[15]);
146 }
147
148 TEST(ConvertStrToUuidTest, EmptyStringConversion)
149 {
150     OicUuid_t uuid;
151     memset(&uuid, TEST_FILL_CHARACTER, sizeof(uuid));
152
153     const char *uuidString1 = "";
154     EXPECT_EQ(OC_STACK_OK, ConvertStrToUuid(uuidString1, &uuid));
155
156     for (size_t i = 0; i < sizeof(uuid.id); i++)
157     {
158         EXPECT_EQ((uint8_t)0, uuid.id[i]);
159     }
160 }