mirror of
https://github.com/EDCD/EDDN.git
synced 2025-05-08 19:11:06 +03:00
tests/Gateway/parse_and_error_handle: Working with single eddn.Gateway import
Unfortunately the `eddn_gateway()` fixture needs to be `module` scope, and that means you can't use it with anything that uses a fixture that utilises `monkeypatch`, because that's `function` scope. So, back to directly appending to `sys.path`.
This commit is contained in:
parent
660dad4ff0
commit
eff5cedc2b
@ -1,33 +1,44 @@
|
|||||||
"""Tests for eddn.Gateway.parse_and_error_handle."""
|
"""Tests for eddn.Gateway.parse_and_error_handle."""
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
from typing import Callable
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def fix_sys_path(monkeypatch):
|
def fix_sys_path():
|
||||||
"""Prepend CWD to sys.path."""
|
"""Set up an eddn.Gateway import."""
|
||||||
# Tests don't include the directory that `pytest` is run from on sys.path
|
# Tests don't include the directory that `pytest` is run from on sys.path
|
||||||
print(f'{os.getcwd()=}')
|
sys.path.append(os.getcwd())
|
||||||
monkeypatch.syspath_prepend(os.getcwd())
|
|
||||||
|
|
||||||
|
|
||||||
def test_invalid_json(fix_sys_path) -> None:
|
@pytest.fixture(scope='module')
|
||||||
"""Test invalid JSON input."""
|
def eddn_gateway():
|
||||||
|
"""Set up an eddn.Gateway import."""
|
||||||
import eddn.Gateway
|
import eddn.Gateway
|
||||||
|
|
||||||
eddn.Gateway.setup_bottle_app()
|
|
||||||
|
|
||||||
msg = "{not real json"
|
class CLArgs:
|
||||||
res = eddn.Gateway.parse_and_error_handle(msg.encode(encoding="utf-8"))
|
config = False
|
||||||
|
|
||||||
|
|
||||||
|
cl_args = CLArgs()
|
||||||
|
eddn.Gateway.load_config(cl_args)
|
||||||
|
eddn.Gateway.configure()
|
||||||
|
|
||||||
|
return eddn.Gateway
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid_json(fix_sys_path, eddn_gateway, eddn_message: Callable) -> None:
|
||||||
|
"""Test invalid JSON input."""
|
||||||
|
msg = eddn_message('invalid_json')
|
||||||
|
res = eddn_gateway.parse_and_error_handle(msg.encode(encoding="utf-8"))
|
||||||
assert res.startswith("FAIL: JSON parsing: ")
|
assert res.startswith("FAIL: JSON parsing: ")
|
||||||
|
|
||||||
|
|
||||||
def test_outdated_schema(fix_sys_path) -> None:
|
def test_outdated_schema(fix_sys_path, eddn_gateway, eddn_message: Callable) -> None:
|
||||||
"""Test attempt to use an outdated schema."""
|
"""Test attempt to use an outdated schema."""
|
||||||
import eddn.Gateway
|
|
||||||
|
|
||||||
eddn.Gateway.setup_bottle_app()
|
|
||||||
|
|
||||||
msg = """
|
msg = """
|
||||||
{
|
{
|
||||||
@ -41,16 +52,12 @@ def test_outdated_schema(fix_sys_path) -> None:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
res = eddn.Gateway.parse_and_error_handle(msg.encode(encoding="utf-8"))
|
res = eddn_gateway.parse_and_error_handle(msg.encode(encoding="utf-8"))
|
||||||
assert res.startswith("FAIL: Outdated Schema: The schema you have used is no longer supported. Please check for an updated version of your application.")
|
assert res.startswith("FAIL: Outdated Schema: The schema you have used is no longer supported. Please check for an updated version of your application.")
|
||||||
|
|
||||||
|
|
||||||
def test_fail_validation_no_softwarename(fix_sys_path) -> None:
|
def test_fail_validation_no_softwarename(fix_sys_path, eddn_gateway, eddn_message: Callable) -> None:
|
||||||
"""Test detecting a message with no softwareName in the message."""
|
"""Test detecting a message with no softwareName in the message."""
|
||||||
import eddn.Gateway
|
|
||||||
|
|
||||||
eddn.Gateway.setup_bottle_app()
|
|
||||||
|
|
||||||
msg = """
|
msg = """
|
||||||
{
|
{
|
||||||
"$schemaRef": "https://eddn.edcd.io/schemas/journal/1",
|
"$schemaRef": "https://eddn.edcd.io/schemas/journal/1",
|
||||||
@ -62,16 +69,12 @@ def test_fail_validation_no_softwarename(fix_sys_path) -> None:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
res = eddn.Gateway.parse_and_error_handle(msg.encode(encoding="utf-8"))
|
res = eddn_gateway.parse_and_error_handle(msg.encode(encoding="utf-8"))
|
||||||
assert res.startswith("FAIL: Schema Validation: [<ValidationError: \"'softwareName' is a required property\">]")
|
assert res.startswith("FAIL: Schema Validation: [<ValidationError: \"'softwareName' is a required property\">]")
|
||||||
|
|
||||||
|
|
||||||
def test_valid_journal_scan(fix_sys_path) -> None:
|
def test_valid_journal_scan(fix_sys_path, eddn_gateway, eddn_message: Callable) -> None:
|
||||||
"""Test a valid journal/1, `event == 'Scan'` message."""
|
"""Test a valid journal/1, `event == 'Scan'` message."""
|
||||||
import eddn.Gateway
|
|
||||||
|
|
||||||
eddn.Gateway.setup_bottle_app()
|
|
||||||
|
|
||||||
msg = """
|
msg = """
|
||||||
{
|
{
|
||||||
"$schemaRef": "https://eddn.edcd.io/schemas/journal/1",
|
"$schemaRef": "https://eddn.edcd.io/schemas/journal/1",
|
||||||
@ -89,5 +92,5 @@ def test_valid_journal_scan(fix_sys_path) -> None:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
res = eddn.Gateway.parse_and_error_handle(msg.encode(encoding="utf-8"))
|
res = eddn_gateway.parse_and_error_handle(msg.encode(encoding="utf-8"))
|
||||||
assert res == "OK"
|
assert res == "OK"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user