Skip to content
Snippets Groups Projects
2 files
+ 141
11
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 131
0
"""Unit testing for Zone Manager server (JWT secured endpoints)"""
import os
import requests
import pytest
from pathlib import Path
def _headers(access_token: str) -> dict[str, str]:
return {
'Content-Type': "application/json",
'Authorization': f"Bearer {access_token}"
}
TIMEOUT = 10
# PORT = os.environ.get('ZM_SERVER_PORT')
PORT = 16001
server_url = f'http://localhost:{PORT}'
url = server_url
# base_domain = 'testtrain.trust-scheme.de' # TODO fail use case change 404, 400 Bad Request ?
base_domain = 'dev-idm.iao.fraunhofer.de'
tf_name1 = f"bw.{base_domain}"
tf_name2 = f"ludwigsburg.{base_domain}"
tf_name3 = f"herrenberg.{base_domain}"
did1 = "did:web:some-did-for-bw"
did2 = "did:web:some-did-for-ludwigsburg"
did3 = "did:web:some-did-for-herrenberg"
@pytest.fixture(scope='session', name='token')
def get_token() -> str:
if not os.getenv('DNS_ZONE_MANAGER_SERVER_AUTH_CONF_PATH'):
config_file_path = Path(__file__).parent / '../auth.conf'
else:
config_file_path = Path(os.getenv('DNS_ZONE_MANAGER_SERVER_AUTH_CONF_PATH'))
config = {}
exec(config_file_path.read_text(), config)
# get token from identity provider defined in auth.conf
token_endpoint = f"{config['KEYCLOAK_URL']}/realms/{config['REALM']}/protocol/openid-connect/token"
data = {
'username': config['TEST_PASSWORD'],
'password': config['TEST_USER'],
'grant_type': 'password',
'client_secret': config['TEST_CLIENT_SECRET'],
'scope': config['TEST_SCOPE'],
'client_id': config['CLIENT_ID'],
}
response = requests.post(token_endpoint, data=data, timeout=10)
yield response.json()["access_token"]
def test_01_get_token(token) -> None:
"""Testing - auth (get token from identity provider)..."""
assert token
def test_02_status_get(token) -> None:
"""Testing - check status endpoint..."""
response = requests.get(
url=f"{server_url}/status",
headers=_headers(token),
timeout=TIMEOUT
)
assert response.json()["status"] == "OK"
def test_03_scheme_claims_put(token) -> None:
"""Testing - check PUT trust framework endpoint..."""
data = {
'schemes': [tf_name1, tf_name2, tf_name3]
}
response = requests.put(
url=f"{server_url}/names/{tf_name1}/schemes",
json=data,
headers=_headers(token),
timeout=TIMEOUT
)
assert response.status_code == 200
def test_04_trust_list_put(token) -> None:
"""Testing - check PUT trust list endpoint..."""
data = {
'did': did1
}
_url = f"{server_url}/names/{tf_name2}/trust-list"
response = requests.put(
url=_url,
json=data,
headers=_headers(token),
timeout=10
)
assert response.status_code == 200
def test_05_view_zone_get(token) -> None:
"""Testing - check GET view-zone..."""
response = requests.get(
url=f"{server_url}/view-zone",
headers=_headers(token),
timeout=TIMEOUT
)
assert response.status_code == 200
def test_06_trust_list_delete(token) -> None:
"""Testing - check DELETE trust list endpoint..."""
response = requests.delete(
url=f"{server_url}/names/{tf_name2}/trust-list",
headers=_headers(token),
timeout=TIMEOUT
)
assert response.status_code == 204
def test_07_scheme_claims_delete(token) -> None:
"""Testing - check DELETE trust framework endpoint..."""
response = requests.delete(
url=f"{server_url}/names/{tf_name1}/schemes",
headers=_headers(token),
timeout=TIMEOUT
)
assert response.status_code == 204
Loading