Beispiel #1
0
    def setUp(self):
        self.vumi_helper = self.add_helper(DjangoVumiApiHelper())
        self.diamondash_api = FakeDiamondashApiClient()

        layout = ToyDashboardLayout([{
            'type': 'lvalue',
            'time_range': '1d',
            'title': 'Spam (24h)',
            'target': {
                'metric_type': 'foo',
                'name': 'spam',
            },
        }, {
            'type': 'lvalue',
            'time_range': '1d',
            'title': 'Ham (24h)',
            'target': {
                'metric_type': 'foo',
                'name': 'ham',
            },
        }])

        self.monkey_patch(client, 'get_diamondash_api',
                          lambda: self.diamondash_api)

        self.dashboard = Dashboard('ackbar-the-dashboard', layout)
Beispiel #2
0
class TestConversationReportsView(BaseConversationViewTestCase):
    def setUp(self):
        super(TestConversationReportsView, self).setUp()
        self.diamondash_api = FakeDiamondashApiClient()

        self.error_log = []
        logger = logging.getLogger('go.conversation.view_definition')

        def log_error(e, exc_info):
            exc_type, exc_value, exc_traceback = exc_info
            self.assertEqual(e, exc_value)
            self.error_log.append(unicode(e))

        self.monkey_patch(logger, 'error', log_error)

        self.monkey_patch(dashboard_client, 'get_diamondash_api',
                          lambda: self.diamondash_api)

    def test_get_dashboard(self):
        self.diamondash_api.set_response({'happy': 'dashboard'})

        conv = self.user_helper.create_conversation(u'dummy')
        response = self.client.get(self.get_view_url(conv, 'reports'))

        [dd_request] = self.diamondash_api.get_requests()
        raw_dashboard = dd_request['data']

        self.assertEqual(raw_dashboard['name'],
                         "go.conversations.%s" % conv.key)

        self.assertTrue('widgets' in raw_dashboard)

        self.assertEqual(json.loads(response.context['dashboard_config']),
                         {'happy': 'dashboard'})

    def test_get_dashboard_for_sync_error_handling(self):
        self.diamondash_api.set_error_response(400, ':(')

        conv = self.user_helper.create_conversation(u'dummy')
        response = self.client.get(self.get_view_url(conv, 'reports'))

        self.assertEqual(self.error_log, [
            'Dashboard sync failed: '
            '400: {"message": ":(", "success": false}'
        ])

        self.assertEqual(response.context['dashboard_config'], None)

    def test_get_dashboard_for_parse_error_handling(self):
        conv = self.user_helper.create_conversation(u'dummy')

        def bad_add_entity(*a, **kw):
            raise DashboardParseError(':(')

        self.monkey_patch(DashboardLayout, 'add_entity', bad_add_entity)
        response = self.client.get(self.get_view_url(conv, 'reports'))

        self.assertEqual(self.error_log, [':('])
        self.assertEqual(response.context['dashboard_config'], None)
Beispiel #3
0
class TestDashboard(GoDjangoTestCase):
    def setUp(self):
        self.vumi_helper = self.add_helper(DjangoVumiApiHelper())
        self.diamondash_api = FakeDiamondashApiClient()

        layout = ToyDashboardLayout([{
            'type': 'lvalue',
            'time_range': '1d',
            'title': 'Spam (24h)',
            'target': {
                'metric_type': 'foo',
                'name': 'spam',
            },
        }, {
            'type': 'lvalue',
            'time_range': '1d',
            'title': 'Ham (24h)',
            'target': {
                'metric_type': 'foo',
                'name': 'ham',
            },
        }])

        self.monkey_patch(client, 'get_diamondash_api',
                          lambda: self.diamondash_api)

        self.dashboard = Dashboard('ackbar-the-dashboard', layout)

    def test_sync(self):
        self.diamondash_api.set_response({'happy': 'config'})

        self.dashboard.sync()

        [request] = self.diamondash_api.get_requests()

        self.assertEqual(
            request['data'], {
                'name':
                'ackbar-the-dashboard',
                'widgets': [{
                    'type': 'lvalue',
                    'time_range': '1d',
                    'title': 'Spam (24h)',
                    'target': 'foo.spam',
                }, {
                    'type': 'lvalue',
                    'time_range': '1d',
                    'title': 'Ham (24h)',
                    'target': 'foo.ham',
                }]
            })
        self.assertEqual(self.dashboard.get_config(), {'happy': 'config'})

    def test_sync_for_error_responses(self):
        self.diamondash_api.set_error_response(404, ':(')
        self.assertRaises(DashboardSyncError, self.dashboard.sync)

    def get_config_before_sync(self):
        self.assertRaises(self.dashboard.get_config, DashboardError)
Beispiel #4
0
    def setUp(self):
        self.vumi_helper = self.add_helper(DjangoVumiApiHelper())
        self.user_helper = self.vumi_helper.make_django_user()
        self.client = self.vumi_helper.get_client()

        self.diamondash_api = FakeDiamondashApiClient()
        self.monkey_patch(client, 'get_diamondash_api',
                          lambda: self.diamondash_api)
Beispiel #5
0
    def test_replace_dashboard(self):
        client = FakeDiamondashApiClient()
        client.replace_dashboard({'some': 'dashboard'})

        self.assertEqual(client.get_requests(), [{
            'method': 'put',
            'url': 'dashboards',
            'data': {'some': 'dashboard'},
        }])
Beispiel #6
0
class TestDashboard(GoDjangoTestCase):
    def setUp(self):
        self.vumi_helper = self.add_helper(DjangoVumiApiHelper())
        self.diamondash_api = FakeDiamondashApiClient()

        layout = ToyDashboardLayout([{
            'type': 'lvalue',
            'time_range': '1d',
            'title': 'Spam (24h)',
            'target': {
                'metric_type': 'foo',
                'name': 'spam',
            },
        }, {
            'type': 'lvalue',
            'time_range': '1d',
            'title': 'Ham (24h)',
            'target': {
                'metric_type': 'foo',
                'name': 'ham',
            },
        }])

        self.monkey_patch(
            client, 'get_diamondash_api', lambda: self.diamondash_api)

        self.dashboard = Dashboard('ackbar-the-dashboard', layout)

    def test_sync(self):
        self.diamondash_api.set_response({'happy': 'config'})

        self.dashboard.sync()

        [request] = self.diamondash_api.get_requests()

        self.assertEqual(request['data'], {
            'name': 'ackbar-the-dashboard',
            'widgets': [{
                'type': 'lvalue',
                'time_range': '1d',
                'title': 'Spam (24h)',
                'target': 'foo.spam',
            }, {
                'type': 'lvalue',
                'time_range': '1d',
                'title': 'Ham (24h)',
                'target': 'foo.ham',
            }]
        })
        self.assertEqual(self.dashboard.get_config(), {'happy': 'config'})

    def test_sync_for_error_responses(self):
        self.diamondash_api.set_error_response(404, ':(')
        self.assertRaises(DashboardSyncError, self.dashboard.sync)

    def get_config_before_sync(self):
        self.assertRaises(self.dashboard.get_config, DashboardError)
Beispiel #7
0
    def test_replace_dashboard(self):
        client = FakeDiamondashApiClient()
        client.replace_dashboard({'some': 'dashboard'})

        self.assertEqual(client.get_requests(), [{
            'method': 'put',
            'url': 'dashboards',
            'data': {
                'some': 'dashboard'
            },
        }])
Beispiel #8
0
    def setUp(self):
        self.vumi_helper = self.add_helper(DjangoVumiApiHelper())
        self.diamondash_api = FakeDiamondashApiClient()

        layout = ToyDashboardLayout([{
            'type': 'lvalue',
            'time_range': '1d',
            'title': 'Spam (24h)',
            'target': {
                'metric_type': 'foo',
                'name': 'spam',
            },
        }, {
            'type': 'lvalue',
            'time_range': '1d',
            'title': 'Ham (24h)',
            'target': {
                'metric_type': 'foo',
                'name': 'ham',
            },
        }])

        self.monkey_patch(
            client, 'get_diamondash_api', lambda: self.diamondash_api)

        self.dashboard = Dashboard('ackbar-the-dashboard', layout)
Beispiel #9
0
    def setUp(self):
        super(TestConversationReportsView, self).setUp()
        self.diamondash_api = FakeDiamondashApiClient()

        self.error_log = []
        logger = logging.getLogger('go.conversation.view_definition')

        def log_error(e, exc_info):
            exc_type, exc_value, exc_traceback = exc_info
            self.assertEqual(e, exc_value)
            self.error_log.append(unicode(e))

        self.monkey_patch(logger, 'error', log_error)

        self.monkey_patch(dashboard_client, 'get_diamondash_api',
                          lambda: self.diamondash_api)
Beispiel #10
0
    def setUp(self):
        self.vumi_helper = self.add_helper(DjangoVumiApiHelper())
        self.user_helper = self.vumi_helper.make_django_user()
        self.client = self.vumi_helper.get_client()

        self.diamondash_api = FakeDiamondashApiClient()
        self.monkey_patch(
            client, 'get_diamondash_api', lambda: self.diamondash_api)
Beispiel #11
0
    def setUp(self):
        super(TestConversationReportsView, self).setUp()
        self.diamondash_api = FakeDiamondashApiClient()

        self.error_log = []
        logger = logging.getLogger('go.conversation.view_definition')

        def log_error(e, exc_info):
            exc_type, exc_value, exc_traceback = exc_info
            self.assertEqual(e, exc_value)
            self.error_log.append(unicode(e))

        self.monkey_patch(logger, 'error', log_error)

        self.monkey_patch(
            dashboard_client,
            'get_diamondash_api',
            lambda: self.diamondash_api)
Beispiel #12
0
class DashboardViewsTestCase(GoDjangoTestCase):
    def setUp(self):
        self.vumi_helper = self.add_helper(DjangoVumiApiHelper())
        self.user_helper = self.vumi_helper.make_django_user()
        self.client = self.vumi_helper.get_client()

        self.diamondash_api = FakeDiamondashApiClient()
        self.monkey_patch(client, 'get_diamondash_api',
                          lambda: self.diamondash_api)

    def test_api_proxy(self):
        self.diamondash_api.set_raw_response(json.dumps({'bar': 'baz'}), 201)
        resp = self.client.get('/diamondash/api/foo')

        self.assertEqual(self.diamondash_api.get_requests(), [{
            'url': '/foo',
            'content': '',
            'method': 'GET',
        }])

        self.assertEqual(resp.content, json.dumps({'bar': 'baz'}))
        self.assertEqual(resp.status_code, 201)

    def test_api_proxy_error(self):
        self.diamondash_api.set_error_response(404, "Bad horse")
        resp = self.client.get('/diamondash/api/foo')

        self.assertEqual(self.diamondash_api.get_requests(), [{
            'url': '/foo',
            'content': '',
            'method': 'GET',
        }])

        self.assertEqual(
            resp.content,
            json.dumps({
                "message": "Bad horse",
                "success": False,
            }))
        self.assertEqual(resp.status_code, 404)
Beispiel #13
0
class DashboardViewsTestCase(GoDjangoTestCase):
    def setUp(self):
        self.vumi_helper = self.add_helper(DjangoVumiApiHelper())
        self.user_helper = self.vumi_helper.make_django_user()
        self.client = self.vumi_helper.get_client()

        self.diamondash_api = FakeDiamondashApiClient()
        self.monkey_patch(
            client, 'get_diamondash_api', lambda: self.diamondash_api)

    def test_api_proxy(self):
        self.diamondash_api.set_raw_response(json.dumps({'bar': 'baz'}), 201)
        resp = self.client.get('/diamondash/api/foo')

        self.assertEqual(self.diamondash_api.get_requests(), [{
            'url': '/foo',
            'content': '',
            'method': 'GET',
        }])

        self.assertEqual(resp.content, json.dumps({'bar': 'baz'}))
        self.assertEqual(resp.status_code, 201)

    def test_api_proxy_error(self):
        self.diamondash_api.set_error_response(404, "Bad horse")
        resp = self.client.get('/diamondash/api/foo')

        self.assertEqual(self.diamondash_api.get_requests(), [{
            'url': '/foo',
            'content': '',
            'method': 'GET',
        }])

        self.assertEqual(resp.content, json.dumps({
            "message": "Bad horse",
            "success": False,
        }))
        self.assertEqual(resp.status_code, 404)
Beispiel #14
0
class TestConversationReportsView(BaseConversationViewTestCase):
    def setUp(self):
        super(TestConversationReportsView, self).setUp()
        self.diamondash_api = FakeDiamondashApiClient()

        self.error_log = []
        logger = logging.getLogger('go.conversation.view_definition')

        def log_error(e, exc_info):
            exc_type, exc_value, exc_traceback = exc_info
            self.assertEqual(e, exc_value)
            self.error_log.append(unicode(e))

        self.monkey_patch(logger, 'error', log_error)

        self.monkey_patch(
            dashboard_client,
            'get_diamondash_api',
            lambda: self.diamondash_api)

    def test_get_dashboard(self):
        self.diamondash_api.set_response({'happy': 'dashboard'})

        conv = self.user_helper.create_conversation(u'dummy')
        response = self.client.get(self.get_view_url(conv, 'reports'))

        [dd_request] = self.diamondash_api.get_requests()
        raw_dashboard = dd_request['data']

        self.assertEqual(
            raw_dashboard['name'],
            "go.conversations.%s" % conv.key)

        self.assertTrue('widgets' in raw_dashboard)

        self.assertEqual(
            json.loads(response.context['dashboard_config']),
            {'happy': 'dashboard'})

    def test_get_dashboard_for_sync_error_handling(self):
        self.diamondash_api.set_error_response(400, ':(')

        conv = self.user_helper.create_conversation(u'dummy')
        response = self.client.get(self.get_view_url(conv, 'reports'))

        self.assertEqual(
            self.error_log,
            ['Dashboard sync failed: '
             '400: {"message": ":(", "success": false}'])

        self.assertEqual(response.context['dashboard_config'], None)

    def test_get_dashboard_for_parse_error_handling(self):
        conv = self.user_helper.create_conversation(u'dummy')

        def bad_add_entity(*a, **kw):
            raise DashboardParseError(':(')

        self.monkey_patch(DashboardLayout, 'add_entity', bad_add_entity)
        response = self.client.get(self.get_view_url(conv, 'reports'))

        self.assertEqual(self.error_log, [':('])
        self.assertEqual(response.context['dashboard_config'], None)