コード例 #1
0
    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)
コード例 #2
0
    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"
コード例 #3
0
    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": {}
        }
コード例 #4
0
    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]
コード例 #5
0
    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"}
コード例 #6
0
    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]
            }
        }
コード例 #7
0
    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]
コード例 #8
0
    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)
コード例 #9
0
    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
コード例 #10
0
    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
コード例 #11
0
    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"]
コード例 #12
0
    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
コード例 #13
0
    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": {}}
コード例 #14
0
    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]
コード例 #15
0
    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
コード例 #16
0
    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
コード例 #17
0
    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