/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos-ctl

  • Committer: Teddy Hogeborn
  • Date: 2019-03-03 18:11:39 UTC
  • Revision ID: teddy@recompile.se-20190303181139-f8r50k8bgirs3d5f
mandos-ctl: Add test for IsEnabledCmd class

* mandos-ctl (TestCmd.setUp.MockClient.Set,
              TestCmd.setUp.MockClient.Get): Fix bugs.
  (TestCmd.setUp.MockClient.__setitem__): New.
  (TestIsEnabledCmd): New.

Show diffs side-by-side

added added

removed removed

Lines of Context:
516
516
                options.approve,
517
517
                options.deny))
518
518
 
519
 
def add_command_line_options(parser):
 
519
 
 
520
def commands_and_clients_from_options(args=None):
 
521
    if args is None:
 
522
        args=sys.argv[1:]
 
523
    parser = argparse.ArgumentParser()
520
524
    parser.add_argument("--version", action="version",
521
525
                        version="%(prog)s {}".format(version),
522
526
                        help="show version number and exit")
579
583
    parser.add_argument("--check", action="store_true",
580
584
                        help="Run self-test")
581
585
    parser.add_argument("client", nargs="*", help="Client name")
582
 
 
583
 
 
584
 
def commands_and_clients_from_options(options):
 
586
    options = parser.parse_args(args=args)
 
587
 
 
588
    if has_actions(options) and not (options.client or options.all):
 
589
        parser.error("Options require clients names or --all.")
 
590
    if options.verbose and has_actions(options):
 
591
        parser.error("--verbose can only be used alone.")
 
592
    if options.dump_json and (options.verbose
 
593
                              or has_actions(options)):
 
594
        parser.error("--dump-json can only be used alone.")
 
595
    if options.all and not has_actions(options):
 
596
        parser.error("--all requires an action.")
 
597
    if options.is_enabled and len(options.client) > 1:
 
598
            parser.error("--is-enabled requires exactly one client")
585
599
 
586
600
    commands = []
587
601
 
656
670
 
657
671
 
658
672
def main():
659
 
    parser = argparse.ArgumentParser()
660
 
 
661
 
    add_command_line_options(parser)
662
 
 
663
 
    options = parser.parse_args()
664
 
 
665
 
    if has_actions(options) and not (options.client or options.all):
666
 
        parser.error("Options require clients names or --all.")
667
 
    if options.verbose and has_actions(options):
668
 
        parser.error("--verbose can only be used alone.")
669
 
    if options.dump_json and (options.verbose
670
 
                              or has_actions(options)):
671
 
        parser.error("--dump-json can only be used alone.")
672
 
    if options.all and not has_actions(options):
673
 
        parser.error("--all requires an action.")
674
 
    if options.is_enabled and len(options.client) > 1:
675
 
        parser.error("--is-enabled requires exactly one client")
676
 
 
677
 
    commands, clientnames = commands_and_clients_from_options(options)
 
673
    commands, clientnames = commands_and_clients_from_options()
678
674
 
679
675
    try:
680
676
        bus = dbus.SystemBus()