Skip to content

Commit b982234

Browse files
committed
test: added test for extractor server
1 parent 71a224d commit b982234

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

fact_extractor/test/acceptance/__init__.py

Whitespace-only changes.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from __future__ import annotations
2+
3+
from pathlib import Path
4+
from tempfile import TemporaryDirectory
5+
from typing import TYPE_CHECKING, Any, Generator
6+
7+
import pytest
8+
9+
if TYPE_CHECKING:
10+
from flask.testing import FlaskClient
11+
12+
TEST_FILE = Path(__file__).parent.parent / 'data' / 'container' / 'test.zip'
13+
EXTRACTION_TEST_DIR = 'extractor_foo123'
14+
15+
16+
@pytest.fixture
17+
def test_dir() -> Generator[Path, Any, None]:
18+
with TemporaryDirectory() as tmp_dir:
19+
input_dir = Path(tmp_dir) / EXTRACTION_TEST_DIR / 'input'
20+
input_dir.mkdir(parents=True)
21+
(Path(tmp_dir) / EXTRACTION_TEST_DIR / 'reports').mkdir()
22+
test_file = input_dir / 'test.zip'
23+
test_file.write_bytes(TEST_FILE.read_bytes())
24+
yield Path(tmp_dir)
25+
26+
27+
@pytest.fixture
28+
def client(test_dir) -> FlaskClient:
29+
from server import app, config
30+
31+
config.set('unpack', 'data_folder', str(test_dir))
32+
return app.test_client()
33+
34+
35+
def test_server_start(client: FlaskClient, test_dir: Path):
36+
response = client.get(f'/start/{EXTRACTION_TEST_DIR}')
37+
assert response.status_code == 200
38+
extraction_dir = test_dir / EXTRACTION_TEST_DIR
39+
output_dir = extraction_dir / 'files'
40+
assert output_dir.is_dir()
41+
extracted_files = {f.name for f in output_dir.glob('**/*') if f.is_file()}
42+
assert extracted_files == {'testfile1', 'testfile2', 'test file 3_.txt'}
43+
44+
45+
def test_dir_not_found(client: FlaskClient):
46+
response = client.get('/start/not_found')
47+
assert response.status_code == 400
48+
49+
50+
def test_server_status(client: FlaskClient):
51+
response = client.get('/status')
52+
assert response.status_code == 200

0 commit comments

Comments
 (0)