test_config.py•1.79 kB
import json
import jinja2
import requests
from server import ALL_SERVICES
def test_config_manager():
from config import ConfigManager
man = ConfigManager()
man.load()
env = jinja2.Environment(loader=jinja2.FileSystemLoader("./templates"))
for enrichment_type, services in ALL_SERVICES.items():
for source in getattr(man._config.enrichments.lookups, enrichment_type.value):
for service in services:
s = service()
s.template = env.get_template(f"{source.name}.{enrichment_type.value}.jinja2")
if source.name == s.name:
data = json.load(open(man.get_abs_path(f"./tests/data/{source.name}.json")))
response = requests.Response()
response.status_code = 200
sample_value = enrichment_type.get_sample_value()
response.url = s.get(sample_value).url
response._content = json.dumps(data).encode('utf-8')
if source.name == "hibp":
resp_data = {"name": s.name, "email": sample_value, "response": data}
assert source.template.render(**resp_data) == s.parse_response(response, source.template)
elif isinstance(data, list):
data = data[0]
elif data.get("data") and not isinstance(data["data"], list):
data = data["data"]
if source.name == "urlscan":
data = data.get("results")[0]
if not isinstance(data, list):
data["name"] = s.name
assert source.template.render(**data) == s.parse_response(response, source.template)