• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 
18 #include "net_manager_constants.h"
19 #include "vpn_database_defines.h"
20 
21 #ifdef GTEST_API_
22 #define private public
23 #endif
24 
25 #include "vpn_database_helper.h"
26 
27 namespace OHOS {
28 namespace NetManagerStandard {
29 using namespace testing::ext;
30 
31 constexpr int32_t OLD_VERSION = 1;
32 constexpr int32_t NEW_VERSION = 2;
33 
34 class VpnDatabaseHelperTest : public testing::Test {
35 public:
36     static inline auto &vpnDataHelper_ = VpnDatabaseHelper::GetInstance();
37 };
38 
39 HWTEST_F(VpnDatabaseHelperTest, OnCreate001, TestSize.Level1)
40 {
41     auto dbCallBack = new (std::nothrow) VpnDataBaseCallBack();
42     std::string vpnDatabaseName = VpnDatabaseDefines::VPN_DATABASE_PATH + VpnDatabaseDefines::VPN_DB_NAME;
43     int32_t errCode = OHOS::NativeRdb::E_OK;
44     OHOS::NativeRdb::RdbStoreConfig config(vpnDatabaseName);
45     config.SetSecurityLevel(NativeRdb::SecurityLevel::S1);
46     VpnDataBaseCallBack sqliteOpenHelperCallback;
47     std::shared_ptr<OHOS::NativeRdb::RdbStore> store_ =
48         OHOS::NativeRdb::RdbHelper::GetRdbStore(config, OLD_VERSION, sqliteOpenHelperCallback, errCode);
49     int32_t ret = dbCallBack->OnCreate(*(store_));
50     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
51 }
52 
53 HWTEST_F(VpnDatabaseHelperTest, OnUpgrade001, TestSize.Level1)
54 {
55     auto dbCallBack = new (std::nothrow) VpnDataBaseCallBack();
56     std::string vpnDatabaseName = VpnDatabaseDefines::VPN_DATABASE_PATH + VpnDatabaseDefines::VPN_DB_NAME;
57     int32_t errCode = OHOS::NativeRdb::E_OK;
58     OHOS::NativeRdb::RdbStoreConfig config(vpnDatabaseName);
59     config.SetSecurityLevel(NativeRdb::SecurityLevel::S1);
60     VpnDataBaseCallBack sqliteOpenHelperCallback;
61     std::shared_ptr<OHOS::NativeRdb::RdbStore> store_ =
62         OHOS::NativeRdb::RdbHelper::GetRdbStore(config, NEW_VERSION, sqliteOpenHelperCallback, errCode);
63     int32_t ret = dbCallBack->OnUpgrade(*(store_), OLD_VERSION, NEW_VERSION);
64     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
65 }
66 
67 HWTEST_F(VpnDatabaseHelperTest, OnDowngrade001, TestSize.Level1)
68 {
69     auto dbCallBack = new (std::nothrow) VpnDataBaseCallBack();
70     std::string vpnDatabaseName = VpnDatabaseDefines::VPN_DATABASE_PATH + VpnDatabaseDefines::VPN_DB_NAME;
71     int32_t errCode = OHOS::NativeRdb::E_OK;
72     OHOS::NativeRdb::RdbStoreConfig config(vpnDatabaseName);
73     config.SetSecurityLevel(NativeRdb::SecurityLevel::S1);
74     VpnDataBaseCallBack sqliteOpenHelperCallback;
75     std::shared_ptr<OHOS::NativeRdb::RdbStore> store_ =
76         OHOS::NativeRdb::RdbHelper::GetRdbStore(config, NEW_VERSION, sqliteOpenHelperCallback, errCode);
77     int32_t ret = dbCallBack->OnDowngrade(*(store_), OLD_VERSION, NEW_VERSION);
78     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
79 }
80 
81 HWTEST_F(VpnDatabaseHelperTest, IsVpnInfoExists001, TestSize.Level1)
82 {
83     std::string vpnId = "0000";
84     EXPECT_EQ(vpnDataHelper_.IsVpnInfoExists(vpnId), false);
85 }
86 
87 HWTEST_F(VpnDatabaseHelperTest, IsVpnInfoExists002, TestSize.Level1)
88 {
89     std::string vpnId = "1234";
90     sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
91     if (vpnBean == nullptr) {
92         return;
93     }
94     vpnBean->vpnId_ = "1234";
95     vpnBean->userId_ = 100;
96     vpnBean->vpnType_ = 1;
97     vpnBean->vpnName_ = "name";
98     vpnBean->vpnAddress_ = "1.1.1.1";
99     vpnBean->isLegacy_ = 1;
100     vpnBean->saveLogin_ = 1;
101     vpnDataHelper_.InsertData(vpnBean);
102     auto ret = vpnDataHelper_.IsVpnInfoExists(vpnId);
103     EXPECT_NE(ret, true);
104 }
105 
106 HWTEST_F(VpnDatabaseHelperTest, InsertData001, TestSize.Level1)
107 {
108     sptr<VpnDataBean> vpnBean = nullptr;
109     EXPECT_EQ(vpnDataHelper_.InsertData(vpnBean), NETMANAGER_EXT_ERR_INVALID_PARAMETER);
110 }
111 
112 HWTEST_F(VpnDatabaseHelperTest, InsertData002, TestSize.Level1)
113 {
114     sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
115     ASSERT_NE(vpnBean, nullptr);
116     vpnBean->vpnId_ = "1234";
117     vpnBean->userId_ = 100;
118     vpnBean->vpnType_ = 1;
119     vpnBean->vpnName_ = "name";
120     vpnBean->vpnAddress_ = "1.1.1.1";
121     vpnBean->isLegacy_ = 1;
122     vpnBean->saveLogin_ = 1;
123     vpnDataHelper_.DeleteVpnData("1234");
124     auto ret = vpnDataHelper_.InsertData(vpnBean);
125     EXPECT_TRUE(ret == NETMANAGER_EXT_SUCCESS || ret == NETMANAGER_EXT_ERR_OPERATION_FAILED);
126 }
127 
128 HWTEST_F(VpnDatabaseHelperTest, InsertOrUpdateData001, TestSize.Level1)
129 {
130     sptr<VpnDataBean> vpnBean = nullptr;
131     EXPECT_EQ(vpnDataHelper_.InsertOrUpdateData(vpnBean), NETMANAGER_EXT_ERR_INVALID_PARAMETER);
132 }
133 
134 HWTEST_F(VpnDatabaseHelperTest, InsertOrUpdateData002, TestSize.Level1)
135 {
136     sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
137     ASSERT_NE(vpnBean, nullptr);
138     vpnBean->vpnId_ = "1234";
139     vpnBean->userId_ = 100;
140     vpnBean->vpnType_ = 1;
141     vpnBean->vpnName_ = "name";
142     vpnBean->vpnAddress_ = "1.1.1.1";
143     vpnBean->isLegacy_ = 1;
144     vpnBean->saveLogin_ = 1;
145     auto ret = vpnDataHelper_.InsertOrUpdateData(vpnBean);
146     EXPECT_TRUE(ret == NETMANAGER_EXT_SUCCESS || ret == NETMANAGER_EXT_ERR_OPERATION_FAILED);
147 }
148 
149 HWTEST_F(VpnDatabaseHelperTest, QueryVpnData001, TestSize.Level1)
150 {
151     std::string vpnId;
152     sptr<VpnDataBean> vpnBean = nullptr;
153     EXPECT_EQ(vpnDataHelper_.QueryVpnData(vpnBean, vpnId), NETMANAGER_EXT_ERR_INVALID_PARAMETER);
154     vpnBean = new (std::nothrow) VpnDataBean();
155     ASSERT_NE(vpnBean, nullptr);
156     EXPECT_EQ(vpnDataHelper_.QueryVpnData(vpnBean, vpnId), NETMANAGER_EXT_ERR_INVALID_PARAMETER);
157     vpnId = "1234";
158     vpnBean->vpnId_ = "1234";
159     vpnBean->userId_ = 100;
160     vpnBean->vpnType_ = 1;
161     vpnBean->vpnName_ = "name";
162     vpnBean->vpnAddress_ = "1.1.1.1";
163     vpnBean->isLegacy_ = 1;
164     vpnBean->saveLogin_ = 1;
165     vpnDataHelper_.InsertData(vpnBean);
166     auto ret = vpnDataHelper_.QueryVpnData(vpnBean, vpnId);
167     EXPECT_TRUE(ret == NETMANAGER_EXT_SUCCESS || ret == NETMANAGER_EXT_ERR_OPERATION_FAILED);
168 }
169 
170 HWTEST_F(VpnDatabaseHelperTest, QueryAllData001, TestSize.Level1)
171 {
172     std::vector<sptr<SysVpnConfig>> list;
173     int32_t userId = 100;
174     auto ret = vpnDataHelper_.QueryAllData(list, userId);
175     EXPECT_TRUE(ret == NETMANAGER_EXT_SUCCESS || ret == NETMANAGER_EXT_ERR_OPERATION_FAILED);
176 }
177 
178 HWTEST_F(VpnDatabaseHelperTest, DeleteVpnData001, TestSize.Level1)
179 {
180     std::string vpnId;
181     EXPECT_EQ(vpnDataHelper_.DeleteVpnData(vpnId), NETMANAGER_EXT_ERR_INVALID_PARAMETER);
182     vpnId = "1234";
183     sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
184     if (vpnBean == nullptr) {
185         return;
186     }
187     vpnBean->vpnId_ = "1234";
188     vpnBean->userId_ = 100;
189     vpnBean->vpnType_ = 1;
190     vpnBean->vpnName_ = "name";
191     vpnBean->vpnAddress_ = "1.1.1.1";
192     vpnBean->isLegacy_ = 1;
193     vpnBean->saveLogin_ = 1;
194     vpnDataHelper_.InsertData(vpnBean);
195     auto ret = vpnDataHelper_.DeleteVpnData(vpnId);
196     EXPECT_TRUE(ret == NETMANAGER_EXT_SUCCESS || ret == NETMANAGER_EXT_ERR_OPERATION_FAILED);
197 }
198 
199 HWTEST_F(VpnDatabaseHelperTest, UpdateData001, TestSize.Level1)
200 {
201     sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
202     if (vpnBean == nullptr) {
203         return;
204     }
205     vpnBean->vpnId_ = "1234";
206     vpnBean->userId_ = 100;
207     vpnBean->vpnType_ = 1;
208     vpnBean->vpnName_ = "name";
209     vpnBean->vpnAddress_ = "1.1.1.1";
210     vpnBean->isLegacy_ = 1;
211     vpnBean->saveLogin_ = 1;
212     vpnDataHelper_.InsertData(vpnBean);
213 
214     vpnBean = nullptr;
215     auto ret = vpnDataHelper_.UpdateData(vpnBean);
216     EXPECT_TRUE(ret == NETMANAGER_EXT_ERR_INVALID_PARAMETER || ret == NETMANAGER_EXT_ERR_OPERATION_FAILED);
217     vpnBean = new (std::nothrow) VpnDataBean();
218     ASSERT_NE(vpnBean, nullptr);
219     vpnBean->vpnId_ = "1234";
220     vpnBean->userId_ = 100;
221     vpnBean->vpnType_ = 1;
222     vpnBean->vpnName_ = "name_update";
223     vpnBean->vpnAddress_ = "2.2.2.2";
224     vpnBean->isLegacy_ = 1;
225     vpnBean->saveLogin_ = 1;
226     ret = vpnDataHelper_.UpdateData(vpnBean);
227     EXPECT_TRUE(ret == NETMANAGER_EXT_SUCCESS || ret == NETMANAGER_EXT_ERR_OPERATION_FAILED);
228 }
229 
230 HWTEST_F(VpnDatabaseHelperTest, NoStore001, TestSize.Level1)
231 {
232     std::shared_ptr<OHOS::NativeRdb::RdbStore> tmp = vpnDataHelper_.store_;
233     vpnDataHelper_.store_ = nullptr;
234     sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
235     ASSERT_NE(vpnBean, nullptr);
236     vpnBean->vpnId_ = "1234";
237     vpnBean->userId_ = 100;
238     vpnBean->vpnType_ = 1;
239     vpnBean->vpnName_ = "name";
240     vpnBean->vpnAddress_ = "1.1.1.1";
241     vpnBean->isLegacy_ = 1;
242     vpnBean->saveLogin_ = 1;
243     EXPECT_EQ(vpnDataHelper_.InsertData(vpnBean), NETMANAGER_EXT_ERR_OPERATION_FAILED);
244     EXPECT_EQ(vpnDataHelper_.UpdateData(vpnBean), NETMANAGER_EXT_ERR_OPERATION_FAILED);
245     EXPECT_EQ(vpnDataHelper_.QueryVpnData(vpnBean, vpnBean->vpnId_), NETMANAGER_EXT_ERR_OPERATION_FAILED);
246     std::vector<sptr<SysVpnConfig>> list;
247     EXPECT_EQ(vpnDataHelper_.QueryAllData(list, vpnBean->userId_), NETMANAGER_EXT_ERR_OPERATION_FAILED);
248     EXPECT_EQ(vpnDataHelper_.DeleteVpnData(vpnBean->vpnId_), NETMANAGER_EXT_ERR_OPERATION_FAILED);
249     vpnDataHelper_.store_ = tmp;
250 }
251 
252 HWTEST_F(VpnDatabaseHelperTest, EncryptData001, TestSize.Level1)
253 {
254     sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
255     ASSERT_NE(vpnBean, nullptr);
256     vpnBean->vpnId_ = "1234";
257     vpnBean->userName_ = "TEST";
258     vpnBean->password_ = "111111";
259     vpnBean->ipsecPreSharedKey_ = "ipsecPreSharedKey_";
260     vpnBean->l2tpSharedKey_ = "l2tpSharedKey_";
261     vpnBean->askpass_ = "swanctlConf_";
262     vpnBean->swanctlConf_ = "ipsecPreSharedKey_";
263     vpnBean->optionsL2tpdClient_ = "optionsL2tpdClient_";
264     vpnBean->ipsecSecrets_ = "ipsecSecrets_";
265     vpnBean->userId_ = 100;
266     vpnBean->vpnType_ = 1;
267     vpnBean->vpnName_ = "name";
268     vpnBean->vpnAddress_ = "1.1.1.1";
269     vpnBean->isLegacy_ = 1;
270     vpnBean->saveLogin_ = 1;
271 
272     EXPECT_EQ(vpnDataHelper_.EncryptData(vpnBean), NETMANAGER_EXT_ERR_INTERNAL);
273     EXPECT_EQ(vpnDataHelper_.DecryptData(vpnBean), NETMANAGER_EXT_SUCCESS);
274 }
275 } // namespace NetManagerStandard
276 } // namespace OHOS