Esempio n. 1
0
 def test_login_not_required_with_authorization_header_dashes_in_token(self):
     # Have to manually reload settings here because override_settings
     # happens after self.setUp(), but before self.tearDown()
     reload_settings()
     request = RequestFactory().get('/', HTTP_AUTHORIZATION='WATCHMAN-TOKEN Token="123-456-ABCD"')
     response = views.status(request)
     self.assertEqual(response.status_code, 200)
Esempio n. 2
0
 def test_response_version_header(self):
     # Have to manually reload settings here because override_settings
     # happens after self.setUp()
     reload_settings()
     request = RequestFactory().get('/')
     response = views.status(request)
     self.assertTrue(response.has_header('X-Watchman-Version'))
Esempio n. 3
0
 def test_login_fails_with_invalid_authorization_header(self):
     # Have to manually reload settings here because override_settings
     # happens after self.setUp(), but before self.tearDown()
     reload_settings()
     request = RequestFactory().get('/', HTTP_AUTHORIZATION='WATCHMAN-TOKEN Token="12345"')
     response = views.status(request)
     self.assertEqual(response.status_code, 403)
Esempio n. 4
0
 def test_response_version_header(self):
     # Have to manually reload settings here because override_settings
     # happens after self.setUp()
     reload_settings()
     request = RequestFactory().get('/')
     response = views.status(request)
     self.assertTrue(response.has_header('X-Watchman-Version'))
Esempio n. 5
0
def health_check_status(request):
    """Modify django-watchman view to remove error / stacktrace output.

    Available django-watchman views:
    watchman.views.status
    watchman.views.bare_status
    """
    # if health endpoint not enabled, return 404 response
    if not settings.ENABLE_HEALTHZ_ENDPOINT:
        raise Http404("Healthz endpoint not enabled.")

    # set anonymous user for requests to health endpoint
    # caluma expects user to be set on requests
    request.user = AnonymousUser()

    # Get view response from django-watchman
    response = watchman_views.status(request)
    json_data = json.loads(response.content.decode("utf-8"))

    # Remove unwanted keys e.g. 'error', 'stacktrace'
    if response.status_code == watchman_settings.WATCHMAN_ERROR_CODE:
        _remove_keys(json_data, ["error", "stacktrace"])
        return JsonResponse(json_data, status=response.status_code)

    return response
Esempio n. 6
0
 def test_login_fails_with_invalid_authorization_header(self):
     # Have to manually reload settings here because override_settings
     # happens after self.setUp(), but before self.tearDown()
     reload_settings()
     request = RequestFactory().get(
         '/', HTTP_AUTHORIZATION='WATCHMAN-TOKEN Token="12345"')
     response = views.status(request)
     self.assertEqual(response.status_code, 403)
Esempio n. 7
0
 def test_login_not_required_with_authorization_header_dashes_in_token(
         self):
     # Have to manually reload settings here because override_settings
     # happens after self.setUp(), but before self.tearDown()
     reload_settings()
     request = RequestFactory().get(
         '/', HTTP_AUTHORIZATION='WATCHMAN-TOKEN Token="123-456-ABCD"')
     response = views.status(request)
     self.assertEqual(response.status_code, 200)
Esempio n. 8
0
    def test_version_header_not_included_when_token_auth_fails(self):
        # Have to manually reload settings here because override_settings
        # happens after self.setUp(), but before self.tearDown()
        reload_settings()
        request = RequestFactory().get('/')

        response = views.status(request)
        self.assertEqual(response.status_code, 403)
        self.assertFalse(response.has_header('X-Watchman-Version'))
Esempio n. 9
0
    def test_response_when_login_required(self):
        # Have to manually reload settings here because override_settings
        # happens after self.setUp()
        reload_settings()
        request = RequestFactory().get('/')
        request.user = AuthenticatedUser()

        response = views.status(request)
        self.assertEqual(response.status_code, 200)
Esempio n. 10
0
    def test_version_header_not_included_when_token_auth_fails(self):
        # Have to manually reload settings here because override_settings
        # happens after self.setUp(), but before self.tearDown()
        reload_settings()
        request = RequestFactory().get('/')

        response = views.status(request)
        self.assertEqual(response.status_code, 403)
        self.assertFalse(response.has_header('X-Watchman-Version'))
Esempio n. 11
0
    def test_response_when_login_required(self):
        # Have to manually reload settings here because override_settings
        # happens after self.setUp()
        reload_settings()
        request = RequestFactory().get('/')
        request.user = AuthenticatedUser()

        response = views.status(request)
        self.assertEqual(response.status_code, 200)
Esempio n. 12
0
 def test_response_is_404_for_checked_and_skipped_check(self):
     # This is a bit of a weird one, basically if you explicitly include and
     # skip the same check, you should get back a 404 as they cancel each
     # other out
     request = RequestFactory().get('/', data={
         'check': 'watchman.checks.email',
         'skip': 'watchman.checks.email',
     })
     response = views.status(request)
     self.assertEqual(response.status_code, 404)
Esempio n. 13
0
    def test_response_contains_expected_checks(self):
        expected_checks = ['caches', 'databases', 'storage', ]
        request = RequestFactory().get('/')
        response = views.status(request)

        if PYTHON_VERSION == 2:
            content = json.loads(response.content)
            self.assertItemsEqual(expected_checks, content.keys())
        else:
            content = json.loads(response.content.decode('utf-8'))
            self.assertCountEqual(expected_checks, content.keys())
Esempio n. 14
0
    def test_response_contains_expected_checks(self):
        expected_checks = [
            'caches',
            'databases',
            'storage',
        ]
        request = RequestFactory().get('/')
        response = views.status(request)

        content = json.loads(response.content.decode('utf-8'))
        self.assertCountEqual(expected_checks, content.keys())
Esempio n. 15
0
    def test_login_fails_with_invalid_get_param(self):
        # Have to manually reload settings here because override_settings
        # happens after self.setUp(), but before self.tearDown()
        reload_settings()
        request = RequestFactory().get('/', data={
            'watchman-token': '12345',
        })

        response = views.status(request)

        self.assertEqual(response.status_code, 403)
Esempio n. 16
0
    def test_login_fails_with_invalid_get_param(self):
        # Have to manually reload settings here because override_settings
        # happens after self.setUp(), but before self.tearDown()
        reload_settings()
        request = RequestFactory().get('/', data={
            'watchman-token': '12345',
        })

        response = views.status(request)

        self.assertEqual(response.status_code, 403)
Esempio n. 17
0
    def test_login_not_required(self):
        # Have to manually reload settings here because override_settings
        # happens after self.setUp(), but before self.tearDown()
        reload_settings()
        request = RequestFactory().get('/', data={
            'watchman-token': 'ABCDE',
        })

        response = views.status(request)

        self.assertEqual(response.status_code, 200)
Esempio n. 18
0
 def test_response_is_404_for_checked_and_skipped_check(self):
     # This is a bit of a weird one, basically if you explicitly include and
     # skip the same check, you should get back a 404 as they cancel each
     # other out
     request = RequestFactory().get('/',
                                    data={
                                        'check': 'watchman.checks.email',
                                        'skip': 'watchman.checks.email',
                                    })
     response = views.status(request)
     self.assertEqual(response.status_code, 404)
Esempio n. 19
0
    def test_login_not_required(self):
        # Have to manually reload settings here because override_settings
        # happens after self.setUp(), but before self.tearDown()
        reload_settings()
        request = RequestFactory().get('/', data={
            'watchman-token': 'ABCDE',
        })

        response = views.status(request)

        self.assertEqual(response.status_code, 200)
Esempio n. 20
0
    def test_response_only_single_check(self, patched_check_databases):
        patched_check_databases.return_value = []
        request = RequestFactory().get('/',
                                       data={
                                           'check':
                                           'watchman.checks.databases',
                                       })
        response = views.status(request)
        self.assertEqual(response.status_code, 200)

        content = json.loads(response.content.decode('utf-8'))
        self.assertCountEqual({'databases': []}, content)
Esempio n. 21
0
    def test_response_404_when_none_specified(self):
        request = RequestFactory().get('/', data={
            'check': '',
        })
        response = views.status(request)
        self.assertEqual(response.status_code, 404)

        content = json.loads(response.content.decode('utf-8'))
        self.assertCountEqual({
            'message': 'No checks found',
            'error': 404
        }, content)
Esempio n. 22
0
    def test_response_skipped_checks(self):
        expected_checks = [
            'caches',
            'storage',
        ]
        request = RequestFactory().get('/',
                                       data={
                                           'skip': 'watchman.checks.databases',
                                       })
        response = views.status(request)

        content = json.loads(response.content.decode('utf-8'))
        self.assertCountEqual(expected_checks, content.keys())
Esempio n. 23
0
    def test_response_skipped_checks(self):
        expected_checks = ['caches', 'storage', 'elastics', ]
        request = RequestFactory().get('/', data={
            'skip': 'watchman.checks.databases',
        })
        response = views.status(request)

        if PYTHON_VERSION == 2:
            content = json.loads(response.content)
            self.assertItemsEqual(expected_checks, content.keys())
        else:
            content = json.loads(response.content.decode('utf-8'))
            self.assertCountEqual(expected_checks, content.keys())
Esempio n. 24
0
    def test_response_404_when_none_specified(self):
        request = RequestFactory().get('/', data={
            'check': '',
        })
        response = views.status(request)
        self.assertEqual(response.status_code, 404)

        if PYTHON_VERSION == 2:
            content = json.loads(response.content)
            self.assertItemsEqual({'message': 'No checks found', 'error': 404}, content)
        else:
            content = json.loads(response.content.decode('utf-8'))
            self.assertCountEqual({'message': 'No checks found', 'error': 404}, content)
Esempio n. 25
0
    def test_response_only_single_check(self, patched_check_databases):
        patched_check_databases.return_value = []
        request = RequestFactory().get('/', data={
            'check': 'watchman.checks.databases',
        })
        response = views.status(request)
        self.assertEqual(response.status_code, 200)

        if PYTHON_VERSION == 2:
            content = json.loads(response.content)
            self.assertItemsEqual({'databases': []}, content)
        else:
            content = json.loads(response.content.decode('utf-8'))
            self.assertCountEqual({'databases': []}, content)
Esempio n. 26
0
 def test_default_error_code(self, patched_check_databases):
     reload_settings()
     # Fake a DB error, ensure we get our error code
     patched_check_databases.return_value = [{
         "foo": {
             "ok": False,
             "error": "Fake DB Error",
             "stacktrace": "Fake DB Stack Trace",
         },
     }]
     request = RequestFactory().get('/', data={
         'check': 'watchman.checks.databases',
     })
     response = views.status(request)
     self.assertEqual(response.status_code, 500)
Esempio n. 27
0
    def test_response_contains_expected_checks(self):
        expected_checks = [
            'caches',
            'databases',
            'storage',
            'elastics',
        ]
        request = RequestFactory().get('/')
        response = views.status(request)

        if PYTHON_VERSION == 2:
            content = json.loads(response.content)
            self.assertItemsEqual(expected_checks, content.keys())
        else:
            content = json.loads(response.content.decode('utf-8'))
            self.assertCountEqual(expected_checks, content.keys())
Esempio n. 28
0
 def test_default_error_code(self, patched_check_databases):
     reload_settings()
     # Fake a DB error, ensure we get our error code
     patched_check_databases.return_value = [{
         "foo": {
             "ok": False,
             "error": "Fake DB Error",
             "stacktrace": "Fake DB Stack Trace",
         },
     }]
     request = RequestFactory().get('/',
                                    data={
                                        'check':
                                        'watchman.checks.databases',
                                    })
     response = views.status(request)
     self.assertEqual(response.status_code, 500)
Esempio n. 29
0
 def test_response_content_type_json(self, patched_check_databases):
     patched_check_databases.return_value = []
     response = views.status("")
     self.assertEqual(response["Content-Type"], "application/json")
Esempio n. 30
0
 def test_response_version_header(self):
     request = RequestFactory().get('/')
     response = views.status(request)
     self.assertTrue(response.has_header('X-Watchman-Version'))
Esempio n. 31
0
 def test_response_version_header_missing_by_default(self):
     request = RequestFactory().get('/')
     response = views.status(request)
     self.assertFalse(response.has_header('X-Watchman-Version'))
Esempio n. 32
0
 def test_response_content_type_json(self):
     request = RequestFactory().get('/')
     response = views.status(request)
     self.assertEqual(response['Content-Type'], 'application/json')
Esempio n. 33
0
 def test_response_content_type_json(self):
     request = RequestFactory().get('/')
     response = views.status(request)
     self.assertEqual(response['Content-Type'], 'application/json')
Esempio n. 34
0
 def test_response_contains_expected_checks(self, patched_check_databases):
     expected_checks = ["caches", "databases"]
     patched_check_databases.return_value = []
     response = views.status("")
     content = json.loads(response.content)
     self.assertItemsEqual(expected_checks, content.keys())
Esempio n. 35
0
 def test_response_version_header(self):
     request = RequestFactory().get('/')
     response = views.status(request)
     self.assertTrue(response.has_header('X-Watchman-Version'))
Esempio n. 36
0
 def test_response_version_header_missing_by_default(self):
     request = RequestFactory().get('/')
     response = views.status(request)
     self.assertFalse(response.has_header('X-Watchman-Version'))