Exemplo n.º 1
0
def create_datastructures_data():
    datastructures = create_some_datastructure_data()
    datastructures_aus = create_some_datastructure_data(
        archive_pars={"name": "Australia"})
    oct_obs_registration_aus = OctObsRegistrationFactory(
        oct_image=datastructures_aus["image_oct"],
        obs_image=datastructures_aus["image_obs"],
    )
    oct_obs_registration = OctObsRegistrationFactory(
        oct_image=datastructures["image_oct"],
        obs_image=datastructures["image_obs"],
    )
    return (
        datastructures,
        datastructures_aus,
        oct_obs_registration,
        oct_obs_registration_aus,
    )
Exemplo n.º 2
0
def create_datastructures_data():
    datastructures = create_some_datastructure_data()
    datastructures_aus = create_some_datastructure_data(
        archive_pars={"name": "Australia"}
    )
    oct_obs_registration_aus = OctObsRegistrationFactory(
        oct_image=datastructures_aus["image_oct"],
        obs_image=datastructures_aus["image_obs"],
    )
    oct_obs_registration = OctObsRegistrationFactory(
        oct_image=datastructures["image_oct"],
        obs_image=datastructures["image_obs"],
    )
    return (
        datastructures,
        datastructures_aus,
        oct_obs_registration,
        oct_obs_registration_aus,
    )
Exemplo n.º 3
0
 def test_load_no_auth(self, client):
     # create grader user
     user = UserFactory()
     ds = create_some_datastructure_data()
     url = reverse(
         "retina:api:data-api-view",
         args=[data_type, user.id, ds["archive"].name, ds["patient"].name],
     )
     response = client.get(url)
     assert response.status_code == status.HTTP_403_FORBIDDEN
Exemplo n.º 4
0
 def test_load_no_auth(self, client):
     # create grader user
     user = UserFactory()
     ds = create_some_datastructure_data()
     url = reverse(
         "retina:api:data-api-view",
         args=[data_type, user.id, ds["archive"].name, ds["patient"].name],
     )
     response = client.get(url)
     assert response.status_code == status.HTTP_403_FORBIDDEN
Exemplo n.º 5
0
    def test_load_no_data_wrong_user(self, client):
        ds = create_some_datastructure_data()

        # login client
        client, grader = client_login(client, user="******")

        # create grader user
        user = UserFactory()

        url = reverse(
            "retina:api:data-api-view",
            args=[data_type, user.id, ds["archive"].name, ds["patient"].name],
        )
        response = client.get(url)
        assert status.HTTP_403_FORBIDDEN == response.status_code
Exemplo n.º 6
0
    def test_load_no_data_wrong_user(self, client):
        ds = create_some_datastructure_data()

        # login client
        client, grader = client_login(client, user="******")

        # create grader user
        user = UserFactory()

        url = reverse(
            "retina:api:data-api-view",
            args=[data_type, user.id, ds["archive"].name, ds["patient"].name],
        )
        response = client.get(url)
        assert status.HTTP_403_FORBIDDEN == response.status_code
Exemplo n.º 7
0
    def test_load_no_data(self, client):
        ds = create_some_datastructure_data()

        # login client
        client, grader = client_login(client, user="******")

        url = reverse(
            "retina:api:data-api-view",
            args=[
                data_type,
                grader.id,
                ds["archive"].name,
                ds["patient"].name,
            ],
        )
        response = client.get(url)
        assert status.HTTP_200_OK == response.status_code
        assert b'{"status":"no data","data":{}}' == response.content
Exemplo n.º 8
0
    def test_load_no_data(self, client):
        ds = create_some_datastructure_data()

        # login client
        client, grader = client_login(client, user="******")

        url = reverse(
            "retina:api:data-api-view",
            args=[
                data_type,
                grader.id,
                ds["archive"].name,
                ds["patient"].name,
            ],
        )
        response = client.get(url)
        assert status.HTTP_200_OK == response.status_code
        assert b'{"status":"no data","data":{}}' == response.content
Exemplo n.º 9
0
    def test_redirect_no_perm(self, client):
        ds = create_some_datastructure_data()
        url = reverse(
            "retina:api:image-api-view",
            args=[
                image_type,
                ds["patient"].name,
                ds["study"].name,
                ds["image_cf"].name,
                "default",
            ],
        )

        user, _ = get_retina_user_with_token()
        client.force_login(user=user)
        response = client.get(url, follow=True)
        expected_redirect_url = django_reverse(reverse_name,
                                               args=[ds["image_cf"].id])
        assert status.HTTP_302_FOUND == response.redirect_chain[0][1]
        assert expected_redirect_url == response.redirect_chain[0][0]
        assert status.HTTP_403_FORBIDDEN == response.status_code
Exemplo n.º 10
0
    def test_redirect_no_perm(self, client):
        ds = create_some_datastructure_data()
        url = reverse(
            "retina:api:image-api-view",
            args=[
                image_type,
                ds["patient"].name,
                ds["study"].name,
                ds["image_cf"].name,
                "default",
            ],
        )

        user, _ = get_retina_user_with_token()
        client.force_login(user=user)
        response = client.get(url, follow=True)
        expected_redirect_url = django_reverse(
            reverse_name, args=[ds["image_cf"].id]
        )
        assert status.HTTP_302_FOUND == response.redirect_chain[0][1]
        assert expected_redirect_url == response.redirect_chain[0][0]
        assert status.HTTP_403_FORBIDDEN == response.status_code
Exemplo n.º 11
0
    def test_redirect_kappa(self, client):
        ds = create_some_datastructure_data(archive_pars={"name": "kappadata"})
        url = reverse(
            "retina:api:image-api-view",
            args=[
                image_type,
                "Archives",
                ds["archive"].name,
                ds["image_cf"].name,
                "default",
            ],
        )
        user, _ = get_retina_user_with_token()
        client.force_login(user=user)
        ds["image_cf"].permit_viewing_by_retina_users()

        response = client.get(url, follow=True)
        expected_redirect_url = django_reverse(reverse_name,
                                               args=[ds["image_cf"].id])
        assert response.redirect_chain[0][1] == status.HTTP_302_FOUND
        assert expected_redirect_url == response.redirect_chain[0][0]
        assert status.HTTP_200_OK == response.status_code
Exemplo n.º 12
0
    def test_redirect_kappa(self, client):
        ds = create_some_datastructure_data(archive_pars={"name": "kappadata"})
        url = reverse(
            "retina:api:image-api-view",
            args=[
                image_type,
                "Archives",
                ds["archive"].name,
                ds["image_cf"].name,
                "default",
            ],
        )
        user, _ = get_retina_user_with_token()
        client.force_login(user=user)
        ds["image_cf"].permit_viewing_by_retina_users()

        response = client.get(url, follow=True)
        expected_redirect_url = django_reverse(
            reverse_name, args=[ds["image_cf"].id]
        )
        assert response.redirect_chain[0][1] == status.HTTP_302_FOUND
        assert expected_redirect_url == response.redirect_chain[0][0]
        assert status.HTTP_200_OK == response.status_code
Exemplo n.º 13
0
    def test_load_save_data(self, client):
        # login client
        client, grader = client_login(client, user="******")

        for archive in ("Rotterdam", "Australia", "kappadata"):
            if archive == "Rotterdam" and data_type in ("Measure", "Fovea"):
                continue  # These annotations do not exist for Rotterdam archive type

            if archive == "kappadata" and data_type in (
                "Measure",
                "Fovea",
                "GA",
                "Registration",
            ):
                continue  # These annotations do not exist for kappadata archive type

            ds = create_some_datastructure_data(archive_pars={"name": archive})

            model = create_load_data(data_type, ds, grader)

            url = reverse(
                "retina:api:data-api-view",
                args=[
                    data_type,
                    grader.id,
                    ds["archive"].name,
                    ds["patient"].name,
                ],
            )
            response = client.get(url)

            assert status.HTTP_200_OK == response.status_code
            response_content = json.loads(response.content)
            assert response_content["status"] == "data"
            if isinstance(model, list):
                for single_model in model:
                    response_data_key = single_model.created.strftime(
                        "%Y-%m-%d--%H-%M-%S--%f"
                    )
                    assert response_data_key in response_content["data"]
                    save_request_data = response_content["data"][
                        response_data_key
                    ]

                    response = client.put(
                        url,
                        json.dumps(save_request_data),
                        content_type="application/json",
                    )

                    assert status.HTTP_201_CREATED == response.status_code
                    save_response_content = json.loads(response.content)
                    assert save_response_content["success"]
            else:
                response_data_key = model.created.strftime(
                    "%Y-%m-%d--%H-%M-%S--%f"
                )
                if data_type == "ETDRS" and ds["archive"].name == "Australia":
                    save_request_data = response_content["data"]
                else:
                    assert response_data_key in response_content["data"]
                    save_request_data = response_content["data"][
                        response_data_key
                    ]

                response = client.put(
                    url,
                    json.dumps(save_request_data),
                    content_type="application/json",
                )

                assert status.HTTP_201_CREATED == response.status_code
                response_content = json.loads(response.content)
                assert response_content["success"]
Exemplo n.º 14
0
    def test_load_save_data(self, client):
        # login client
        client, grader = client_login(client, user="******")

        for archive in ("Rotterdam", "Australia", "kappadata"):
            if archive == "Rotterdam" and data_type in ("Measure", "Fovea"):
                continue  # These annotations do not exist for Rotterdam archive type

            if archive == "kappadata" and data_type in (
                    "Measure",
                    "Fovea",
                    "GA",
                    "Registration",
            ):
                continue  # These annotations do not exist for kappadata archive type

            ds = create_some_datastructure_data(archive_pars={"name": archive})

            model = create_load_data(data_type, ds, grader)

            url = reverse(
                "retina:api:data-api-view",
                args=[
                    data_type,
                    grader.id,
                    ds["archive"].name,
                    ds["patient"].name,
                ],
            )
            response = client.get(url)

            assert status.HTTP_200_OK == response.status_code
            response_content = json.loads(response.content)
            assert response_content["status"] == "data"
            if isinstance(model, list):
                for single_model in model:
                    response_data_key = single_model.created.strftime(
                        "%Y-%m-%d--%H-%M-%S--%f")
                    assert response_data_key in response_content["data"]
                    save_request_data = response_content["data"][
                        response_data_key]

                    response = client.put(
                        url,
                        json.dumps(save_request_data),
                        content_type="application/json",
                    )

                    assert status.HTTP_201_CREATED == response.status_code
                    save_response_content = json.loads(response.content)
                    assert save_response_content["success"]
            else:
                response_data_key = model.created.strftime(
                    "%Y-%m-%d--%H-%M-%S--%f")
                if data_type == "ETDRS" and ds["archive"].name == "Australia":
                    save_request_data = response_content["data"]
                else:
                    assert response_data_key in response_content["data"]
                    save_request_data = response_content["data"][
                        response_data_key]

                response = client.put(
                    url,
                    json.dumps(save_request_data),
                    content_type="application/json",
                )

                assert status.HTTP_201_CREATED == response.status_code
                response_content = json.loads(response.content)
                assert response_content["success"]