Esempio n. 1
0
 def test__requires_input_file(self):
     parser = ArgumentParser()
     add_arguments(parser)
     args = parser.parse_args([])
     with ExpectedException(ActionScriptError,
                            ".*Required argument: interface.*"):
         run(args)
Esempio n. 2
0
 def test__allows_file_input(self):
     with NamedTemporaryFile("wb") as f:
         parser = ArgumentParser()
         add_arguments(parser)
         f.write(test_input)
         f.flush()
         args = parser.parse_args(["--input-file", f.name])
         output = io.StringIO()
         run(args, output=output)
Esempio n. 3
0
 def test__raises_systemexit_observe_arp_return_code(self):
     parser = ArgumentParser()
     add_arguments(parser)
     args = parser.parse_args(["eth0"])
     popen = self.patch(arp_module.subprocess, "Popen")
     popen.return_value.poll = Mock()
     popen.return_value.poll.return_value = None
     popen.return_value.stdout = io.BytesIO(test_input)
     output = io.StringIO()
     observe_arp_packets = self.patch(arp_module, "observe_arp_packets")
     observe_arp_packets.return_value = 37
     with ExpectedException(SystemExit, ".*37.*"):
         run(args, output=output)
Esempio n. 4
0
 def test__allows_pipe_input(self):
     parser = ArgumentParser()
     add_arguments(parser)
     args = parser.parse_args(["--input-file", "-"])
     output = io.StringIO()
     stdin = self.patch(arp_module.sys, "stdin")
     stdin.return_value.fileno = Mock()
     fstat = self.patch(arp_module.os, "fstat")
     fstat.return_value.st_mode = None
     stat = self.patch(arp_module.stat, "S_ISFIFO")
     stat.return_value = True
     stdin_buffer = io.BytesIO(test_input)
     run(args, output=output, stdin_buffer=stdin_buffer)
Esempio n. 5
0
 def test__checks_for_pipe(self):
     parser = ArgumentParser()
     add_arguments(parser)
     args = parser.parse_args(["--input-file", "-"])
     output = io.StringIO()
     stdin = self.patch(arp_module.sys, "stdin")
     stdin.return_value.fileno = Mock()
     fstat = self.patch(arp_module.os, "fstat")
     fstat.return_value.st_mode = None
     stat = self.patch(arp_module.stat, "S_ISFIFO")
     stat.return_value = False
     with ExpectedException(ActionScriptError,
                            "Expected stdin to be a pipe"):
         run(args, output=output)
Esempio n. 6
0
 def test__checks_for_pipe(self):
     parser = ArgumentParser()
     add_arguments(parser)
     args = parser.parse_args(['--input-file', '-'])
     output = io.StringIO()
     stdin = self.patch(arp_module.sys, 'stdin')
     stdin.return_value.fileno = Mock()
     fstat = self.patch(arp_module.os, 'fstat')
     fstat.return_value.st_mode = None
     stat = self.patch(arp_module.stat, 'S_ISFIFO')
     stat.return_value = False
     with ExpectedException(ActionScriptError,
                            'Expected stdin to be a pipe'):
         run(args, output=output)
Esempio n. 7
0
 def test__raises_systemexit_poll_result(self):
     parser = ArgumentParser()
     add_arguments(parser)
     args = parser.parse_args(['eth0'])
     popen = self.patch(arp_module.subprocess, 'Popen')
     popen.return_value.poll = Mock()
     popen.return_value.poll.return_value = None
     popen.return_value.stdout = io.BytesIO(test_input)
     output = io.StringIO()
     observe_arp_packets = self.patch(arp_module, 'observe_arp_packets')
     observe_arp_packets.return_value = None
     popen.return_value.poll = Mock()
     popen.return_value.poll.return_value = 42
     with ExpectedException(SystemExit, '.*42.*'):
         run(args, output=output)
Esempio n. 8
0
 def test__calls_subprocess_for_interface_sudo(self):
     parser = ArgumentParser()
     add_arguments(parser)
     args = parser.parse_args(['eth0'])
     popen = self.patch(arp_module.subprocess, 'Popen')
     popen.return_value.poll = Mock()
     popen.return_value.poll.return_value = None
     popen.return_value.stdout = io.BytesIO(test_input)
     output = io.StringIO()
     run(args, output=output)
     self.assertThat(
         popen,
         MockCalledOnceWith(
             ['sudo', '-n', '/usr/lib/maas/maas-network-monitor', 'eth0'],
             stdin=subprocess.DEVNULL, stdout=subprocess.PIPE))
Esempio n. 9
0
 def test__calls_subprocess_for_interface(self):
     parser = ArgumentParser()
     add_arguments(parser)
     args = parser.parse_args(["eth0"])
     popen = self.patch(arp_module.subprocess, "Popen")
     popen.return_value.poll = Mock()
     popen.return_value.poll.return_value = None
     popen.return_value.stdout = io.BytesIO(test_input)
     output = io.StringIO()
     run(args, output=output)
     self.assertThat(
         popen,
         MockCalledOnceWith(
             ["sudo", "-n", "/usr/lib/maas/network-monitor", "eth0"],
             stdin=subprocess.DEVNULL,
             stdout=subprocess.PIPE,
         ),
     )