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 EXPECT_EQ(vpnDataHelper_.IsVpnInfoExists(vpnId), true); 103 } 104 105 HWTEST_F(VpnDatabaseHelperTest, InsertData001, TestSize.Level1) 106 { 107 sptr<VpnDataBean> vpnBean = nullptr; 108 EXPECT_EQ(vpnDataHelper_.InsertData(vpnBean), NETMANAGER_EXT_ERR_INVALID_PARAMETER); 109 } 110 111 HWTEST_F(VpnDatabaseHelperTest, InsertData002, TestSize.Level1) 112 { 113 sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean(); 114 ASSERT_NE(vpnBean, nullptr); 115 vpnBean->vpnId_ = "1234"; 116 vpnBean->userId_ = 100; 117 vpnBean->vpnType_ = 1; 118 vpnBean->vpnName_ = "name"; 119 vpnBean->vpnAddress_ = "1.1.1.1"; 120 vpnBean->isLegacy_ = 1; 121 vpnBean->saveLogin_ = 1; 122 vpnDataHelper_.DeleteVpnData("1234"); 123 EXPECT_EQ(vpnDataHelper_.InsertData(vpnBean), NETMANAGER_EXT_SUCCESS); 124 } 125 126 HWTEST_F(VpnDatabaseHelperTest, InsertOrUpdateData001, TestSize.Level1) 127 { 128 sptr<VpnDataBean> vpnBean = nullptr; 129 EXPECT_EQ(vpnDataHelper_.InsertOrUpdateData(vpnBean), NETMANAGER_EXT_ERR_INVALID_PARAMETER); 130 } 131 132 HWTEST_F(VpnDatabaseHelperTest, InsertOrUpdateData002, TestSize.Level1) 133 { 134 sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean(); 135 ASSERT_NE(vpnBean, nullptr); 136 vpnBean->vpnId_ = "1234"; 137 vpnBean->userId_ = 100; 138 vpnBean->vpnType_ = 1; 139 vpnBean->vpnName_ = "name"; 140 vpnBean->vpnAddress_ = "1.1.1.1"; 141 vpnBean->isLegacy_ = 1; 142 vpnBean->saveLogin_ = 1; 143 EXPECT_EQ(vpnDataHelper_.InsertOrUpdateData(vpnBean), NETMANAGER_EXT_SUCCESS); 144 } 145 146 HWTEST_F(VpnDatabaseHelperTest, QueryVpnData001, TestSize.Level1) 147 { 148 std::string vpnId; 149 sptr<VpnDataBean> vpnBean = nullptr; 150 EXPECT_EQ(vpnDataHelper_.QueryVpnData(vpnBean, vpnId), NETMANAGER_EXT_ERR_INVALID_PARAMETER); 151 vpnBean = new (std::nothrow) VpnDataBean(); 152 ASSERT_NE(vpnBean, nullptr); 153 EXPECT_EQ(vpnDataHelper_.QueryVpnData(vpnBean, vpnId), NETMANAGER_EXT_ERR_INVALID_PARAMETER); 154 vpnId = "1234"; 155 vpnBean->vpnId_ = "1234"; 156 vpnBean->userId_ = 100; 157 vpnBean->vpnType_ = 1; 158 vpnBean->vpnName_ = "name"; 159 vpnBean->vpnAddress_ = "1.1.1.1"; 160 vpnBean->isLegacy_ = 1; 161 vpnBean->saveLogin_ = 1; 162 vpnDataHelper_.InsertData(vpnBean); 163 EXPECT_EQ(vpnDataHelper_.QueryVpnData(vpnBean, vpnId), NETMANAGER_EXT_SUCCESS); 164 } 165 166 HWTEST_F(VpnDatabaseHelperTest, QueryAllData001, TestSize.Level1) 167 { 168 std::vector<SysVpnConfig> list; 169 int32_t userId = 100; 170 EXPECT_EQ(vpnDataHelper_.QueryAllData(list, userId), NETMANAGER_EXT_SUCCESS); 171 } 172 173 HWTEST_F(VpnDatabaseHelperTest, DeleteVpnData001, TestSize.Level1) 174 { 175 std::string vpnId; 176 EXPECT_EQ(vpnDataHelper_.DeleteVpnData(vpnId), NETMANAGER_EXT_ERR_INVALID_PARAMETER); 177 vpnId = "1234"; 178 sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean(); 179 if (vpnBean == nullptr) { 180 return; 181 } 182 vpnBean->vpnId_ = "1234"; 183 vpnBean->userId_ = 100; 184 vpnBean->vpnType_ = 1; 185 vpnBean->vpnName_ = "name"; 186 vpnBean->vpnAddress_ = "1.1.1.1"; 187 vpnBean->isLegacy_ = 1; 188 vpnBean->saveLogin_ = 1; 189 vpnDataHelper_.InsertData(vpnBean); 190 EXPECT_EQ(vpnDataHelper_.DeleteVpnData(vpnId), NETMANAGER_EXT_SUCCESS); 191 } 192 193 HWTEST_F(VpnDatabaseHelperTest, UpdateData001, TestSize.Level1) 194 { 195 sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean(); 196 if (vpnBean == nullptr) { 197 return; 198 } 199 vpnBean->vpnId_ = "1234"; 200 vpnBean->userId_ = 100; 201 vpnBean->vpnType_ = 1; 202 vpnBean->vpnName_ = "name"; 203 vpnBean->vpnAddress_ = "1.1.1.1"; 204 vpnBean->isLegacy_ = 1; 205 vpnBean->saveLogin_ = 1; 206 vpnDataHelper_.InsertData(vpnBean); 207 208 vpnBean = nullptr; 209 EXPECT_EQ(vpnDataHelper_.UpdateData(vpnBean), NETMANAGER_EXT_ERR_INVALID_PARAMETER); 210 vpnBean = new (std::nothrow) VpnDataBean(); 211 ASSERT_NE(vpnBean, nullptr); 212 vpnBean->vpnId_ = "1234"; 213 vpnBean->userId_ = 100; 214 vpnBean->vpnType_ = 1; 215 vpnBean->vpnName_ = "name_update"; 216 vpnBean->vpnAddress_ = "2.2.2.2"; 217 vpnBean->isLegacy_ = 1; 218 vpnBean->saveLogin_ = 1; 219 EXPECT_EQ(vpnDataHelper_.UpdateData(vpnBean), NETMANAGER_EXT_SUCCESS); 220 } 221 222 HWTEST_F(VpnDatabaseHelperTest, NoStore001, TestSize.Level1) 223 { 224 std::shared_ptr<OHOS::NativeRdb::RdbStore> tmp = vpnDataHelper_.store_; 225 vpnDataHelper_.store_ = nullptr; 226 sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean(); 227 ASSERT_NE(vpnBean, nullptr); 228 vpnBean->vpnId_ = "1234"; 229 vpnBean->userId_ = 100; 230 vpnBean->vpnType_ = 1; 231 vpnBean->vpnName_ = "name"; 232 vpnBean->vpnAddress_ = "1.1.1.1"; 233 vpnBean->isLegacy_ = 1; 234 vpnBean->saveLogin_ = 1; 235 EXPECT_EQ(vpnDataHelper_.InsertData(vpnBean), NETMANAGER_EXT_ERR_OPERATION_FAILED); 236 EXPECT_EQ(vpnDataHelper_.UpdateData(vpnBean), NETMANAGER_EXT_ERR_OPERATION_FAILED); 237 EXPECT_EQ(vpnDataHelper_.QueryVpnData(vpnBean, vpnBean->vpnId_), NETMANAGER_EXT_ERR_OPERATION_FAILED); 238 std::vector<SysVpnConfig> list; 239 EXPECT_EQ(vpnDataHelper_.QueryAllData(list, vpnBean->userId_), NETMANAGER_EXT_ERR_OPERATION_FAILED); 240 EXPECT_EQ(vpnDataHelper_.DeleteVpnData(vpnBean->vpnId_), NETMANAGER_EXT_ERR_OPERATION_FAILED); 241 vpnDataHelper_.store_ = tmp; 242 } 243 } // namespace NetManagerStandard 244 } // namespace OHOS