77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
from datetime import datetime, timedelta
|
|
|
|
from app.models.journal import EntityType
|
|
from app.crud.crud_journal import journal
|
|
|
|
|
|
def test_search_journal_filters_entries(auth_client, db):
|
|
yesterday = datetime.utcnow() - timedelta(days=1)
|
|
matching = journal.log_change(
|
|
db,
|
|
EntityType.PPR,
|
|
10,
|
|
"Matching PPR change",
|
|
"tower",
|
|
"127.0.0.1",
|
|
)
|
|
other = journal.log_change(
|
|
db,
|
|
EntityType.USER,
|
|
20,
|
|
"Other user change",
|
|
"admin",
|
|
"127.0.0.1",
|
|
)
|
|
matching.entry_dt = yesterday
|
|
other.entry_dt = datetime.utcnow()
|
|
db.commit()
|
|
|
|
response = auth_client.get(
|
|
"/api/v1/journal/search/all",
|
|
params={
|
|
"date_from": yesterday.date().isoformat(),
|
|
"date_to": yesterday.date().isoformat(),
|
|
"entity_type": "PPR",
|
|
"entity_id": 10,
|
|
"user": "tower",
|
|
},
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
entries = response.json()
|
|
assert len(entries) == 1
|
|
assert entries[0]["entry"] == "Matching PPR change"
|
|
|
|
|
|
def test_search_journal_rejects_invalid_entity_type(auth_client):
|
|
response = auth_client.get(
|
|
"/api/v1/journal/search/all",
|
|
params={"entity_type": "NOT_A_THING"},
|
|
)
|
|
|
|
assert response.status_code == 400
|
|
assert "Invalid entity_type" in response.json()["detail"]
|
|
|
|
|
|
def test_get_user_and_entity_journal(auth_client, db):
|
|
journal.log_change(db, EntityType.PPR, 55, "PPR audit entry", "tower", None)
|
|
|
|
user_response = auth_client.get("/api/v1/journal/user/tower")
|
|
entity_response = auth_client.get("/api/v1/journal/PPR/55")
|
|
|
|
assert user_response.status_code == 200
|
|
assert user_response.json()[0]["entry"] == "PPR audit entry"
|
|
assert entity_response.status_code == 200
|
|
body = entity_response.json()
|
|
assert body["entity_type"] == "PPR"
|
|
assert body["entity_id"] == 55
|
|
assert body["total_entries"] == 1
|
|
assert body["entries"][0]["entry"] == "PPR audit entry"
|
|
|
|
|
|
def test_get_entity_journal_rejects_invalid_entity_type(auth_client):
|
|
response = auth_client.get("/api/v1/journal/NOPE/1")
|
|
|
|
assert response.status_code == 400
|
|
assert "Invalid entity_type" in response.json()["detail"]
|