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
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=['*****@*****.**', '*****@*****.**'])
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=['*****@*****.**', '*****@*****.**'])
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
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)
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')
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')
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)