Exemplo n.º 1
0
  def testNoApproversErrorsOut(self):
    """Tests that an error is generated if no approvers are specified.

    This should only error on unauthorized objects, which is how our mock
    behaves.
    """
    test_state = state.DFTimewolfState()
    grr_base_module = grr_base.GRRBaseModule(test_state)
    grr_base_module.setup('random', 'http://fake/url', ('admin', 'admin'), '')
    # pylint: disable=protected-access
    grr_base_module._CHECK_APPROVAL_INTERVAL_SEC = 0
    mock_grr_object = MockGRRObject()
    mock_forbidden_function = mock.Mock(
        wraps=mock_grr_object.forbidden_function)
    result = grr_base_module._check_approval_wrapper(
        mock_grr_object,
        mock_forbidden_function,
        'random1',
        'random2',
        random3=4,
        random4=4)
    self.assertIsNone(result)
    # Only one error message is generateds
    self.assertEqual(len(test_state.errors), 1)
    # Correct error message is generated
    self.assertIn('no approvers specified', test_state.errors[0][0])
    self.assertTrue(test_state.errors[0][1])  # critical=True
Exemplo n.º 2
0
    def testApprovalWrapper(self):
        """Tests that the approval wrapper works correctly."""
        test_state = state.DFTimewolfState(config.Config)
        grr_base_module = grr_base.GRRBaseModule(test_state)
        grr_base_module.SetUp(
            reason='random reason',
            grr_server_url='http://fake/endpoint',
            grr_username='******',
            grr_password='******',
            approvers='[email protected],[email protected]',
            verify=True)
        # pylint: disable=protected-access
        grr_base_module._CHECK_APPROVAL_INTERVAL_SEC = 0
        mock_grr_object = MockGRRObject()
        mock_forbidden_function = mock.Mock(
            wraps=mock_grr_object.ForbiddenFunction)
        result = grr_base_module._WrapGRRRequestWithApproval(
            mock_grr_object,
            mock_forbidden_function,
            'random1',
            'random2',
            random3=4,
            random4=4)

        # Final result.
        self.assertEqual(result, 4)
        mock_forbidden_function.assert_called_with('random1',
                                                   'random2',
                                                   random3=4,
                                                   random4=4)
        # Our forbidden function should be called 4 times, the last one succeeeding.
        self.assertEqual(mock_forbidden_function.call_count, 4)
        mock_grr_object.CreateApproval.assert_called_with(
            reason='random reason',
            notified_users=['*****@*****.**', '*****@*****.**'])
Exemplo n.º 3
0
  def testApprovalWrapper(self):
    """Tests that the approval wrapper works correctly."""
    test_state = state.DFTimewolfState()
    grr_base_module = grr_base.GRRBaseModule(test_state)
    grr_base_module.setup('random reason',
                          'http://fake/endpoint',
                          ('admin', 'admin'),
                          '[email protected],[email protected]')
    # pylint: disable=protected-access
    grr_base_module._CHECK_APPROVAL_INTERVAL_SEC = 0
    mock_grr_object = MockGRRObject()
    mock_forbidden_function = mock.Mock(
        wraps=mock_grr_object.forbidden_function)
    result = grr_base_module._check_approval_wrapper(
        mock_grr_object,
        mock_forbidden_function,
        'random1',
        'random2',
        random3=4,
        random4=4)

    # Final result.
    self.assertEqual(result, 4)
    mock_forbidden_function.assert_called_with(
        'random1', 'random2', random3=4, random4=4)
    # Our forbidden function should be called 4 times, the last one succeeeding.
    self.assertEqual(mock_forbidden_function.call_count, 4)
    mock_grr_object.CreateApproval.assert_called_with(
        reason='random reason',
        notified_users=['*****@*****.**', '*****@*****.**'])
Exemplo n.º 4
0
    def testNoApproversErrorsOut(self):
        """Tests that an error is generated if no approvers are specified.

    This should only error on unauthorized objects, which is how our mock
    behaves.
    """
        test_state = state.DFTimewolfState(config.Config)
        grr_base_module = grr_base.GRRBaseModule(test_state)
        grr_base_module.SetUp(reason='random',
                              grr_server_url='http://fake/url',
                              grr_username='******',
                              grr_password='******',
                              approvers='',
                              verify=True)
        # pylint: disable=protected-access
        grr_base_module._CHECK_APPROVAL_INTERVAL_SEC = 0
        mock_grr_object = MockGRRObject()
        mock_forbidden_function = mock.Mock(
            wraps=mock_grr_object.ForbiddenFunction)
        result = grr_base_module._WrapGRRRequestWithApproval(
            mock_grr_object,
            mock_forbidden_function,
            'random1',
            'random2',
            random3=4,
            random4=4)
        self.assertIsNone(result)
        # Only one error message is generateds
        self.assertEqual(len(test_state.errors), 1)
        # Correct error message is generated
        self.assertIn('no approvers specified', test_state.errors[0][0])
        self.assertTrue(test_state.errors[0][1])  # critical=True
Exemplo n.º 5
0
    def testNoApproversErrorsOut(self, _):
        """Tests that an error is generated if no approvers are specified.

    This should only error on unauthorized objects, which is how our mock
    behaves.
    """
        test_state = state.DFTimewolfState(config.Config)
        grr_base_module = grr_base.GRRBaseModule(test_state)
        grr_base_module.SetUp(reason='random',
                              grr_server_url='http://fake/url',
                              grr_username='******',
                              grr_password='******',
                              approvers='',
                              verify=True)
        # pylint: disable=protected-access
        grr_base_module._CHECK_APPROVAL_INTERVAL_SEC = 0
        mock_grr_object = MockGRRObject()
        mock_forbidden_function = mock.Mock(
            wraps=mock_grr_object.ForbiddenFunction)
        with self.assertRaises(errors.DFTimewolfError) as error:
            grr_base_module._WrapGRRRequestWithApproval(
                mock_grr_object,
                mock_forbidden_function,
                'random1',
                'random2',
                random3=4,
                random4=4)
        self.assertEqual(
            'GRR needs approval but no approvers specified '
            '(hint: use --approvers)', error.exception.message)
        self.assertTrue(error.exception.critical)
        self.assertEqual(len(test_state.errors), 1)
Exemplo n.º 6
0
 def testSetup(self, mock_grr_inithttp, mock_mkdtemp):
   """Tests that setup works"""
   test_state = state.DFTimewolfState()
   grr_base_module = grr_base.GRRBaseModule(test_state)
   mock_mkdtemp.return_value = '/fake'
   grr_base_module.setup('random reason',
                         'http://fake/endpoint',
                         ('admin', 'admin'),
                         '[email protected],[email protected]')
   mock_grr_inithttp.assert_called_with(
       api_endpoint='http://fake/endpoint', auth=('admin', 'admin'))
   self.assertEqual(grr_base_module.approvers,
                    ['*****@*****.**', '*****@*****.**'])
   self.assertEqual(grr_base_module.output_path, '/fake')
Exemplo n.º 7
0
 def testSetup(self, mock_grr_inithttp, mock_mkdtemp):
     """Tests that setup works"""
     test_state = state.DFTimewolfState(config.Config)
     grr_base_module = grr_base.GRRBaseModule(test_state)
     mock_mkdtemp.return_value = '/fake'
     grr_base_module.SetUp(
         reason='random reason',
         grr_server_url='http://fake/endpoint',
         grr_username='******',
         grr_password='******',
         approvers='[email protected],[email protected]',
         verify=True)
     mock_grr_inithttp.assert_called_with(
         api_endpoint='http://fake/endpoint',
         auth=('admin1', 'admin2'),
         verify=True)
     self.assertEqual(grr_base_module.approvers,
                      ['*****@*****.**', '*****@*****.**'])
     self.assertEqual(grr_base_module.output_path, '/fake')
Exemplo n.º 8
0
 def testInitialization(self):
   """Tests that the collector can be initialized."""
   test_state = state.DFTimewolfState()
   grr_base_module = grr_base.GRRBaseModule(test_state)
   self.assertIsNotNone(grr_base_module)