forked from stove/dataset
55 lines
1.8 KiB
Python
55 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']
|