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