Skip to content

test_consolidation_requests_negative()

Documentation for tests/prague/eip7251_consolidations/test_consolidations.py::test_consolidation_requests_negative@ffe48572.

Generate fixtures for these test cases for Bogota with:

fill -v tests/prague/eip7251_consolidations/test_consolidations.py::test_consolidation_requests_negative --fork Bogota

Test blocks where the requests list and the actual consolidation requests that happened in the block's transactions do not match.

Source code in tests/prague/eip7251_consolidations/test_consolidations.py
@pytest.mark.parametrize(
    "system_contract_interactions_per_block,block_body_override_requests,"
    "exception",
    [
        pytest.param(
            [[]],
            [
                ConsolidationRequest(
                    source_pubkey=0x01,
                    target_pubkey=0x02,
                    source_address=Address(0),
                ),
            ],
            BlockException.INVALID_REQUESTS,
            id="no_consolidations_non_empty_requests_list",
        ),
        pytest.param(
            [
                [
                    SystemContractInteractionTransaction(
                        requests=[
                            ConsolidationRequest(
                                source_pubkey=0x01,
                                target_pubkey=0x02,
                            ),
                        ]
                    ),
                ]
            ],
            [],
            BlockException.INVALID_REQUESTS,
            id="single_consolidation_request_empty_requests_list",
        ),
        pytest.param(
            [
                [
                    SystemContractInteractionTransaction(
                        requests=[
                            ConsolidationRequest(
                                source_pubkey=0x01,
                                target_pubkey=0x02,
                            ),
                        ]
                    ),
                ]
            ],
            [
                ConsolidationRequest(
                    source_pubkey=0x00,
                    target_pubkey=0x02,
                    source_address=TestAddress,
                )
            ],
            BlockException.INVALID_REQUESTS,
            id="single_consolidation_request_source_public_key_mismatch",
        ),
        pytest.param(
            [
                [
                    SystemContractInteractionTransaction(
                        requests=[
                            ConsolidationRequest(
                                source_pubkey=0x01,
                                target_pubkey=0x02,
                            ),
                        ]
                    ),
                ]
            ],
            [
                ConsolidationRequest(
                    source_pubkey=0x01,
                    target_pubkey=0x00,
                    source_address=TestAddress,
                )
            ],
            BlockException.INVALID_REQUESTS,
            id="single_consolidation_request_target_public_key_mismatch",
        ),
        pytest.param(
            [
                [
                    SystemContractInteractionTransaction(
                        requests=[
                            ConsolidationRequest(
                                source_pubkey=0x01,
                                target_pubkey=0x02,
                            ),
                        ]
                    ),
                ]
            ],
            [
                ConsolidationRequest(
                    source_pubkey=0x02,
                    target_pubkey=0x01,
                    source_address=TestAddress,
                )
            ],
            BlockException.INVALID_REQUESTS,
            id="single_consolidation_request_pubkeys_swapped",
        ),
        pytest.param(
            [
                [
                    SystemContractInteractionTransaction(
                        requests=[
                            ConsolidationRequest(
                                source_pubkey=0x01,
                                target_pubkey=0x02,
                            )
                        ],
                    ),
                ]
            ],
            [
                ConsolidationRequest(
                    source_pubkey=0x01,
                    target_pubkey=0x02,
                    source_address=TestAddress2,
                )
            ],
            BlockException.INVALID_REQUESTS,
            id="single_consolidation_request_source_address_mismatch",
        ),
        pytest.param(
            [
                [
                    SystemContractInteractionTransaction(
                        requests=[
                            ConsolidationRequest(
                                source_pubkey=0x01,
                                target_pubkey=0x02,
                            ),
                            ConsolidationRequest(
                                source_pubkey=0x03,
                                target_pubkey=0x04,
                            ),
                        ],
                    ),
                ]
            ],
            [
                ConsolidationRequest(
                    source_pubkey=0x03,
                    target_pubkey=0x04,
                    source_address=TestAddress,
                ),
                ConsolidationRequest(
                    source_pubkey=0x01,
                    target_pubkey=0x02,
                    source_address=TestAddress,
                ),
            ],
            BlockException.INVALID_REQUESTS,
            id="two_consolidation_requests_out_of_order",
        ),
        pytest.param(
            [
                [
                    SystemContractInteractionTransaction(
                        requests=[
                            ConsolidationRequest(
                                source_pubkey=0x01,
                                target_pubkey=0x02,
                            )
                        ],
                    ),
                ]
            ],
            [
                ConsolidationRequest(
                    source_pubkey=0x01,
                    target_pubkey=0x02,
                    source_address=TestAddress,
                ),
                ConsolidationRequest(
                    source_pubkey=0x01,
                    target_pubkey=0x02,
                    source_address=TestAddress,
                ),
            ],
            BlockException.INVALID_REQUESTS,
            id="single_consolidation_requests_duplicate_in_requests_list",
        ),
    ],
)
@pytest.mark.exception_test
def test_consolidation_requests_negative(
    blockchain_test: BlockchainTestFiller,
    override_blocks: List[Block],
    pre: Alloc,
) -> None:
    """
    Test blocks where the requests list and the actual consolidation requests
    that happened in the block's transactions do not match.
    """
    blockchain_test(pre=pre, post={}, blocks=override_blocks)

Parametrized Test Cases

This test generates 8 parametrized test cases across 4 forks.