-
Notifications
You must be signed in to change notification settings - Fork 88
/
Copy pathtests.py
46 lines (36 loc) · 2.13 KB
/
tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
from unittest import mock
import requests
from django.test import TestCase, override_settings
from django.urls import reverse
class QueryStatsAjaxTestCase(TestCase):
"""test the /monitor/ajax_queries_stats/ endpoint"""
@override_settings(GRAYLOG_DOMAIN='http://graylog')
@mock.patch('requests.get')
def test_monitor_queries_stats_ajax_error(self, mock_get):
"""The endpoint returns HTTP500 if the graylog endpoint returns an error"""
mock_get.return_value = requests.Response()
mock_get.return_value.status_code = 404
resp = self.client.get(reverse('monitor-queries-stats-ajax'))
self.assertEqual(resp.status_code, 500)
mock_get.assert_called_with('http://graylog/api/search/universal/relative/terms', auth=mock.ANY, params=mock.ANY)
@override_settings(GRAYLOG_DOMAIN='http://graylog')
@mock.patch('requests.get')
def test_monitor_queries_stats_ajax_bad_data(self, mock_get):
"""The endpoint returns HTTP500 if the graylog endpoint returns 200, but the data is not JSON"""
mock_get.return_value = requests.Response()
mock_get.return_value.status_code = 200
mock_get.return_value._content = b'<html>this is definitely not json</html>'
resp = self.client.get(reverse('monitor-queries-stats-ajax'))
self.assertEqual(resp.status_code, 500)
mock_get.assert_called_with('http://graylog/api/search/universal/relative/terms', auth=mock.ANY, params=mock.ANY)
@override_settings(GRAYLOG_DOMAIN='http://graylog')
@mock.patch('requests.get')
def test_monitor_queries_stats_ajax_ok(self, mock_get):
"""The endpoint returns valid data if graylog returns valid data"""
mock_get.return_value = requests.Response()
mock_get.return_value.status_code = 200
mock_get.return_value._content = b'{"response": "ok"}'
resp = self.client.get(reverse('monitor-queries-stats-ajax'))
self.assertEqual(resp.status_code, 200)
self.assertJSONEqual(resp.content, {'response': 'ok'})
mock_get.assert_called_with('http://graylog/api/search/universal/relative/terms', auth=mock.ANY, params=mock.ANY)