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
Example #10
0
    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
Example #11
0
    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)
Example #19
0
 def _login_as(username: str, password: str = "general"):
     login(test_client, username=username, password=password)
Example #20
0
 def login(self, username="******", password="******"):
     return login(self.client, username, password)