dataset/seed/lemonldap/tests/test_lemonldap.py
2022-07-05 22:08:20 +02:00

54 lines
1.8 KiB
Python

from yaml import load, SafeLoader
from os import environ
import warnings
import socket
from json import loads
from requests import get
from execute import run
def req(url, ip, verify=True):
# Monkey patch to force IPv4 resolution
old_getaddrinfo = socket.getaddrinfo
def new_getaddrinfo(*args, **kwargs):
ret = old_getaddrinfo(*args, **kwargs)
dns = list(ret[0])
dns[-1] = (ip, dns[-1][1])
return [dns]
socket.getaddrinfo = new_getaddrinfo
ret = get(url, verify=verify)
ret_code = ret.status_code
content = ret.content
socket.getaddrinfo = old_getaddrinfo
return ret_code, content.decode()
def test_well_known_outside():
conf_file = f'{environ["MACHINE_TEST_DIR"]}/lemonldap.yml'
with open(conf_file) as yaml:
data = load(yaml, Loader=SafeLoader)
url = f'https://{data["address"]}/.well-known/openid-configuration'
with warnings.catch_warnings():
warnings.simplefilter("ignore")
ret_code, content = req(url, data['ip'], verify=False)
assert ret_code == 200
json = loads(content)
assert data['internal_address'] not in json['token_endpoint']
assert data['internal_address'] not in json['userinfo_endpoint']
assert data['internal_address'] not in json['jwks_uri']
def test_well_known_inside():
conf_file = f'{environ["MACHINE_TEST_DIR"]}/lemonldap.yml'
with open(conf_file) as yaml:
data = load(yaml, Loader=SafeLoader)
result = run(data['internal_address'],
['/usr/local/lib/sbin/wget.pl'],
)
json = loads(list(result)[-2])
assert data['internal_address'] in json['token_endpoint']
assert data['internal_address'] in json['userinfo_endpoint']
assert data['internal_address'] in json['jwks_uri']