""" Test the heartbeat """ import json from django.core.urlresolvers import reverse from django.db.utils import DatabaseError from django.test.client import Client from django.test.testcases import TestCase from mock import patch from xmodule.exceptions import HeartbeatFailure @patch('heartbeat.views.modulestore') class HeartbeatTestCase(TestCase): """ Test the heartbeat """ def setUp(self): self.client = Client() self.heartbeat_url = reverse('heartbeat') return super(HeartbeatTestCase, self).setUp() def test_success(self, mock_modulestore): # pylint: disable=unused-argument response = self.client.get(self.heartbeat_url) self.assertEqual(response.status_code, 200) @patch('heartbeat.views.connection') def test_sql_fail(self, mock_connection, mock_modulestore): # pylint: disable=unused-argument mock_connection.cursor.return_value.execute.side_effect = DatabaseError response = self.client.get(self.heartbeat_url) self.assertEqual(response.status_code, 503) response_dict = json.loads(response.content) self.assertIn('SQL', response_dict) def test_modulestore_fail(self, mock_modulestore): # pylint: disable=unused-argument mock_modulestore.return_value.heartbeat.side_effect = HeartbeatFailure('msg', 'service') response = self.client.get(self.heartbeat_url) self.assertEqual(response.status_code, 503)