diff --git a/frigate/test/http_api/test_http_review.py b/frigate/test/http_api/test_http_review.py index bdec482ea..3bca27ab7 100644 --- a/frigate/test/http_api/test_http_review.py +++ b/frigate/test/http_api/test_http_review.py @@ -34,20 +34,20 @@ class TestHttpReview(BaseTestHttp): with TestClient(self.app) as client: super().insert_mock_review_segment("123456.random", now, now + 2) - reviews_response = client.get("/review") - assert reviews_response.status_code == 200 - reviews_response_json = reviews_response.json() - assert len(reviews_response_json) == 0 + response = client.get("/review") + assert response.status_code == 200 + response_json = response.json() + assert len(response_json) == 0 def test_get_review_no_filters(self): now = datetime.now().timestamp() with TestClient(self.app) as client: super().insert_mock_review_segment("123456.random", now - 2, now - 1) - reviews_response = client.get("/review") - assert reviews_response.status_code == 200 - reviews_response_json = reviews_response.json() - assert len(reviews_response_json) == 1 + response = client.get("/review") + assert response.status_code == 200 + response_json = response.json() + assert len(response_json) == 1 def test_get_review_with_time_filter_no_matches(self): now = datetime.now().timestamp() @@ -59,10 +59,10 @@ class TestHttpReview(BaseTestHttp): "after": now, "before": now + 3, } - reviews_response = client.get("/review", params=params) - assert reviews_response.status_code == 200 - reviews_response_json = reviews_response.json() - assert len(reviews_response_json) == 0 + response = client.get("/review", params=params) + assert response.status_code == 200 + response_json = response.json() + assert len(response_json) == 0 def test_get_review_with_time_filter(self): now = datetime.now().timestamp() @@ -74,11 +74,11 @@ class TestHttpReview(BaseTestHttp): "after": now - 1, "before": now + 3, } - reviews_response = client.get("/review", params=params) - assert reviews_response.status_code == 200 - reviews_response_json = reviews_response.json() - assert len(reviews_response_json) == 1 - assert reviews_response_json[0]["id"] == id + response = client.get("/review", params=params) + assert response.status_code == 200 + response_json = response.json() + assert len(response_json) == 1 + assert response_json[0]["id"] == id def test_get_review_with_limit_filter(self): now = datetime.now().timestamp() @@ -93,11 +93,11 @@ class TestHttpReview(BaseTestHttp): "after": now, "before": now + 3, } - reviews_response = client.get("/review", params=params) - assert reviews_response.status_code == 200 - reviews_response_json = reviews_response.json() - assert len(reviews_response_json) == 1 - assert reviews_response_json[0]["id"] == id2 + response = client.get("/review", params=params) + assert response.status_code == 200 + response_json = response.json() + assert len(response_json) == 1 + assert response_json[0]["id"] == id2 def test_get_review_with_severity_filters_no_matches(self): now = datetime.now().timestamp() @@ -110,11 +110,11 @@ class TestHttpReview(BaseTestHttp): "after": now - 1, "before": now + 3, } - reviews_response = client.get("/review", params=params) - assert reviews_response.status_code == 200 - reviews_response_json = reviews_response.json() - assert len(reviews_response_json) == 1 - assert reviews_response_json[0]["id"] == id + response = client.get("/review", params=params) + assert response.status_code == 200 + response_json = response.json() + assert len(response_json) == 1 + assert response_json[0]["id"] == id def test_get_review_with_severity_filters(self): now = datetime.now().timestamp() @@ -127,10 +127,10 @@ class TestHttpReview(BaseTestHttp): "after": now - 1, "before": now + 3, } - reviews_response = client.get("/review", params=params) - assert reviews_response.status_code == 200 - reviews_response_json = reviews_response.json() - assert len(reviews_response_json) == 0 + response = client.get("/review", params=params) + assert response.status_code == 200 + response_json = response.json() + assert len(response_json) == 0 def test_get_review_with_all_filters(self): now = datetime.now().timestamp() @@ -148,11 +148,11 @@ class TestHttpReview(BaseTestHttp): "after": now - 1, "before": now + 3, } - reviews_response = client.get("/review", params=params) - assert reviews_response.status_code == 200 - reviews_response_json = reviews_response.json() - assert len(reviews_response_json) == 1 - assert reviews_response_json[0]["id"] == id + response = client.get("/review", params=params) + assert response.status_code == 200 + response_json = response.json() + assert len(response_json) == 1 + assert response_json[0]["id"] == id #################################################################################################################### ################################### GET /review/summary Endpoint ################################################# @@ -166,9 +166,9 @@ class TestHttpReview(BaseTestHttp): "zones": "all", "timezone": "utc", } - review_summary_response = client.get("/review/summary", params=params) - assert review_summary_response.status_code == 200 - review_summary_response_json = review_summary_response.json() + response = client.get("/review/summary", params=params) + assert response.status_code == 200 + response_json = response.json() # e.g. '2024-11-24' today_formatted = datetime.today().strftime("%Y-%m-%d") expected_response = { @@ -186,14 +186,14 @@ class TestHttpReview(BaseTestHttp): "total_detection": 0, }, } - self.assertEqual(review_summary_response_json, expected_response) + self.assertEqual(response_json, expected_response) def test_get_review_summary_no_filters(self): with TestClient(self.app) as client: super().insert_mock_review_segment("123456.random") - review_summary_response = client.get("/review/summary") - assert review_summary_response.status_code == 200 - review_summary_response_json = review_summary_response.json() + response = client.get("/review/summary") + assert response.status_code == 200 + response_json = response.json() # e.g. '2024-11-24' today_formatted = datetime.today().strftime("%Y-%m-%d") expected_response = { @@ -211,7 +211,7 @@ class TestHttpReview(BaseTestHttp): "total_detection": 0, }, } - self.assertEqual(review_summary_response_json, expected_response) + self.assertEqual(response_json, expected_response) def test_get_review_summary_multiple_days(self): now = datetime.now() @@ -226,9 +226,9 @@ class TestHttpReview(BaseTestHttp): five_days_ago.timestamp(), five_days_ago.timestamp() + 1, ) - review_summary_response = client.get("/review/summary") - assert review_summary_response.status_code == 200 - review_summary_response_json = review_summary_response.json() + response = client.get("/review/summary") + assert response.status_code == 200 + response_json = response.json() # e.g. '2024-11-24' today_formatted = now.strftime("%Y-%m-%d") # e.g. '2024-11-19' @@ -255,7 +255,7 @@ class TestHttpReview(BaseTestHttp): "total_detection": 0, }, } - self.assertEqual(review_summary_response_json, expected_response) + self.assertEqual(response_json, expected_response) def test_get_review_summary_multiple_days_edge_cases(self): now = datetime.now() @@ -284,9 +284,9 @@ class TestHttpReview(BaseTestHttp): ) # This won't appear in the output since it's not within last month start_time clause (review.start_time > month_ago) super().insert_mock_review_segment("123450.random", one_month_ago_ts) - review_summary_response = client.get("/review/summary") - assert review_summary_response.status_code == 200 - review_summary_response_json = review_summary_response.json() + response = client.get("/review/summary") + assert response.status_code == 200 + response_json = response.json() # e.g. '2024-11-24' today_formatted = now.strftime("%Y-%m-%d") # e.g. '2024-11-19' @@ -331,7 +331,7 @@ class TestHttpReview(BaseTestHttp): "total_detection": 1, }, } - self.assertEqual(review_summary_response_json, expected_response) + self.assertEqual(response_json, expected_response) def test_get_review_summary_multiple_in_same_day(self): now = datetime.now() @@ -354,9 +354,9 @@ class TestHttpReview(BaseTestHttp): five_days_ago_ts, SeverityEnum.detection, ) - review_summary_response = client.get("/review/summary") - assert review_summary_response.status_code == 200 - review_summary_response_json = review_summary_response.json() + response = client.get("/review/summary") + assert response.status_code == 200 + response_json = response.json() # e.g. '2024-11-24' today_formatted = now.strftime("%Y-%m-%d") # e.g. '2024-11-19' @@ -383,7 +383,7 @@ class TestHttpReview(BaseTestHttp): "total_detection": 15, }, } - self.assertEqual(review_summary_response_json, expected_response) + self.assertEqual(response_json, expected_response) def test_get_review_summary_multiple_in_same_day_with_reviewed(self): five_days_ago = datetime.today() - timedelta(days=5) @@ -422,9 +422,9 @@ class TestHttpReview(BaseTestHttp): SeverityEnum.detection, True, ) - review_summary_response = client.get("/review/summary") - assert review_summary_response.status_code == 200 - review_summary_response_json = review_summary_response.json() + response = client.get("/review/summary") + assert response.status_code == 200 + response_json = response.json() # e.g. '2024-11-19' five_days_ago_formatted = five_days_ago.strftime("%Y-%m-%d") expected_response = { @@ -442,7 +442,7 @@ class TestHttpReview(BaseTestHttp): "total_detection": 15, }, } - self.assertEqual(review_summary_response_json, expected_response) + self.assertEqual(response_json, expected_response) #################################################################################################################### ################################### POST reviews/viewed Endpoint ################################################ @@ -450,37 +450,28 @@ class TestHttpReview(BaseTestHttp): def test_post_reviews_viewed_no_body(self): with TestClient(self.app) as client: super().insert_mock_review_segment("123456.random") - reviews_mark_viewed_many_response = client.post("/reviews/viewed") + response = client.post("/reviews/viewed") # Missing ids - assert reviews_mark_viewed_many_response.status_code == 422 + assert response.status_code == 422 def test_post_reviews_viewed_no_body_ids(self): with TestClient(self.app) as client: super().insert_mock_review_segment("123456.random") body = {"ids": [""]} - reviews_mark_viewed_many_response = client.post( - "/reviews/viewed", json=body - ) + response = client.post("/reviews/viewed", json=body) # Missing ids - assert reviews_mark_viewed_many_response.status_code == 422 + assert response.status_code == 422 def test_post_reviews_viewed_non_existent_id(self): with TestClient(self.app) as client: id = "123456.random" super().insert_mock_review_segment(id) body = {"ids": ["1"]} - reviews_mark_viewed_many_response = client.post( - "/reviews/viewed", json=body - ) - assert reviews_mark_viewed_many_response.status_code == 200 - reviews_mark_viewed_many_response_json = ( - reviews_mark_viewed_many_response.json() - ) - assert reviews_mark_viewed_many_response_json["success"] == True - assert ( - reviews_mark_viewed_many_response_json["message"] - == "Reviewed multiple items" - ) + response = client.post("/reviews/viewed", json=body) + assert response.status_code == 200 + response = response.json() + assert response["success"] == True + assert response["message"] == "Reviewed multiple items" # Verify that in DB the review segment was not changed review_segment_in_db = ( ReviewSegment.select(ReviewSegment.has_been_reviewed) @@ -494,18 +485,11 @@ class TestHttpReview(BaseTestHttp): id = "123456.random" super().insert_mock_review_segment(id) body = {"ids": [id]} - reviews_mark_viewed_many_response = client.post( - "/reviews/viewed", json=body - ) - assert reviews_mark_viewed_many_response.status_code == 200 - reviews_mark_viewed_many_response_json = ( - reviews_mark_viewed_many_response.json() - ) - assert reviews_mark_viewed_many_response_json["success"] == True - assert ( - reviews_mark_viewed_many_response_json["message"] - == "Reviewed multiple items" - ) + response = client.post("/reviews/viewed", json=body) + assert response.status_code == 200 + response = response.json() + assert response["success"] == True + assert response["message"] == "Reviewed multiple items" # Verify that in DB the review segment was changed review_segment_in_db = ( ReviewSegment.select(ReviewSegment.has_been_reviewed) @@ -520,28 +504,28 @@ class TestHttpReview(BaseTestHttp): def test_post_reviews_delete_no_body(self): with TestClient(self.app) as client: super().insert_mock_review_segment("123456.random") - reviews_delete_many_response = client.post("/reviews/delete") + response = client.post("/reviews/delete") # Missing ids - assert reviews_delete_many_response.status_code == 422 + assert response.status_code == 422 def test_post_reviews_delete_no_body_ids(self): with TestClient(self.app) as client: super().insert_mock_review_segment("123456.random") body = {"ids": [""]} - reviews_delete_many_response = client.post("/reviews/delete", json=body) + response = client.post("/reviews/delete", json=body) # Missing ids - assert reviews_delete_many_response.status_code == 422 + assert response.status_code == 422 def test_post_reviews_delete_non_existent_id(self): with TestClient(self.app) as client: id = "123456.random" super().insert_mock_review_segment(id) body = {"ids": ["1"]} - reviews_delete_many_response = client.post("/reviews/delete", json=body) - assert reviews_delete_many_response.status_code == 200 - reviews_delete_many_response_json = reviews_delete_many_response.json() - assert reviews_delete_many_response_json["success"] == True - assert reviews_delete_many_response_json["message"] == "Delete reviews" + response = client.post("/reviews/delete", json=body) + assert response.status_code == 200 + response_json = response.json() + assert response_json["success"] == True + assert response_json["message"] == "Delete reviews" # Verify that in DB the review segment was not deleted review_segment_in_db = ( ReviewSegment.select(ReviewSegment.id) @@ -555,11 +539,11 @@ class TestHttpReview(BaseTestHttp): id = "123456.random" super().insert_mock_review_segment(id) body = {"ids": [id]} - reviews_delete_many_response = client.post("/reviews/delete", json=body) - assert reviews_delete_many_response.status_code == 200 - reviews_delete_many_response_json = reviews_delete_many_response.json() - assert reviews_delete_many_response_json["success"] == True - assert reviews_delete_many_response_json["message"] == "Delete reviews" + response = client.post("/reviews/delete", json=body) + assert response.status_code == 200 + response_json = response.json() + assert response_json["success"] == True + assert response_json["message"] == "Delete reviews" # Verify that in DB the review segment was deleted review_segment_in_db = ( ReviewSegment.select(ReviewSegment.id) @@ -581,11 +565,11 @@ class TestHttpReview(BaseTestHttp): assert len(recordings_ids_in_db_before) == 2 body = {"ids": ids} - reviews_delete_many_response = client.post("/reviews/delete", json=body) - assert reviews_delete_many_response.status_code == 200 - reviews_delete_many_response_json = reviews_delete_many_response.json() - assert reviews_delete_many_response_json["success"] == True - assert reviews_delete_many_response_json["message"] == "Delete reviews" + response = client.post("/reviews/delete", json=body) + assert response.status_code == 200 + response_json = response.json() + assert response_json["success"] == True + assert response_json["message"] == "Delete reviews" # Verify that in DB all review segments and recordings that were passed were deleted review_ids_in_db_after = self._get_reviews(ids)