2 * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * @file TestCases_SecurityOriginDAO.cpp
18 * @author Slawomir Pajak (s.pajak@partner.samsung.com)
20 * @brief This file contains tests for security origin dao class.
23 #include <dpl/test/test_runner.h>
24 #include <wrt-commons/security-origin-dao/security_origin_dao.h>
27 RUNNER_TEST_GROUP_INIT(DAO)
29 using namespace SecurityOriginDB;
33 class SecurityOriginDAOWrapper {
35 static SecurityOriginDAO* getSecurityOriginDAO()
37 static SecurityOriginDAOPtr securityOriginDAO(
38 new SecurityOriginDB::SecurityOriginDAO(DPL::FromASCIIString("testWidget123")));
39 return securityOriginDAO.get();
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.
49 RUNNER_TEST(security_origin_dao_set_remove)
51 SecurityOriginDAO* securityOriginDAO = SecurityOriginDAOWrapper::getSecurityOriginDAO();
53 SecurityOriginDataList dataList = securityOriginDAO->getSecurityOriginDataList();
54 RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
56 Origin origin(L"scheme", L"host", 123);
57 SecurityOriginData securityData(WrtDB::FEATURE_WEB_NOTIFICATION, origin);
58 securityOriginDAO->setSecurityOriginData(securityData, RESULT_ALLOW_ONCE, false);
60 Origin origin2(L"scheme2", L"host2", 1234);
61 SecurityOriginData securityData2(WrtDB::FEATURE_GEOLOCATION, origin2);
62 securityOriginDAO->setSecurityOriginData(securityData2, RESULT_DENY_ONCE, true);
64 dataList = securityOriginDAO->getSecurityOriginDataList();
66 RUNNER_ASSERT_MSG(dataList.size() == 2, "CertificateDataList should not be empty");
68 securityOriginDAO->removeSecurityOriginData(securityData);
69 securityOriginDAO->removeSecurityOriginData(securityData2);
71 dataList = securityOriginDAO->getSecurityOriginDataList();
72 RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
76 * Name: security_origin_dao_update
77 * Description: Test checks update operation for SecurityOriginData.
78 * Expected: All operations should succeed.
80 RUNNER_TEST(security_origin_dao_update)
82 SecurityOriginDAO* securityOriginDAO = SecurityOriginDAOWrapper::getSecurityOriginDAO();
84 SecurityOriginDataList dataList = securityOriginDAO->getSecurityOriginDataList();
85 RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
87 Origin origin(L"scheme", L"host", 123);
88 SecurityOriginData securityData(WrtDB::FEATURE_WEB_NOTIFICATION, origin);
89 securityOriginDAO->setSecurityOriginData(securityData, RESULT_ALLOW_ONCE, true);
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()));
100 securityOriginDAO->setSecurityOriginData(securityData, RESULT_DENY_ONCE, false);
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()));
111 securityOriginDAO->removeSecurityOriginData(securityData);
113 dataList = securityOriginDAO->getSecurityOriginDataList();
114 RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
119 * Name: security_origin_dao_remove_by_result
120 * Description: Test remove by result operation for SecurityOriginData.
121 * Expected: All operations should succeed.
123 RUNNER_TEST(security_origin_dao_remove_by_result)
125 SecurityOriginDAO* securityOriginDAO = SecurityOriginDAOWrapper::getSecurityOriginDAO();
127 SecurityOriginDataList dataList = securityOriginDAO->getSecurityOriginDataList();
128 RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
130 Origin origin(L"scheme", L"host", 123);
131 SecurityOriginData securityData(WrtDB::FEATURE_WEB_NOTIFICATION, origin);
132 securityOriginDAO->setSecurityOriginData(securityData, RESULT_ALLOW_ONCE, false);
134 Origin origin2(L"scheme2", L"host2", 1234);
135 SecurityOriginData securityData2(WrtDB::FEATURE_GEOLOCATION, origin2);
136 securityOriginDAO->setSecurityOriginData(securityData2, RESULT_DENY_ONCE, true);
138 Origin origin3(L"scheme3", L"host3", 2546);
139 SecurityOriginData securityData3(WrtDB::FEATURE_FULLSCREEN_MODE, origin3);
140 securityOriginDAO->setSecurityOriginData(securityData3, RESULT_DENY_ONCE, false);
142 dataList = securityOriginDAO->getSecurityOriginDataList();
143 RUNNER_ASSERT_MSG(dataList.size() == 3, "CertificateDataList should not be empty");
145 securityOriginDAO->removeSecurityOriginData(RESULT_DENY_ONCE);
147 dataList = securityOriginDAO->getSecurityOriginDataList();
148 RUNNER_ASSERT_MSG(dataList.size() == 1, "CertificateDataList should not be empty");
150 securityOriginDAO->removeSecurityOriginData(RESULT_ALLOW_ONCE);
152 dataList = securityOriginDAO->getSecurityOriginDataList();
153 RUNNER_ASSERT_MSG(dataList.empty(), "SecurityOriginDataList should be empty");
157 * Name: security_origin_dao_origin_operators
158 * Description: Test comparison operators for Origin class.
159 * Expected: All operations should succeed.
161 RUNNER_TEST(security_origin_dao_origin_operators)
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);
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);
179 * Name: security_origin_dao_data_operators
180 * Description: Test comparison operators for SecurityOriginData class.
181 * Expected: All operations should succeed.
183 RUNNER_TEST(security_origin_dao_data_operators)
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));
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);