def test_dashboards_without_filtersets__200( self, dashboard_id: int, client: FlaskClient[Any] ): # arrange login(client, "admin") # act response = call_get_filter_sets(client, dashboard_id) # assert assert response.status_code == 200 assert response.is_json and response.json["count"] == 0
def test_with_dashboard_not_exists__404( self, not_exists_dashboard_id: int, client: FlaskClient[Any], ): # arrange login(client, "admin") # act response = call_get_filter_sets(client, not_exists_dashboard_id) # assert assert response.status_code == 404
def test_with_dashboard_not_exists_filterset_not_exists__404( self, not_exists_dashboard_id: int, filtersets: Dict[str, List[FilterSet]], client: FlaskClient[Any], ): # arrange login(client, "admin") filter_set_id = max(collect_all_ids(filtersets)) + 1 response = call_delete_filter_set(client, {"id": filter_set_id}, not_exists_dashboard_id) # assert assert response.status_code == 404
def test_when_caller_is_admin_and_owner_type_is_user__200( self, test_users: Dict[str, int], user_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, "admin") # act response = call_delete_filter_set(client, user_based_filter_set_dict) # assert assert response.status_code == 200 assert_filterset_deleted(user_based_filter_set_dict)
def test_with_dashboard_not_exists_filterset_exists__404( self, not_exists_dashboard_id: int, dashboard_based_filter_set_dict: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, "admin") # act response = call_delete_filter_set(client, dashboard_based_filter_set_dict, not_exists_dashboard_id) # assert assert response.status_code == 404 assert_filterset_was_not_deleted(dashboard_based_filter_set_dict)
def test_when_caller_is_regular_user_and_owner_type_is_user__403( self, test_users: Dict[str, int], user_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, REGULAR_USER) # act response = call_delete_filter_set(client, user_based_filter_set_dict) # assert assert response.status_code == 403 assert_filterset_was_not_deleted(user_based_filter_set_dict)
def test_when_caller_is_filterset_owner__200( self, test_users: Dict[str, int], user_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, FILTER_SET_OWNER_USERNAME) # act response = call_delete_filter_set(client, user_based_filter_set_dict) # assert assert response.status_code == 200 assert_filterset_deleted(user_based_filter_set_dict)
def test_when_caller_is_dashboard_owner_and_owner_is_other_user_403( self, test_users: Dict[str, int], user_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, DASHBOARD_OWNER_USERNAME) # act response = call_delete_filter_set(client, user_based_filter_set_dict) # assert assert response.status_code == 403 assert_filterset_was_not_deleted(user_based_filter_set_dict)
def test_when_caller_filterset_owner__200( self, dashboard_id: int, filtersets: Dict[str, List[FilterSet]], client: FlaskClient[Any], ): # arrange login(client, FILTER_SET_OWNER_USERNAME) expected_ids = collect_all_ids(filtersets[FILTER_SET_OWNER_USERNAME]) # act response = call_get_filter_sets(client, dashboard_id) # assert assert response.status_code == 200 assert response.is_json and set(response.json["ids"]) == expected_ids
def test_when_caller_admin__200( self, dashboard_id: int, filtersets: Dict[str, List[FilterSet]], client: FlaskClient[Any], ): # arrange login(client, "admin") expected_ids: Set[int] = collect_all_ids(filtersets) # act response = call_get_filter_sets(client, dashboard_id) # assert assert response.status_code == 200 assert response.is_json and set(response.json["ids"]) == expected_ids
def test_when_caller_regular_user__200( self, dashboard_id: int, filtersets: Dict[str, List[int]], client: FlaskClient[Any], ): # arrange login(client, REGULAR_USER) expected_ids: Set[int] = set() # act response = call_get_filter_sets(client, dashboard_id) # assert assert response.status_code == 200 assert response.is_json and set(response.json["ids"]) == expected_ids
def test_with_user_owner_type__400( self, dashboard_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, "admin") valid_filter_set_data_for_update[OWNER_TYPE_FIELD] = "User" # act response = call_update_filter_set(client, dashboard_based_filter_set_dict, valid_filter_set_data_for_update) # assert assert response.status_code == 400 assert_filterset_was_not_updated(dashboard_based_filter_set_dict)
def test_with_invalid_json_metadata__400( self, dashboard_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, "admin") valid_filter_set_data_for_update[DESCRIPTION_FIELD] = {} # act response = call_update_filter_set(client, dashboard_based_filter_set_dict, valid_filter_set_data_for_update) # assert assert response.status_code == 400 assert_filterset_was_not_updated(dashboard_based_filter_set_dict)
def test_with_id_field__400( self, dashboard_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, "admin") valid_filter_set_data_for_update["id"] = 1 # act response = call_update_filter_set(client, dashboard_based_filter_set_dict, valid_filter_set_data_for_update) # assert assert response.status_code == 400 assert response.json["message"]["id"][0] == "Unknown field." assert_filterset_was_not_updated(dashboard_based_filter_set_dict)
def test_when_caller_is_dashboard_owner_and_owner_type_is_dashboard__200( self, test_users: Dict[str, int], dashboard_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, DASHBOARD_OWNER_USERNAME) # act response = call_update_filter_set(client, dashboard_based_filter_set_dict, valid_filter_set_data_for_update) # assert assert response.status_code == 200 assert_filterset_updated(dashboard_based_filter_set_dict, valid_filter_set_data_for_update)
def test_without_description__200( self, dashboard_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, "admin") valid_filter_set_data_for_update.pop(DESCRIPTION_FIELD, None) # act response = call_update_filter_set(client, dashboard_based_filter_set_dict, valid_filter_set_data_for_update) # assert assert response.status_code == 200 assert_filterset_updated(dashboard_based_filter_set_dict, valid_filter_set_data_for_update)
def test_with_dashboard_owner_type__200( self, user_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], client: FlaskClient[Any], ): # arrange login(client, "admin") valid_filter_set_data_for_update[OWNER_TYPE_FIELD] = "Dashboard" # act response = call_update_filter_set(client, user_based_filter_set_dict, valid_filter_set_data_for_update) # assert assert response.status_code == 200 user_based_filter_set_dict["owner_id"] = user_based_filter_set_dict[ "dashboard_id"] assert_filterset_updated(user_based_filter_set_dict, valid_filter_set_data_for_update)
def test_with_json_metadata__200( self, dashboard_based_filter_set_dict: Dict[str, Any], valid_filter_set_data_for_update: Dict[str, Any], valid_json_metadata: Dict[Any, Any], client: FlaskClient[Any], ): # arrange login(client, "admin") valid_json_metadata["nativeFilters"] = {"changed": "changed"} valid_filter_set_data_for_update[JSON_METADATA_FIELD] = json.dumps( valid_json_metadata) # act response = call_update_filter_set(client, dashboard_based_filter_set_dict, valid_filter_set_data_for_update) # assert assert response.status_code == 200 assert_filterset_updated(dashboard_based_filter_set_dict, valid_filter_set_data_for_update)
def _login_as(username: str, password: str = "general"): login(test_client, username=username, password=password)
def login(self, username="******", password="******"): return login(self.client, username, password)