• 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 
20 #ifdef GTEST_API_
21 #define private public
22 #define protected public
23 #endif
24 #include "l2tp_vpn_ctl.h"
25 #include "vpn_config.h"
26 
27 namespace OHOS {
28 namespace NetManagerStandard {
29 using namespace testing::ext;
30 
31 class L2tpVpnCtlTest : public testing::Test {
32 public:
33     static inline std::unique_ptr<IpsecVpnCtl> l2tpControl_ = nullptr;
34     static void SetUpTestSuite();
35 };
36 
SetUpTestSuite()37 void L2tpVpnCtlTest::SetUpTestSuite()
38 {
39     sptr<L2tpVpnConfig> l2tpVpnconfig = new (std::nothrow) L2tpVpnConfig();
40     if (l2tpVpnconfig == nullptr) {
41         return;
42     }
43     int32_t userId = 0;
44     std::vector<int32_t> activeUserIds;
45     l2tpControl_ = std::make_unique<L2tpVpnCtl>(l2tpVpnconfig, "pkg", userId, activeUserIds);
46     if (l2tpControl_ == nullptr) {
47         return;
48     }
49     l2tpControl_->l2tpVpnConfig_ = l2tpVpnconfig;
50 }
51 
52 HWTEST_F(L2tpVpnCtlTest, SetUp001, TestSize.Level1)
53 {
54     if (l2tpControl_ == nullptr) {
55         return;
56     }
57     EXPECT_EQ(l2tpControl_->SetUp(), NETMANAGER_EXT_SUCCESS);
58 }
59 
60 HWTEST_F(L2tpVpnCtlTest, Destroy001, TestSize.Level1)
61 {
62     if (l2tpControl_ == nullptr) {
63         return;
64     }
65     EXPECT_EQ(l2tpControl_->Destroy(), NETMANAGER_EXT_SUCCESS);
66 }
67 
68 HWTEST_F(L2tpVpnCtlTest, IsInternalVpn001, TestSize.Level1)
69 {
70     if (l2tpControl_ == nullptr) {
71         return;
72     }
73     EXPECT_EQ(l2tpControl_->IsInternalVpn(), true);
74 }
75 
76 HWTEST_F(L2tpVpnCtlTest, GetConnectedSysVpnConfigTest001, TestSize.Level1)
77 {
78     if (l2tpControl_ == nullptr) {
79         return;
80     }
81     sptr<SysVpnConfig> resConfig = nullptr;
82     int32_t ret = l2tpControl_->GetConnectedSysVpnConfig(resConfig);
83     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
84     l2tpControl_->state_ = IpsecVpnStateCode::STATE_CONNECTED;
85     ret = l2tpControl_->GetConnectedSysVpnConfig(resConfig);
86     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
87     sptr<L2tpVpnConfig> tmp = l2tpControl_->l2tpVpnConfig_;
88     l2tpControl_->l2tpVpnConfig_ = nullptr;
89     ret = l2tpControl_->GetConnectedSysVpnConfig(resConfig);
90     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
91     l2tpControl_->l2tpVpnConfig_ = tmp;
92 }
93 
94 HWTEST_F(L2tpVpnCtlTest, NotifyConnectStageTest001, TestSize.Level1)
95 {
96     if (l2tpControl_ == nullptr) {
97         return;
98     }
99     std::string stage;
100     int32_t errorCode = 1;
101     int32_t ret = l2tpControl_->NotifyConnectStage(stage, errorCode);
102     EXPECT_EQ(ret, NETMANAGER_EXT_ERR_PARAMETER_ERROR);
103     stage = IPSEC_START_TAG;
104     ret = l2tpControl_->NotifyConnectStage(stage, errorCode);
105     EXPECT_EQ(ret, NETMANAGER_EXT_ERR_INTERNAL);
106 
107     errorCode = NETMANAGER_EXT_SUCCESS;
108     l2tpControl_->state_ = IpsecVpnStateCode::STATE_INIT;
109     ret = l2tpControl_->NotifyConnectStage(stage, errorCode);
110     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
111 
112     l2tpControl_->state_ = IpsecVpnStateCode::STATE_STARTED;
113     stage = L2TP_IPSEC_CONFIGURED_TAG;
114     ret = l2tpControl_->NotifyConnectStage(stage, errorCode);
115     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
116 
117     l2tpControl_->state_ = IpsecVpnStateCode::STATE_CONFIGED;
118     stage = IPSEC_CONNECT_TAG;
119     ret = l2tpControl_->NotifyConnectStage(stage, errorCode);
120     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
121 
122     l2tpControl_->state_ = IpsecVpnStateCode::STATE_CONTROLLED;
123     stage = L2TP_IPSEC_CONNECTED_TAG;
124     ret = l2tpControl_->NotifyConnectStage(stage, errorCode);
125     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
126 
127     l2tpControl_->state_ = IpsecVpnStateCode::STATE_DISCONNECTED;
128     ret = l2tpControl_->NotifyConnectStage(stage, errorCode);
129     EXPECT_EQ(ret, NETMANAGER_EXT_ERR_INTERNAL);
130 
131     stage = "stageTest";
132     l2tpControl_->state_ = IpsecVpnStateCode::STATE_INIT;
133     EXPECT_EQ(l2tpControl_->NotifyConnectStage(stage, errorCode), NETMANAGER_EXT_SUCCESS);
134     l2tpControl_->state_ = IpsecVpnStateCode::STATE_STARTED;
135     EXPECT_EQ(l2tpControl_->NotifyConnectStage(stage, errorCode), NETMANAGER_EXT_SUCCESS);
136     l2tpControl_->state_ = IpsecVpnStateCode::STATE_CONFIGED;
137     EXPECT_EQ(l2tpControl_->NotifyConnectStage(stage, errorCode), NETMANAGER_EXT_SUCCESS);
138     l2tpControl_->state_ = IpsecVpnStateCode::STATE_CONTROLLED;
139     EXPECT_EQ(l2tpControl_->NotifyConnectStage(stage, errorCode), NETMANAGER_EXT_SUCCESS);
140 }
141 
142 HWTEST_F(L2tpVpnCtlTest, GetSysVpnCertUriTest001, TestSize.Level1)
143 {
144     sptr<L2tpVpnConfig> config = new (std::nothrow) L2tpVpnConfig();
145     if (config == nullptr) {
146         return;
147     }
148     if (l2tpControl_ == nullptr) {
149         return;
150     }
151     config->ipsecCaCertConf_ = "CaCertUri";
152     l2tpControl_->l2tpVpnConfig_ = nullptr;
153     std::string certUri;
154     int32_t certType = 0;
155     int32_t ret = l2tpControl_->GetSysVpnCertUri(certType, certUri);
156     EXPECT_EQ(ret, NETMANAGER_EXT_ERR_INTERNAL);
157     l2tpControl_->l2tpVpnConfig_ = config;
158     ret = l2tpControl_->GetSysVpnCertUri(certType, certUri);
159     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
160     EXPECT_EQ("CaCertUri", certUri);
161 }
162 
163 HWTEST_F(L2tpVpnCtlTest, GetSysVpnCertUriTest002, TestSize.Level1)
164 {
165     sptr<L2tpVpnConfig> config = new (std::nothrow) L2tpVpnConfig();
166     if (config == nullptr) {
167         return;
168     }
169     if (l2tpControl_ == nullptr) {
170         return;
171     }
172     config->ipsecPublicUserCertConf_ = "UserCertUri";
173     l2tpControl_->l2tpVpnConfig_ = config;
174     std::string certUri;
175     int32_t certType = 1;
176     EXPECT_EQ(l2tpControl_->GetSysVpnCertUri(certType, certUri), NETMANAGER_EXT_SUCCESS);
177     EXPECT_EQ("UserCertUri", certUri);
178     certType = 2;
179     EXPECT_EQ(l2tpControl_->GetSysVpnCertUri(certType, certUri), NETMANAGER_EXT_SUCCESS);
180     certType = -1;
181     EXPECT_EQ(l2tpControl_->GetSysVpnCertUri(certType, certUri), NETMANAGER_EXT_SUCCESS);
182 }
183 
184 HWTEST_F(L2tpVpnCtlTest, InitConfigFile001, TestSize.Level1)
185 {
186     sptr<L2tpVpnConfig> config = new (std::nothrow) L2tpVpnConfig();
187     if (config == nullptr) {
188         return;
189     }
190     if (l2tpControl_ == nullptr) {
191         return;
192     }
193     config->ipsecPublicUserCertConf_ = "testUserUri";
194     config->xl2tpdConf_ = "testXl2tpdConf";
195     config->strongswanConf_ = "testStrongswanConf";
196     config->ipsecConf_ = "ipsecConfTest";
197     config->ipsecSecrets_ = "ipsecSecretsTest";
198     config->optionsL2tpdClient_ = "optionsL2tpdClientTest";
199     l2tpControl_->l2tpVpnConfig_ = nullptr;
200     int32_t ret = l2tpControl_->InitConfigFile();
201     EXPECT_EQ(ret, NETMANAGER_EXT_ERR_INTERNAL);
202     l2tpControl_->l2tpVpnConfig_ = config;
203     ret = l2tpControl_->InitConfigFile();
204     EXPECT_EQ(ret, NETMANAGER_EXT_SUCCESS);
205 }
206 } // namespace NetManagerStandard
207 } // namespace OHOS