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