Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F118306470
test_service_ipoe-server.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
test_service_ipoe-server.py
View Options
#!/usr/bin/env python3
#
# Copyright (C) 2022 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import
re
import
unittest
from
base_accel_ppp_test
import
BasicAccelPPPTest
from
vyos.configsession
import
ConfigSessionError
from
vyos.utils.process
import
cmd
from
configparser
import
ConfigParser
ac_name
=
'ACN'
interface
=
'eth0'
def
getConfig
(
string
,
end
=
'cli'
):
command
=
f
'cat /run/accel-pppd/ipoe.conf | sed -n "/^{string}/,/^{end}/p"'
out
=
cmd
(
command
)
return
out
class
TestServiceIPoEServer
(
BasicAccelPPPTest
.
TestCase
):
@classmethod
def
setUpClass
(
cls
):
cls
.
_base_path
=
[
'service'
,
'ipoe-server'
]
cls
.
_config_file
=
'/run/accel-pppd/ipoe.conf'
cls
.
_chap_secrets
=
'/run/accel-pppd/ipoe.chap-secrets'
# call base-classes classmethod
super
(
TestServiceIPoEServer
,
cls
)
.
setUpClass
()
def
verify
(
self
,
conf
):
super
()
.
verify
(
conf
)
# Validate configuration values
accel_modules
=
list
(
conf
[
'modules'
]
.
keys
())
self
.
assertIn
(
'log_syslog'
,
accel_modules
)
self
.
assertIn
(
'ipoe'
,
accel_modules
)
self
.
assertIn
(
'shaper'
,
accel_modules
)
self
.
assertIn
(
'ipv6pool'
,
accel_modules
)
self
.
assertIn
(
'ipv6_nd'
,
accel_modules
)
self
.
assertIn
(
'ipv6_dhcp'
,
accel_modules
)
self
.
assertIn
(
'ippool'
,
accel_modules
)
def
basic_config
(
self
):
self
.
set
([
'interface'
,
interface
,
'client-subnet'
,
'192.168.0.0/24'
])
def
test_accel_local_authentication
(
self
):
mac_address
=
'08:00:27:2f:d8:06'
self
.
set
([
'authentication'
,
'interface'
,
interface
,
'mac'
,
mac_address
])
self
.
set
([
'authentication'
,
'mode'
,
'local'
])
# No IPoE interface configured
with
self
.
assertRaises
(
ConfigSessionError
):
self
.
cli_commit
()
# Test configuration of local authentication for PPPoE server
self
.
basic_config
()
# commit changes
self
.
cli_commit
()
# Validate configuration values
conf
=
ConfigParser
(
allow_no_value
=
True
,
delimiters
=
'='
)
conf
.
read
(
self
.
_config_file
)
# check proper path to chap-secrets file
self
.
assertEqual
(
conf
[
'chap-secrets'
][
'chap-secrets'
],
self
.
_chap_secrets
)
accel_modules
=
list
(
conf
[
'modules'
]
.
keys
())
self
.
assertIn
(
'chap-secrets'
,
accel_modules
)
# basic verification
self
.
verify
(
conf
)
# check local users
tmp
=
cmd
(
f
'sudo cat {self._chap_secrets}'
)
regex
=
f
'{interface}\s+\*\s+{mac_address}\s+\*'
tmp
=
re
.
findall
(
regex
,
tmp
)
self
.
assertTrue
(
tmp
)
def
test_accel_named_pool
(
self
):
first_pool
=
'VyOS-pool1'
first_subnet
=
'192.0.2.0/25'
first_gateway
=
'192.0.2.1'
second_pool
=
'Vyos-pool2'
second_subnet
=
'203.0.113.0/25'
second_gateway
=
'203.0.113.1'
self
.
set
([
'authentication'
,
'mode'
,
'noauth'
])
self
.
set
([
'client-ip-pool'
,
'name'
,
first_pool
,
'gateway-address'
,
first_gateway
])
self
.
set
([
'client-ip-pool'
,
'name'
,
first_pool
,
'subnet'
,
first_subnet
])
self
.
set
([
'client-ip-pool'
,
'name'
,
second_pool
,
'gateway-address'
,
second_gateway
])
self
.
set
([
'client-ip-pool'
,
'name'
,
second_pool
,
'subnet'
,
second_subnet
])
self
.
set
([
'interface'
,
interface
])
# commit changes
self
.
cli_commit
()
# Validate configuration values
conf
=
ConfigParser
(
allow_no_value
=
True
,
delimiters
=
'='
,
strict
=
False
)
conf
.
read
(
self
.
_config_file
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'interface'
],
f
'{interface},shared=1,mode=L2,ifcfg=1,start=dhcpv4,ipv6=1'
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'noauth'
],
'1'
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'ip-pool'
],
first_pool
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'ip-pool'
],
second_pool
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'gw-ip-address'
],
f
'{first_gateway}/25'
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'gw-ip-address'
],
f
'{second_gateway}/25'
)
config
=
getConfig
(
'[ip-pool]'
)
pool_config
=
f
'''{second_subnet},name={second_pool}
{first_subnet},name={first_pool}
gw-ip-address={second_gateway}/25
gw-ip-address={first_gateway}/25'''
self
.
assertIn
(
pool_config
,
config
)
def
test_accel_next_pool
(
self
):
first_pool
=
'VyOS-pool1'
first_subnet
=
'192.0.2.0/25'
first_gateway
=
'192.0.2.1'
second_pool
=
'Vyos-pool2'
second_subnet
=
'203.0.113.0/25'
second_gateway
=
'203.0.113.1'
third_pool
=
'Vyos-pool3'
third_subnet
=
'198.51.100.0/24'
third_gateway
=
'198.51.100.1'
self
.
set
([
'authentication'
,
'mode'
,
'noauth'
])
self
.
set
([
'client-ip-pool'
,
'name'
,
first_pool
,
'gateway-address'
,
first_gateway
])
self
.
set
([
'client-ip-pool'
,
'name'
,
first_pool
,
'subnet'
,
first_subnet
])
self
.
set
([
'client-ip-pool'
,
'name'
,
first_pool
,
'next-pool'
,
second_pool
])
self
.
set
([
'client-ip-pool'
,
'name'
,
second_pool
,
'gateway-address'
,
second_gateway
])
self
.
set
([
'client-ip-pool'
,
'name'
,
second_pool
,
'subnet'
,
second_subnet
])
self
.
set
([
'client-ip-pool'
,
'name'
,
second_pool
,
'next-pool'
,
third_pool
])
self
.
set
([
'client-ip-pool'
,
'name'
,
third_pool
,
'gateway-address'
,
third_gateway
])
self
.
set
([
'client-ip-pool'
,
'name'
,
third_pool
,
'subnet'
,
third_subnet
])
self
.
set
([
'interface'
,
interface
])
# commit changes
self
.
cli_commit
()
# Validate configuration values
conf
=
ConfigParser
(
allow_no_value
=
True
,
delimiters
=
'='
,
strict
=
False
)
conf
.
read
(
self
.
_config_file
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'interface'
],
f
'{interface},shared=1,mode=L2,ifcfg=1,start=dhcpv4,ipv6=1'
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'noauth'
],
'1'
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'ip-pool'
],
first_pool
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'gw-ip-address'
],
f
'{first_gateway}/25'
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'gw-ip-address'
],
f
'{second_gateway}/25'
)
self
.
assertTrue
(
conf
[
'ipoe'
][
'gw-ip-address'
],
f
'{third_gateway}/24'
)
config
=
getConfig
(
'[ip-pool]'
)
# T5099 required specific order
pool_config
=
f
'''{third_subnet},name={third_pool}
{second_subnet},name={second_pool},next={third_pool}
{first_subnet},name={first_pool},next={second_pool}
gw-ip-address={third_gateway}/24
gw-ip-address={second_gateway}/25
gw-ip-address={first_gateway}/25'''
self
.
assertIn
(
pool_config
,
config
)
if
__name__
==
'__main__'
:
unittest
.
main
(
verbosity
=
2
)
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Sat, Oct 17, 12:16 AM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4405276
Default Alt Text
test_service_ipoe-server.py (6 KB)
Attached To
Mode
rVYOSONEX vyos-1x
Attached
Detach File
Event Timeline
Log In to Comment