Skip to content

Commit 113f4cb

Browse files
committed
tests for metadata api
1 parent e1473cd commit 113f4cb

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

tests/test_metadata.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
from flask.testing import FlaskClient
2+
import pytest
3+
from unittest.mock import patch
4+
from app import create_app
5+
6+
7+
@pytest.fixture
8+
def client():
9+
app = create_app()
10+
return app.test_client()
11+
12+
13+
def test_validate_metadata_with_all_fields(client: FlaskClient):
14+
test_data = {
15+
"crate_json": '{"@context": "https://w3id.org/ro/crate/1.1/context"}',
16+
"profile_name": "default"
17+
}
18+
19+
with patch("app.ro_crates.routes.post_routes.queue_ro_crate_metadata_validation_task") as mock_queue:
20+
mock_queue.return_value = ({"status": "success"}, 200)
21+
22+
response = client.post("/ro_crates/validate_metadata", json=test_data)
23+
print(response.json)
24+
mock_queue.assert_called_once_with(
25+
test_data["crate_json"],
26+
test_data["profile_name"]
27+
)
28+
assert response.status_code == 200
29+
assert response.json == {"status": "success"}
30+
31+
32+
def test_validate_metadata_without_profile_name(client: FlaskClient):
33+
"""
34+
If the profile name is not specified then :
35+
- 422 error
36+
- Error message which includes 'Missing data for required field'
37+
"""
38+
test_data = {
39+
"crate_json": '{"@context": "https://w3id.org/ro/crate/1.1/context"}'
40+
}
41+
42+
with patch("app.ro_crates.routes.post_routes.queue_ro_crate_metadata_validation_task") as mock_queue:
43+
mock_queue.return_value = ({"status": "success"}, 200)
44+
45+
response = client.post("/ro_crates/validate_metadata", json=test_data)
46+
mock_queue.assert_called_once_with(test_data["crate_json"], None)
47+
assert response.status_code == 200
48+
assert response.json == {"status": "success"}
49+
50+
51+
def test_validate_metadata_missing_crate_json(client: FlaskClient):
52+
"""
53+
If the RO-Crate is missing APIFlask should return:
54+
- 422 error
55+
- Error message which includes 'Missing data for required field'
56+
"""
57+
test_data = {
58+
"profile_name": "default"
59+
}
60+
61+
response = client.post("/ro_crates/validate_metadata", json=test_data)
62+
assert response.status_code == 422
63+
assert "Missing data for required field" in response.get_data(as_text=True)

0 commit comments

Comments
 (0)