def METHOD_NAME(self):
    """
    Tests that namespaces stored on-chain are enforced by the
    validators. According to the sawtooth_settings declared in the docker
    compose file, the transaciton families are expected to behave
    as follows:
    - block_info transactions are allowed
    - intkey transactions are banned
    - xo transactions are allowed
    """
    context = create_context('secp256k1')
    signer = CryptoFactory(context).new_signer(
        context.new_random_private_key())
    batches = make_batches(signer, 'abcde')
    send_xo_cmd('sawtooth keygen')
    xo_cmds = [
        'xo create game',
        'xo take game 5',
        'xo take game 9',
        'xo create game2',
        'xo take game2 4',
    ]
    # Assert all block info transactions are committed
    for i, batch in enumerate(batches):
        post_batch(batch)
        send_xo_cmd('{} --url {} --wait {}'.format(
            xo_cmds[i],
            'http://rest-api:8008',
            WAIT))
        block_info = get_block_info(i)
        self.assertEqual(block_info.block_num, i)
    # Assert block info batches are first in the block and
    # that any other batch is of the xo family
    for block in get_blocks()[:-1]:
        LOGGER.debug(block['header']['block_num'])
        family_name = \
            block['batches'][0]['transactions'][0]['header']['family_name']
        self.assertEqual(family_name, 'block_info')
        for batch in block['batches'][1:]:
            self.assertEqual(
                batch['transactions'][0]['header']['family_name'], 'xo')