def test_try_set_coordinates_0_arrays(self, config_rollback, camera_sample, rollback_camera_template, rollback_homography_matrix_folder): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) body = { "pts_destination": [ [ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0, 0 ] ] } camera_id = camera_sample["id"] with pytest.raises(numpy.linalg.LinAlgError): client.post(f"/cameras/{camera_id}/homography_matrix", json=body)
def test_try_edit_camera_wrong_video_path(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] body = { "violation_threshold": 22, "notify_every_minutes": 22, "emails": "[email protected],[email protected]", "enable_slack_notifications": True, "daily_report": False, "daily_report_time": "11:22", "id": camera_id, "name": "new_Kitchen", "video_path": "WRONG_PATH", "tags": "new_kitchen,new_living_room", "image": "new_Base64 image", "dist_method": "new_CenterPointsDistance", "live_feed_enabled": False } response = client.put(f"cameras/{camera_id}", json=body) assert response.status_code == 400 assert response.json()["detail"][0]["msg"] == "Failed to load video. The video URI is not valid"
def test_try_edit_camera_empty_json(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] body = {} response = client.put(f"cameras/{camera_id}", json=body) """ Fields required: Name, video_path. Id is not required anymore. """ assert response.status_code == 400 assert response.json() == { "detail": [{ "loc": ["body", "name"], "msg": "field required", "type": "value_error.missing" }, { "loc": ["body", "video_path"], "msg": "field required", "type": "value_error.missing" }], "body": {} }
def test_edit_a_camera_properly(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] body = { "violation_threshold": 22, "notify_every_minutes": 22, "emails": "[email protected],[email protected]", "enable_slack_notifications": True, "daily_report": False, "daily_report_time": "11:22", "id": camera_id, "name": "new_Kitchen", "video_path": "/repo/api/tests/data/mocked_data/data/softbio_vid.mp4", "tags": "new_kitchen,new_living_room", "image": "new_Base64 image", "dist_method": "new_CenterPointsDistance", "live_feed_enabled": False } response = client.put(f"cameras/{camera_id}", json=body) assert response.status_code == 200 for key in body: if key != "image": assert response.json()[key] == body[key]
def test_try_edit_a_camera_non_existent_id(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = "Non-existent ID" body = { "violation_threshold": 22, "notify_every_minutes": 22, "emails": "[email protected],[email protected]", "enable_slack_notifications": True, "daily_report": False, "daily_report_time": "11:22", "id": camera_id, "name": "new_Kitchen", "video_path": "/repo/api/tests/data/mocked_data/data/softbio_vid.mp4", "tags": "new_kitchen,new_living_room", "image": "new_Base64 image", "dist_method": "new_CenterPointsDistance", "live_feed_enabled": False } response = client.put(f"cameras/{camera_id}", json=body) assert response.status_code == 404 assert response.json() == {"detail": f"The camera: {camera_id} does not exist"}
def test_try_set_coordinates_bad_request_body(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] body = {"pts_destination": [None]} response = client.post(f"/cameras/{camera_id}/homography_matrix", json=body) assert response.status_code == 400 assert response.json() == { "detail": [{ "loc": ["body", "pts_destination"], "msg": "ensure this value has at " "least 4 items", "type": "value_error.list.min_items", "ctx": { "limit_value": 4 } }], "body": { "pts_destination": [None] } }
def test_edit_camera_empty_string_fields(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] # Video path is correctly setted body = { "violation_threshold": 33, "notify_every_minutes": 33, "emails": "", "enable_slack_notifications": False, "daily_report": False, "daily_report_time": "", "id": camera_id, "name": "", "video_path": "/repo/api/tests/data/mocked_data/data/softbio_vid.mp4", "tags": "", "image": "", "dist_method": "", "live_feed_enabled": False } response = client.put(f"/cameras/{camera_id}", json=body) assert response.status_code == 200 for key in camera_sample: if key is not "image": assert response.json()[key] == body[key]
def test_get_camera_image_properly(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] response = client.get(f"/cameras/{camera_id}/image") assert response.status_code == 200 assert response.json()["image"] == get_string_bytes_from_image(camera_id)
def test_delete_a_camera_int_id(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = int(camera_sample["id"]) response = client.delete(f"/cameras/{camera_id}") assert response.status_code == 204
def test_get_camera_calibration_image_properly(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] response = client.get(f"/cameras/{camera_id}/calibration_image") assert response.status_code == 200
def test_set_coordinates_properly(self, config_rollback, camera_sample, rollback_camera_template, h_inverse_matrix, pts_destination, rollback_homography_matrix_folder): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) body = pts_destination camera_id = camera_sample["id"] response = client.post(f"/cameras/{camera_id}/homography_matrix", json=body) assert response.status_code == 204 assert get_h_inverse(camera_id) == h_inverse_matrix["h_inverse.txt"]
def test_try_delete_a_camera_twice(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] response_1 = client.delete(f"/cameras/{camera_id}") response_2 = client.delete(f"/cameras/{camera_id}") assert response_1.status_code == 204 assert response_2.status_code == 404
def test_try_set_coordinates_empty_request_body(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] body = {} response = client.post(f"/cameras/{camera_id}/homography_matrix", json=body) assert response.status_code == 400 assert response.json() == {"detail": [{"loc": ["body", "pts_destination"], "msg": "field required", "type": "value_error.missing"}], "body": {}}
def test_get_one_camera_properly(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = int(camera_sample["id"]) response = client.get(f"/cameras/{camera_id}") assert response.status_code == 200 for key in camera_sample: if key is not "image": assert response.json()[key] == camera_sample[key]
def test_get_camera_calibration_image_properly(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback create_a_camera(client, camera_sample) camera_id = camera_sample["id"] response = client.get(f"/cameras/{camera_id}/video_live_feed_enabled") expected_response = {"enabled": camera_sample["live_feed_enabled"]} assert response.status_code == 200 assert response.json() == expected_response
def test_enable_video_live_feed_properly(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback camera_sample["live_feed_enabled"] = False create_a_camera(client, camera_sample) camera_id = camera_sample["id"] response = client.put(f"/cameras/{camera_id}/enable_video_live_feed") camera_from_config_file = get_camera_from_config_file(camera_id, config_sample_path) assert response.status_code == 204 assert camera_from_config_file["live_feed_enabled"] is True
def test_create_a_camera_function(self, config_rollback, camera_sample, rollback_camera_template): client, config_sample_path = config_rollback response = create_a_camera(client, camera_sample) assert response.status_code == 201