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, )
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, )
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
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
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
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
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
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
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
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
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
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
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"]
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"]