# Path: monasca_notification/notification.py
# class Notification(object):
#     def __init__(self, id, type, name, address, period, retry_count, alarm):
#     def __eq__(self, other):
#     def __ne__(self, other):
#     def to_json(self):
# 
# Path: monasca_notification/plugins/pagerduty_notifier.py
# CONF = cfg.CONF
# VALID_HTTP_CODES = [200, 201, 204]
# class PagerdutyNotifier(abstract_notifier.AbstractNotifier):
#     def __init__(self, log):
#     def config(self, config):
#     def statsd_name(self):
#     def send_notification(self, notification):
# def register_opts(conf):
# def list_opts():
# 
# Path: tests/base.py
# class DisableStatsdFixture(fixtures.Fixture):
# class ConfigFixture(oo_cfg.Config):
# class BaseTestCase(oslotest_base.BaseTestCase):
# class PluginTestCase(BaseTestCase):
#     def setUp(self):
#     def __init__(self):
#     def setUp(self):
#     def _clean_config_loaded_flag():
#     def setUp(self):
#     def conf_override(**kw):
#     def conf_default(**kw):
#     def setUp(self, register_opts=None):


import json
import requests
import time
import queue
from unittest import mock
from monasca_notification import notification as m_notification
from monasca_notification.plugins import pagerduty_notifier
from tests import base
        headers = dict(headers)
        self.assertEqual(headers['content-type'], 'application/json')

        data = dict(json.loads(data))
        self.assertEqual(data['service_key'], 'ABCDEF')
        self.assertEqual(data['event_type'], 'trigger')
        self.assertEqual(data['description'], 'I am alarming!')
        self.assertEqual(data['client'], 'Monasca')
        self.assertEqual(data['client_url'], '')

        details = dict(data['details'])
        self.assertEqual(details['alarm_id'], '0')
        self.assertEqual(details['alarm_name'], 'test Alarm')
        self.assertEqual(details['current'], 'ALARM')
        self.assertEqual(details['message'], 'I am alarming!')

    def pagerduty_http_error(self, log_msg, http_response):
        self.assertRegex(log_msg, "Error with pagerduty request.")
        self.assertRegex(log_msg, "key=<ABCDEF>")
        self.assertRegex(log_msg, "response=%s" % http_response)

    @mock.patch('monasca_notification.plugins.pagerduty_notifier.requests')
    def notify(self, http_func, mock_requests):
        mock_log = mock.MagicMock()
        mock_log.warn = self.trap.put
        mock_log.error = self.trap.put
        mock_log.exception = self.trap.put

        mock_requests.post = http_func


# Path: monasca_notification/notification.py
# class Notification(object):
#     def __init__(self, id, type, name, address, period, retry_count, alarm):
#     def __eq__(self, other):
#     def __ne__(self, other):
#     def to_json(self):
# 
# Path: monasca_notification/plugins/pagerduty_notifier.py
# CONF = cfg.CONF
# VALID_HTTP_CODES = [200, 201, 204]
# class PagerdutyNotifier(abstract_notifier.AbstractNotifier):
#     def __init__(self, log):
#     def config(self, config):
#     def statsd_name(self):
#     def send_notification(self, notification):
# def register_opts(conf):
# def list_opts():
# 
# Path: tests/base.py
# class DisableStatsdFixture(fixtures.Fixture):
# class ConfigFixture(oo_cfg.Config):
# class BaseTestCase(oslotest_base.BaseTestCase):
# class PluginTestCase(BaseTestCase):
#     def setUp(self):
#     def __init__(self):
#     def setUp(self):
#     def _clean_config_loaded_flag():
#     def setUp(self):
#     def conf_override(**kw):
#     def conf_default(**kw):
#     def setUp(self, register_opts=None):


# Path: tests/test_pagerduty_notification.py
import json
import requests
import time
import queue
from unittest import mock
from monasca_notification import notification as m_notification
from monasca_notification.plugins import pagerduty_notifier
from tests import base

        headers = dict(headers)
        self.assertEqual(headers['content-type'], 'application/json')

        data = dict(json.loads(data))
        self.assertEqual(data['service_key'], 'ABCDEF')
        self.assertEqual(data['event_type'], 'trigger')
        self.assertEqual(data['description'], 'I am alarming!')
        self.assertEqual(data['client'], 'Monasca')
        self.assertEqual(data['client_url'], '')

        details = dict(data['details'])
        self.assertEqual(details['alarm_id'], '0')
        self.assertEqual(details['alarm_name'], 'test Alarm')
        self.assertEqual(details['current'], 'ALARM')
        self.assertEqual(details['message'], 'I am alarming!')

    def pagerduty_http_error(self, log_msg, http_response):
        self.assertRegex(log_msg, "Error with pagerduty request.")
        self.assertRegex(log_msg, "key=<ABCDEF>")
        self.assertRegex(log_msg, "response=%s" % http_response)

    @mock.patch('monasca_notification.plugins.pagerduty_notifier.requests')
    def notify(self, http_func, mock_requests):
        mock_log = mock.MagicMock()
        mock_log.warn = self.trap.put
        mock_log.error = self.trap.put
        mock_log.exception = self.trap.put

        mock_requests.post = http_func


        pagerduty = pagerduty_notifier.PagerdutyNotifier(mock_log)