1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import arklog
- from pathlib import Path
- import requests
- from fastapi.testclient import TestClient
- from mocka.main import get_application
- from mocka.configuration import Configuration, Server
- from mocka.artefact import Artefact
- client = TestClient(get_application(Configuration(Server("localhost", 8585))))
- def test_post_octiva():
- # NOTE Needs the backend to be running to work... :(
- image_file_path = Path("octiva/rails_0.jpg")
- image_file_uri = f"http://localhost:5000/files/file/{image_file_path.name}"
- # Send the file to the endpoint as it might not be there yet.
- full_image_file_path = Path(__file__).parent / Path("octiva/rails_0.jpg")
- r = requests.put(f"http://localhost:5000/files/file/{image_file_path.name}", data=full_image_file_path.read_bytes())
- arklog.debug(r.status_code)
- image_artefact = Artefact("reference", image_file_uri, image_file_path.name, "image/jpg")
- algo_artefact = Artefact("inline", f"print('hello')", "algorithm.py", "text/plain")
- mock_input = {
- "ctrl": "cin",
- "input": {
- "image": image_artefact.as_dict(),
- "algorithm": algo_artefact.as_dict(),
- }
- }
- try:
- response = client.post("/octiva/", json=mock_input)
- except ConnectionError as e:
- raise RuntimeError(f"{e} Please run the DTD backend when doing these tests.")
- assert response.status_code == 200
- annotated_image_artefact = Artefact("reference", f"http://localhost:5000/files/file/rail_image_annotated.jpg", "rail_image_annotated.jpg", "image/jpg")
- expected_data_content = "D: [[[108 847 108 0]]\n\n [[477 847 477 0]]]\nP: [0, 1]"
- data_artefact = Artefact("inline", expected_data_content, "rail_image_annotated.txt", "text/plain")
- assert response.json() == {
- "ctrl": "ok",
- "output": {
- "image": annotated_image_artefact.as_dict(),
- "data": data_artefact.as_dict(),
- }
- }
|