Beispiel #1
0
def test_destroy_configuration(config, test_emitter, capsys, mocker):
    # Setup
    config_class = config.__class__
    config_file = config.filepath

    # Isolate from filesystem and Spy on the methods we're testing here
    spy_keyring_attached = mocker.spy(CharacterConfiguration, 'attach_keyring')
    mock_config_destroy = mocker.patch.object(CharacterConfiguration,
                                              'destroy')
    spy_keyring_destroy = mocker.spy(NucypherKeyring, 'destroy')
    mock_os_remove = mocker.patch('os.remove')

    # Test
    destroy_configuration(emitter=test_emitter, character_config=config)

    mock_config_destroy.assert_called_once()
    captured = capsys.readouterr()
    assert SUCCESSFUL_DESTRUCTION in captured.out

    spy_keyring_attached.assert_called_once()
    spy_keyring_destroy.assert_called_once()
    mock_os_remove.assert_called_with(str(config_file))

    # Ensure all destroyed files belong to this Ursula
    for call in mock_os_remove.call_args_list:
        filepath = str(call.args[0])
        assert config.checksum_address in filepath

    expected_removal = 7  # TODO: Source this number from somewhere else
    if config_class is UrsulaConfiguration:
        expected_removal += 1
        mock_os_remove.assert_called_with(config.db_filepath)

    assert mock_os_remove.call_count == expected_removal
Beispiel #2
0
def destroy(general_config, config_options, config_file, force):
    """Delete existing Bob's configuration."""
    emitter = setup_emitter(general_config)
    if config_options.dev:
        message = "'nucypher bob destroy' cannot be used in --dev mode"
        raise click.BadOptionUsage(option_name='--dev', message=message)
    bob_config = config_options.create_config(emitter, config_file)
    destroy_configuration(emitter, character_config=bob_config, force=force)
def test_destroy_configuration_cli_action(config, test_emitter, capsys, mocker, mock_stdin):
    config_class = config.__class__
    mock_config_destroy = mocker.patch.object(config_class, 'destroy')
    mock_stdin.line(YES)
    destroy_configuration(emitter=test_emitter, character_config=config)
    mock_config_destroy.assert_called_once()
    captured = capsys.readouterr()
    assert SUCCESSFUL_DESTRUCTION in captured.out
    assert mock_stdin.empty()
Beispiel #4
0
def destroy(general_config, config_options, config_file, force):
    """Delete Ursula node configuration."""
    emitter = setup_emitter(general_config, config_options.worker_address)
    _pre_launch_warnings(emitter, dev=config_options.dev, force=force)
    if not config_file:
        config_file = select_config_file(
            emitter=emitter,
            checksum_address=config_options.worker_address,
            config_class=UrsulaConfiguration)
    ursula_config = config_options.create_config(emitter, config_file)
    destroy_configuration(emitter, character_config=ursula_config, force=force)
Beispiel #5
0
def destroy(general_config, config_options, config_file, force):
    """Delete existing Alice's configuration."""
    emitter = setup_emitter(general_config)
    alice_config = config_options.create_config(emitter, config_file)
    destroy_configuration(emitter, character_config=alice_config, force=force)
Beispiel #6
0
def destroy(general_config, config_options, config_file, force):
    """Destroy Felix Configuration."""
    emitter = setup_emitter(general_config, config_options.checksum_address)
    felix_config = config_options.create_config(emitter, config_file)
    destroy_configuration(emitter, character_config=felix_config, force=force)
Beispiel #7
0
def destroy(general_config, config_options, config_file, force):
    """Delete Ursula node configuration."""
    emitter = setup_emitter(general_config, config_options.operator_address)
    _pre_launch_warnings(emitter, dev=config_options.dev, force=force)
    ursula_config = config_options.create_config(emitter, config_file)
    destroy_configuration(emitter, character_config=ursula_config, force=force)