class TestPagerDutyOutput(object): """Test class for PagerDutyOutput""" DESCRIPTOR = 'unit_test_pagerduty' SERVICE = 'pagerduty' OUTPUT = ':'.join([SERVICE, DESCRIPTOR]) CREDS = {'url': 'http://pagerduty.foo.bar/create_event.json', 'service_key': 'mocked_service_key'} @patch.dict('os.environ', MOCK_ENV) def setup(self): """Setup before each method""" self._mock_s3 = mock_s3() self._mock_s3.start() self._mock_kms = mock_kms() self._mock_kms.start() self._dispatcher = PagerDutyOutput(None) remove_temp_secrets() output_name = self._dispatcher.output_cred_name(self.DESCRIPTOR) put_mock_creds(output_name, self.CREDS, self._dispatcher.secrets_bucket, REGION, KMS_ALIAS) def teardown(self): """Teardown after each method""" self._mock_s3.stop() self._mock_kms.stop() def test_get_default_properties(self): """PagerDutyOutput - Get Default Properties""" props = self._dispatcher._get_default_properties() assert_equal(len(props), 1) assert_equal(props['url'], 'https://events.pagerduty.com/generic/2010-04-15/create_event.json') @patch('logging.Logger.info') @patch('requests.post') def test_dispatch_success(self, post_mock, log_mock): """PagerDutyOutput - Dispatch Success""" post_mock.return_value.status_code = 200 assert_true(self._dispatcher.dispatch(get_alert(), self.OUTPUT)) log_mock.assert_called_with('Successfully sent alert to %s:%s', self.SERVICE, self.DESCRIPTOR) @patch('logging.Logger.error') @patch('requests.post') def test_dispatch_failure(self, post_mock, log_mock): """PagerDutyOutput - Dispatch Failure, Bad Request""" post_mock.return_value.status_code = 400 assert_false(self._dispatcher.dispatch(get_alert(), self.OUTPUT)) log_mock.assert_called_with('Failed to send alert to %s:%s', self.SERVICE, self.DESCRIPTOR) @patch('logging.Logger.error') def test_dispatch_bad_descriptor(self, log_mock): """PagerDutyOutput - Dispatch Failure, Bad Descriptor""" assert_false( self._dispatcher.dispatch(get_alert(), ':'.join([self.SERVICE, 'bad_descriptor']))) log_mock.assert_called_with('Failed to send alert to %s:%s', self.SERVICE, 'bad_descriptor')
class TestPagerDutyOutput(object): """Test class for PagerDutyOutput""" DESCRIPTOR = 'unit_test_pagerduty' SERVICE = 'pagerduty' CREDS = {'url': 'http://pagerduty.foo.bar/create_event.json', 'service_key': 'mocked_service_key'} def setup(self): """Setup before each method""" self._dispatcher = PagerDutyOutput(REGION, ACCOUNT_ID, FUNCTION_NAME, CONFIG) remove_temp_secrets() output_name = self._dispatcher.output_cred_name(self.DESCRIPTOR) put_mock_creds(output_name, self.CREDS, self._dispatcher.secrets_bucket, REGION, KMS_ALIAS) def test_get_default_properties(self): """PagerDutyOutput - Get Default Properties""" props = self._dispatcher._get_default_properties() assert_equal(len(props), 1) assert_equal(props['url'], 'https://events.pagerduty.com/generic/2010-04-15/create_event.json') @patch('logging.Logger.info') @patch('requests.post') def test_dispatch_success(self, post_mock, log_mock): """PagerDutyOutput - Dispatch Success""" post_mock.return_value.status_code = 200 assert_true(self._dispatcher.dispatch(descriptor=self.DESCRIPTOR, rule_name='rule_name', alert=get_alert())) log_mock.assert_called_with('Successfully sent alert to %s:%s', self.SERVICE, self.DESCRIPTOR) @patch('logging.Logger.error') @patch('requests.post') def test_dispatch_failure(self, post_mock, log_mock): """PagerDutyOutput - Dispatch Failure, Bad Request""" post_mock.return_value.status_code = 400 assert_false(self._dispatcher.dispatch(descriptor=self.DESCRIPTOR, rule_name='rule_name', alert=get_alert())) log_mock.assert_called_with('Failed to send alert to %s:%s', self.SERVICE, self.DESCRIPTOR) @patch('logging.Logger.error') def test_dispatch_bad_descriptor(self, log_mock): """PagerDutyOutput - Dispatch Failure, Bad Descriptor""" assert_false(self._dispatcher.dispatch(descriptor='bad_descriptor', rule_name='rule_name', alert=get_alert())) log_mock.assert_called_with('Failed to send alert to %s:%s', self.SERVICE, 'bad_descriptor')
class TestPagerDutyOutput(object): """Test class for PagerDutyOutput""" DESCRIPTOR = 'unit_test_pagerduty' SERVICE = 'pagerduty' OUTPUT = ':'.join([SERVICE, DESCRIPTOR]) CREDS = { 'url': 'http://pagerduty.foo.bar/create_event.json', 'service_key': 'mocked_service_key' } @patch( 'stream_alert.alert_processor.outputs.output_base.OutputCredentialsProvider' ) def setup(self, provider_constructor): """Setup before each method""" provider = MagicMock() provider_constructor.return_value = provider provider.load_credentials = Mock( side_effect=lambda x: self.CREDS if x == self.DESCRIPTOR else None) self._provider = provider self._dispatcher = PagerDutyOutput(None) def test_get_default_properties(self): """PagerDutyOutput - Get Default Properties""" props = self._dispatcher._get_default_properties() assert_equal(len(props), 1) assert_equal( props['url'], 'https://events.pagerduty.com/generic/2010-04-15/create_event.json' ) @patch('logging.Logger.info') @patch('requests.post') def test_dispatch_success(self, post_mock, log_mock): """PagerDutyOutput - Dispatch Success""" post_mock.return_value.status_code = 200 assert_true(self._dispatcher.dispatch(get_alert(), self.OUTPUT)) log_mock.assert_called_with('Successfully sent alert to %s:%s', self.SERVICE, self.DESCRIPTOR) @patch('logging.Logger.error') @patch('requests.post') def test_dispatch_failure(self, post_mock, log_mock): """PagerDutyOutput - Dispatch Failure, Bad Request""" post_mock.return_value.status_code = 400 assert_false(self._dispatcher.dispatch(get_alert(), self.OUTPUT)) log_mock.assert_called_with('Failed to send alert to %s:%s', self.SERVICE, self.DESCRIPTOR) @patch('logging.Logger.error') def test_dispatch_bad_descriptor(self, log_mock): """PagerDutyOutput - Dispatch Failure, Bad Descriptor""" assert_false( self._dispatcher.dispatch( get_alert(), ':'.join([self.SERVICE, 'bad_descriptor']))) log_mock.assert_called_with('Failed to send alert to %s:%s', self.SERVICE, 'bad_descriptor')