|
5 | 5 |
|
6 | 6 | from vitals.conf import import_string, conf, DEFAULT_CHECKS
|
7 | 7 | from vitals.checks import DatabaseCheck, CacheCheck, StorageCheck, HTTPCheck
|
| 8 | +from vitals.checks import BaseHealthCheck |
8 | 9 | from vitals.views import run_checks
|
9 | 10 |
|
10 | 11 |
|
@@ -75,6 +76,12 @@ def test_http_check_passes(self, get_mock):
|
75 | 76 | check.run_check()
|
76 | 77 | self.assertFalse(check.errors)
|
77 | 78 |
|
| 79 | + @patch('vitals.checks.CacheCheck.check', side_effect=Exception) |
| 80 | + def test_check_unexecpted_exception(self, mock_check): |
| 81 | + check = CacheCheck(name='TestCacheCheck') |
| 82 | + check.run_check() |
| 83 | + self.assertEqual(len(check.errors), 1) |
| 84 | + |
78 | 85 |
|
79 | 86 | class TestViews(TestCase):
|
80 | 87 | def test_run_checks(self):
|
@@ -108,3 +115,22 @@ def test_jsonview_check_param_multiple(self):
|
108 | 115 | self.assertEqual(result['ok'], ['DatabaseCheck', 'CacheCheck'])
|
109 | 116 | self.assertNotIn('StorageCheck', result['ok'])
|
110 | 117 | self.assertNotIn('StorageCheck', result['failed'])
|
| 118 | + |
| 119 | + @patch('vitals.checks.CacheCheck.check', side_effect=Exception) |
| 120 | + def test_jsonview_check_fails(self, check_mock): |
| 121 | + result = self.client.get('/') |
| 122 | + self.assertEqual(len(result.json()['failed']), 1) |
| 123 | + self.assertEqual(len(result.json()['ok']), 2) |
| 124 | + self.assertEqual(result.status_code, 500) |
| 125 | + |
| 126 | + |
| 127 | +class BadCheck(BaseHealthCheck): |
| 128 | + pass |
| 129 | + |
| 130 | + |
| 131 | +class TestBadCheckImpl(TestCase): |
| 132 | + def test_check_has_no_check(self): |
| 133 | + bc = BadCheck(name='notgonnawork') |
| 134 | + bc.run_check() |
| 135 | + self.assertEqual(len(bc.errors), 1) |
| 136 | + self.assertIn('Must implement', bc.errors[0]) |
0 commit comments