コード例 #1
0
ファイル: csv2ved.py プロジェクト: rroy-tc/csv2ved
def csv2ved(**opts):
    _handle_input_prompt(opts)

    if not validate_company_cmd_line_parameter(opts['company_id']):
        click.secho('Invalid format for company ID parameter, aborting',
                    color='red')
        sys.exit(2)

    gpg_recipients = vad2ved_converter.GPG_PRODUCTION_RECIPIENTS
    gpg_key_data_directory = vad2ved_converter.GPG_PRODUCTION_KEY_DATA_DIRECTORY
    if not opts['prod']:
        gpg_recipients = vad2ved_converter.GPG_NON_PRODUCTION_RECIPIENTS
        gpg_key_data_directory = vad2ved_converter.GPG_NON_PRODUCTION_KEY_DATA_DIRECTORY

    gpg, init_error = vad2ved_converter.init_gpg(
        vad2ved_converter.GPG_HOME_DIRECTORY, gpg_recipients,
        gpg_key_data_directory)
    if init_error:
        click.secho(init_error, color='red')
        sys.exit(2)

    jpl_file_name, lines, errors = csv2jpl_converter.convert(
        opts['data_file'], opts['type_file'], opts['company_id'])
    if errors:
        click.secho('Errors: ')
        for error in errors:
            for line in error:
                click.secho("line {line}: {error}".format(line=line,
                                                          error=error[line]))
        sys.exit(2)
    else:
        click.secho("{} lines written".format(lines))

    click.secho('Archiving ...')
    vad_filename, errors, jpl_bytes, vad_bytes = jpl2vad_converter.convert(
        jpl_file_name)
    if errors:
        click.secho('Errors occurred during compression: {}'.format(errors),
                    color='red')
        sys.exit(2)

    click.secho('{jpl_file} archived to {vad_file}.'.format(
        jpl_file=jpl_file_name, vad_file=vad_filename))
    click.secho(
        'Original file size: {jpl_bytes} bytes.'.format(jpl_bytes=jpl_bytes))
    click.secho(
        'Compressed file size: {vad_bytes} bytes'.format(vad_bytes=vad_bytes))

    click.secho('Encrypting ...')

    ved_filename, status = vad2ved_converter.encrypt(gpg, vad_filename,
                                                     gpg_recipients)

    if ved_filename is None:
        click.secho(status, color='red')
        sys.exit(2)
    else:
        click.secho(
            '{vad_file} encrypted to {ved_file}, status: {status}'.format(
                vad_file=vad_filename,
                ved_file=ved_filename,
                status=status.status))
コード例 #2
0
 def test_returns_gpg_object_on_success(self, mock_keys_exist, mock_get_gpg_binary, mock_gnupg):
     expected_result = (mock_gnupg.return_value, "")
     assert vad2ved_converter.init_gpg(GPG_TEST_HOME_DIRECTORY, REQUIRED_TEST_RECIPIENTS) == expected_result
コード例 #3
0
 def test_returns_false_if_key_does_not_exist(self, mock_keys_exist, mock_get_gpg_binary, mock_gnupg):
     assert vad2ved_converter.init_gpg(GPG_TEST_HOME_DIRECTORY, REQUIRED_TEST_RECIPIENTS) == (False, "error")
コード例 #4
0
 def test_returns_false_on_import_keys_error(self, mock_import_keys, mock_get_gpg_binary, mock_gnupg):
     expected_result = (False, 'missing required public key')
     keys = ['file1', 'file2']
     assert vad2ved_converter.init_gpg(GPG_TEST_HOME_DIRECTORY, REQUIRED_TEST_RECIPIENTS, keys) == expected_result
コード例 #5
0
 def test_returns_false_if_gpg_returns_error(self, mock_get_gpg_binary, mock_gnupg):
     assert vad2ved_converter.init_gpg(GPG_TEST_HOME_DIRECTORY, REQUIRED_TEST_RECIPIENTS) == (False, "error message")
コード例 #6
0
 def test_returns_false_if_gpg_is_not_running(self, mock_get_gpg_binary):
     expected_result = (False, 'gpg binary not found, it might not be running on the machine')
     assert vad2ved_converter.init_gpg(GPG_TEST_HOME_DIRECTORY, REQUIRED_TEST_RECIPIENTS) == expected_result