Ejemplo n.º 1
0
def main(argv=None):
    if len(sys.argv) == 1:  # pragma: no cover
        sys.argv.append('-h')

    args = parse_args(argv)
    if args.verbose:  # pragma: no cover
        log.set_debug_level(args.verbose)

    if args.version:    # pragma: no cover
        print(VERSION)
        return

    if args.scan:
        print(
            json.dumps(
                _perform_scan(args),
                indent=2,
                sort_keys=True,
            ),
        )

    elif args.audit:
        audit.audit_baseline(args.audit[0])

    return 0
Ejemplo n.º 2
0
    def test_quit_before_making_decision(self, mock_printer):
        with self.mock_env(['q']) as m:
            audit.audit_baseline('will_be_mocked')

            assert m.call_args[1]['data'] == self.baseline

        assert mock_printer.message == ('Quitting...\n' 'Saving progress...\n')
Ejemplo n.º 3
0
    def run_logic(self, inputs, modified_baseline=None, input_baseline=None):
        with self.mock_env(
                inputs,
                baseline=input_baseline,
        ) as m:
            audit.audit_baseline('will_be_mocked')

            assert m.call_args[1]['data'] == modified_baseline
Ejemplo n.º 4
0
    def run_logic(self, inputs, modified_baseline=None, input_baseline=None):
        with self.mock_env(inputs, baseline=input_baseline) as m:
            audit.audit_baseline('will_be_mocked')

            if not modified_baseline:
                assert m.call_args[0][1] == self.baseline
            else:
                assert m.call_args[0][1] == modified_baseline
Ejemplo n.º 5
0
    def run_logic(self, inputs, modified_baseline=None, input_baseline=None):
        with self.mock_env(inputs, baseline=input_baseline) as m:
            audit.audit_baseline('will_be_mocked')

            if not modified_baseline:
                assert m.call_args[0][1] == self.baseline
            else:
                assert m.call_args[0][1] == modified_baseline
Ejemplo n.º 6
0
    def test_nothing_to_audit(self, mock_printer):
        modified_baseline = deepcopy(self.baseline)
        modified_baseline['results']['filenameA'][0]['is_secret'] = True
        modified_baseline['results']['filenameA'][1]['is_secret'] = False
        modified_baseline['results']['filenameB'][0]['is_secret'] = False

        with self.mock_env(baseline=modified_baseline):
            audit.audit_baseline('will_be_mocked')

        assert mock_printer.message == 'Nothing to audit!\n'
Ejemplo n.º 7
0
    def test_nothing_to_audit(self, mock_printer):
        modified_baseline = deepcopy(self.baseline)
        modified_baseline['results']['filenameA'][0]['is_secret'] = True
        modified_baseline['results']['filenameA'][1]['is_secret'] = False
        modified_baseline['results']['filenameB'][0]['is_secret'] = False

        with self.mock_env(baseline=modified_baseline):
            audit.audit_baseline('will_be_mocked')

        assert mock_printer.message == 'Nothing to audit!\n'
Ejemplo n.º 8
0
    def test_quit_before_making_decision(self, mock_printer):
        with self.mock_env(['q']) as m:
            audit.audit_baseline('will_be_mocked')

            assert m.call_args[0][1] == self.baseline

        assert mock_printer.message == (
            'Quitting...\n'
            'Saving progress...\n'
        )
Ejemplo n.º 9
0
def main(argv=None):
    if len(sys.argv) == 1:  # pragma: no cover
        sys.argv.append('-h')

    args = parse_args(argv)
    if args.verbose:  # pragma: no cover
        log.set_debug_level(args.verbose)

    if args.action == 'scan':
        # Plugins are *always* rescanned with fresh settings, because
        # we want to get the latest updates.
        plugins = initialize.from_parser_builder(args.plugins)
        if args.string:
            line = args.string

            if isinstance(args.string, bool):
                line = sys.stdin.read().splitlines()[0]

            _scan_string(line, plugins)

        else:
            baseline_dict = _perform_scan(
                args,
                plugins,
            )

            if args.import_filename:
                write_baseline_to_file(
                    filename=args.import_filename[0],
                    data=baseline_dict,
                )
            else:
                print(baseline.format_baseline_for_output(baseline_dict, ), )

    elif args.action == 'audit':
        if not args.diff:
            audit.audit_baseline(args.filename[0])
            return 0

        if len(args.filename) != 2:
            print(
                'Must specify two files to compare!',
                file=sys.stderr,
            )
            return 1

        try:
            audit.compare_baselines(args.filename[0], args.filename[1])
        except audit.RedundantComparisonError:
            print(
                'No difference, because it\'s the same file!',
                file=sys.stderr,
            )

    return 0
Ejemplo n.º 10
0
def main(argv=None):
    if len(sys.argv) == 1:  # pragma: no cover
        sys.argv.append('-h')

    args = parse_args(argv)
    if args.verbose:  # pragma: no cover
        log.set_debug_level(args.verbose)

    if args.version:  # pragma: no cover
        print(VERSION)
        return

    if args.scan:
        print(json.dumps(
            _perform_scan(args),
            indent=2,
            sort_keys=True,
        ), )

    elif args.audit:
        audit.audit_baseline(args.audit[0])

    return 0
Ejemplo n.º 11
0
def main(argv=None):
    if len(sys.argv) == 1:  # pragma: no cover
        sys.argv.append('-h')

    args = parse_args(argv)
    if args.verbose:  # pragma: no cover
        log.set_debug_level(args.verbose)

    if args.action == 'scan':
        # Plugins are *always* rescanned with fresh settings, because
        # we want to get the latest updates.
        plugins = initialize.from_parser_builder(args.plugins)
        if args.string:
            line = args.string

            if isinstance(args.string, bool):
                line = sys.stdin.read().splitlines()[0]

            _scan_string(line, plugins)

        else:
            output = json.dumps(
                _perform_scan(args, plugins),
                indent=2,
                sort_keys=True,
                separators=(',', ': '),
            )

            if args.import_filename:
                _write_to_file(args.import_filename[0], output)
            else:
                print(output)

    elif args.action == 'audit':
        audit.audit_baseline(args.filename[0])

    return 0
Ejemplo n.º 12
0
def main(argv=None):
    if len(sys.argv) == 1:  # pragma: no cover
        sys.argv.append('-h')

    args = parse_args(argv)
    if args.verbose:  # pragma: no cover
        log.set_debug_level(args.verbose)

    if args.action == 'scan':
        output = json.dumps(
            _perform_scan(args),
            indent=2,
            sort_keys=True,
        )

        if args.import_filename:
            _write_to_file(args.import_filename[0], output)
        else:
            print(output)

    elif args.action == 'audit':
        audit.audit_baseline(args.filename[0])

    return 0
Ejemplo n.º 13
0
def main(argv=sys.argv[1:]):
    if len(sys.argv) == 1:  # pragma: no cover
        sys.argv.append('--help')

    args = parse_args(argv)
    if args.verbose:  # pragma: no cover
        log.set_debug_level(args.verbose)

    if args.action == 'scan':
        automaton = None
        word_list_hash = None
        if args.word_list_file:
            automaton, word_list_hash = build_automaton(args.word_list_file)

        # Plugins are *always* rescanned with fresh settings, because
        # we want to get the latest updates.
        plugins = initialize.from_parser_builder(
            plugins_dict=args.plugins,
            custom_plugin_paths=args.custom_plugin_paths,
            exclude_lines_regex=args.exclude_lines,
            automaton=automaton,
            should_verify_secrets=not args.no_verify,
        )
        if args.string:
            line = args.string

            if isinstance(args.string, bool):
                line = sys.stdin.read().splitlines()[0]

            _scan_string(line, plugins)

        else:
            baseline_dict = _perform_scan(
                args,
                plugins,
                automaton,
                word_list_hash,
            )

            if args.import_filename:
                write_baseline_to_file(
                    filename=args.import_filename[0],
                    data=baseline_dict,
                )
            else:
                print(baseline.format_baseline_for_output(baseline_dict, ), )

    elif args.action == 'audit':
        if not args.diff and not args.display_results:
            audit.audit_baseline(args.filename[0])
            return 0

        if args.display_results:
            audit.print_audit_results(args.filename[0])
            return 0

        if len(args.filename) != 2:
            print(
                'Must specify two files to compare!',
                file=sys.stderr,
            )
            return 1

        try:
            audit.compare_baselines(args.filename[0], args.filename[1])
        except audit.RedundantComparisonError:
            print(
                'No difference, because it\'s the same file!',
                file=sys.stderr,
            )

    return 0
Ejemplo n.º 14
0
    def test_no_baseline(self, mock_printer):
        with self.mock_env(baseline='') as m:
            audit.audit_baseline('will_be_mocked')

            assert not m.called
            assert mock_printer.message == ''
Ejemplo n.º 15
0
    def test_no_baseline(self, mock_printer):
        with self.mock_env(baseline='') as m:
            audit.audit_baseline('will_be_mocked')

            assert not m.called
            assert mock_printer.message == ''