tizen 2.3 release
[framework/web/wearable/wrt-commons.git] / tests / dao / TestCases_SecurityOriginDAO.cpp
1 /*
2  * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /**
17  * @file   TestCases_SecurityOriginDAO.cpp
18  * @author  Slawomir Pajak (s.pajak@partner.samsung.com)
19  * @version 1.0
20  * @brief   This file contains tests for security origin dao class.
21  */
22
23 #include <dpl/test/test_runner.h>
24 #include <wrt-commons/security-origin-dao/security_origin_dao.h>
25
26
27 RUNNER_TEST_GROUP_INIT(DAO)
28
29 using namespace SecurityOriginDB;
30
31 namespace {
32
33 class SecurityOriginDAOWrapper {
34 public:
35     static SecurityOriginDAO* getSecurityOriginDAO()
36     {
37         static SecurityOriginDAOPtr securityOriginDAO(
38                 new SecurityOriginDB::SecurityOriginDAO(DPL::FromASCIIString("testWidget123")));
39         return securityOriginDAO.get();
40     }
41 };
42 }
43
44 /**
45  * Name: security_origin_dao_set_remove
46  * Description: Test saves SecurityOriginData object, reads it, and removes it at the end.
47  * Expected: All operations should succeed.
48  */
49 RUNNER_TEST(security_origin_dao_set_remove)
50 {
51     SecurityOriginDAO* securityOriginDAO = SecurityOriginDAOWrapper::getSecurityOriginDAO();
52
53     SecurityOriginDataList dataList = securityOriginDAO->getSecurityOriginDataList();
54     RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
55
56     Origin origin(L"scheme", L"host", 123);
57     SecurityOriginData securityData(WrtDB::FEATURE_WEB_NOTIFICATION, origin);
58     securityOriginDAO->setSecurityOriginData(securityData, RESULT_ALLOW_ONCE, false);
59
60     Origin origin2(L"scheme2", L"host2", 1234);
61     SecurityOriginData securityData2(WrtDB::FEATURE_GEOLOCATION, origin2);
62     securityOriginDAO->setSecurityOriginData(securityData2, RESULT_DENY_ONCE, true);
63
64     dataList = securityOriginDAO->getSecurityOriginDataList();
65
66     RUNNER_ASSERT_MSG(dataList.size() == 2, "CertificateDataList should not be empty");
67
68     securityOriginDAO->removeSecurityOriginData(securityData);
69     securityOriginDAO->removeSecurityOriginData(securityData2);
70
71     dataList = securityOriginDAO->getSecurityOriginDataList();
72     RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
73 }
74
75 /**
76  * Name: security_origin_dao_update
77  * Description: Test checks update operation for SecurityOriginData.
78  * Expected: All operations should succeed.
79  */
80 RUNNER_TEST(security_origin_dao_update)
81 {
82     SecurityOriginDAO* securityOriginDAO = SecurityOriginDAOWrapper::getSecurityOriginDAO();
83
84     SecurityOriginDataList dataList = securityOriginDAO->getSecurityOriginDataList();
85     RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
86
87     Origin origin(L"scheme", L"host", 123);
88     SecurityOriginData securityData(WrtDB::FEATURE_WEB_NOTIFICATION, origin);
89     securityOriginDAO->setSecurityOriginData(securityData, RESULT_ALLOW_ONCE, true);
90
91     dataList = securityOriginDAO->getSecurityOriginDataList();
92     RUNNER_ASSERT_MSG(dataList.size() == 1, "CertificateDataList should not be empty");
93     RUNNER_ASSERT((*dataList.begin())->feature == WrtDB::FEATURE_WEB_NOTIFICATION);
94     RUNNER_ASSERT((*dataList.begin())->origin.host == L"host");
95     RUNNER_ASSERT((*dataList.begin())->origin.scheme == L"scheme");
96     RUNNER_ASSERT((*dataList.begin())->origin.port == 123);
97     RUNNER_ASSERT(securityOriginDAO->getResult(**dataList.begin()) == RESULT_ALLOW_ONCE);
98     RUNNER_ASSERT(securityOriginDAO->isReadOnly(**dataList.begin()));
99
100     securityOriginDAO->setSecurityOriginData(securityData, RESULT_DENY_ONCE, false);
101
102     dataList = securityOriginDAO->getSecurityOriginDataList();
103     RUNNER_ASSERT_MSG(dataList.size() == 1, "CertificateDataList should not be empty");
104     RUNNER_ASSERT((*dataList.begin())->feature == WrtDB::FEATURE_WEB_NOTIFICATION);
105     RUNNER_ASSERT((*dataList.begin())->origin.host == L"host");
106     RUNNER_ASSERT((*dataList.begin())->origin.scheme == L"scheme");
107     RUNNER_ASSERT((*dataList.begin())->origin.port == 123);
108     RUNNER_ASSERT(securityOriginDAO->getResult(**dataList.begin()) == RESULT_DENY_ONCE);
109     RUNNER_ASSERT(!securityOriginDAO->isReadOnly(**dataList.begin()));
110
111     securityOriginDAO->removeSecurityOriginData(securityData);
112
113     dataList = securityOriginDAO->getSecurityOriginDataList();
114     RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
115 }
116
117
118 /**
119  * Name: security_origin_dao_remove_by_result
120  * Description: Test remove by result operation for SecurityOriginData.
121  * Expected: All operations should succeed.
122  */
123 RUNNER_TEST(security_origin_dao_remove_by_result)
124 {
125     SecurityOriginDAO* securityOriginDAO = SecurityOriginDAOWrapper::getSecurityOriginDAO();
126
127     SecurityOriginDataList dataList = securityOriginDAO->getSecurityOriginDataList();
128     RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
129
130     Origin origin(L"scheme", L"host", 123);
131     SecurityOriginData securityData(WrtDB::FEATURE_WEB_NOTIFICATION, origin);
132     securityOriginDAO->setSecurityOriginData(securityData, RESULT_ALLOW_ONCE, false);
133
134     Origin origin2(L"scheme2", L"host2", 1234);
135     SecurityOriginData securityData2(WrtDB::FEATURE_GEOLOCATION, origin2);
136     securityOriginDAO->setSecurityOriginData(securityData2, RESULT_DENY_ONCE, true);
137
138     Origin origin3(L"scheme3", L"host3", 2546);
139     SecurityOriginData securityData3(WrtDB::FEATURE_FULLSCREEN_MODE, origin3);
140     securityOriginDAO->setSecurityOriginData(securityData3, RESULT_DENY_ONCE, false);
141
142     dataList = securityOriginDAO->getSecurityOriginDataList();
143     RUNNER_ASSERT_MSG(dataList.size() ==  3, "CertificateDataList should not be empty");
144
145     securityOriginDAO->removeSecurityOriginData(RESULT_DENY_ONCE);
146
147     dataList = securityOriginDAO->getSecurityOriginDataList();
148     RUNNER_ASSERT_MSG(dataList.size() ==  1, "CertificateDataList should not be empty");
149
150     securityOriginDAO->removeSecurityOriginData(RESULT_ALLOW_ONCE);
151
152     dataList = securityOriginDAO->getSecurityOriginDataList();
153     RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
154 }
155
156 /**
157  * Name: security_origin_dao_origin_operators
158  * Description: Test comparison operators for Origin class.
159  * Expected: All operations should succeed.
160  */
161 RUNNER_TEST(security_origin_dao_origin_operators)
162 {
163     Origin origin1(L"scheme", L"host", 123);
164     Origin origin2(L"scheme", L"host", 123);
165     Origin origin3(L"scheme1", L"host", 123);
166     Origin origin4(L"scheme", L"host2", 123);
167     Origin origin5(L"scheme", L"host", 122);
168
169     RUNNER_ASSERT(origin1 == origin2);
170     RUNNER_ASSERT(origin2 == origin1);
171     RUNNER_ASSERT(origin1 != origin3);
172     RUNNER_ASSERT(origin1 != origin4);
173     RUNNER_ASSERT(origin1 != origin5);
174     RUNNER_ASSERT(origin3 != origin4);
175     RUNNER_ASSERT(origin4 != origin5);
176 }
177
178 /**
179  * Name: security_origin_dao_data_operators
180  * Description: Test comparison operators for SecurityOriginData class.
181  * Expected: All operations should succeed.
182  */
183 RUNNER_TEST(security_origin_dao_data_operators)
184 {
185     SecurityOriginData data1(WrtDB::FEATURE_WEB_NOTIFICATION, Origin(L"scheme", L"host", 123));
186     SecurityOriginData data2(WrtDB::FEATURE_WEB_NOTIFICATION, Origin(L"scheme", L"host", 123));
187     SecurityOriginData data3(WrtDB::FEATURE_END, Origin(L"scheme", L"host", 123));
188     SecurityOriginData data4(WrtDB::FEATURE_WEB_NOTIFICATION, Origin(L"scheme1", L"host", 123));
189     SecurityOriginData data5(WrtDB::FEATURE_WEB_NOTIFICATION, Origin(L"scheme", L"host1", 123));
190     SecurityOriginData data6(WrtDB::FEATURE_WEB_NOTIFICATION, Origin(L"scheme", L"host", 124));
191
192     RUNNER_ASSERT(data1 == data2);
193     RUNNER_ASSERT(data2 == data1);
194     RUNNER_ASSERT(data1 != data3);
195     RUNNER_ASSERT(data1 != data4);
196     RUNNER_ASSERT(data1 != data5);
197     RUNNER_ASSERT(data1 != data6);
198     RUNNER_ASSERT(data3 != data4);
199     RUNNER_ASSERT(data3 != data5);
200     RUNNER_ASSERT(data3 != data6);
201     RUNNER_ASSERT(data4 != data5);
202     RUNNER_ASSERT(data4 != data6);
203     RUNNER_ASSERT(data5 != data6);
204 }