Exemple #1
0
    def test_cli(self, test_cases):
        """Test if the CLI hits specific client methods."""
        tmp_config = os.path.join(self.test_dir, '.forseti')
        with mock.patch.dict(os.environ,
                             {'FORSETI_CLIENT_CONFIG': tmp_config}):
            for (commandline, client_func, func_args, func_kwargs,
                 config_string, config_expect) in test_cases:
                try:
                    args = shlex.split(commandline)
                    env_config = cli.DefaultConfig(
                        json.load(io.StringIO(config_string)))
                    # Capture stdout, so it doesn't pollute the test output
                    with mock.patch('sys.stdout', new_callable=io.StringIO):
                        config = cli.main(args=args,
                                          config_env=env_config,
                                          client=CLIENT,
                                          parser_cls=MockArgumentParser)
                    if client_func is not None:
                        client_func.assert_called_with(*func_args,
                                                       **func_kwargs)

                    # Check attribute values
                    for attribute, value in config_expect.items():
                        self.assertEqual(
                            getattr(config, attribute), value,
                            'Attribute value unexpected: {}, {}'.format(
                                attribute, value))

                except ArgumentParserError as e:
                    self.fail('Argument parser failed on {}, {}'.format(
                        commandline, e.message))
Exemple #2
0
 def test_cli_grpc_server_unknown(self, test_cases):
     """Grpc server unavailable."""
     for (commandline, client_func, func_args, func_kwargs, config_string,
          config_expect) in test_cases:
         args = shlex.split(commandline)
         env_config = cli.DefaultConfig(
             json.load(io.StringIO(config_string)))
         with mock.patch('sys.stdout',
                         new_callable=io.StringIO) as mock_out:
             cli.main(args=args,
                      config_env=env_config,
                      client=ERROR_CLIENT,
                      parser_cls=MockArgumentParser)
             cli_output = mock_out.getvalue().strip()
             self.assertTrue(
                 'Error occurred on the server side' in cli_output)