def test_gather_sample_200_success_long_body_is_truncated(self): url = "http://%s:%s/200_long" % ( self.mock_http_server_thread.host, self.mock_http_server_thread.port, ) monitor_config = { "module": "shell_monitor", "url": url, "request_method": "GET", "max_characters": 10, } mock_logger = mock.Mock() monitor = UrlMonitor(monitor_config, mock_logger) monitor.gather_sample() call_args_list = mock_logger.emit_value.call_args_list[0] call_args = call_args_list[0] call_kwargs = call_args_list[1] self.assertEqual(mock_logger.error.call_count, 0) self.assertEqual(call_args[0], "response") self.assertEqual(call_args[1], "a" * 10 + "...") self.assertEqual(call_kwargs["extra_fields"]["url"], url) self.assertEqual(call_kwargs["extra_fields"]["status"], 200) self.assertEqual(call_kwargs["extra_fields"]["request_method"], "GET")
def test_get_request_no_headers(self): mock_logger = mock.MagicMock() config_data = { 'url': 'fooUrl', 'request_method': 'GET', 'request_data': None, 'request_headers': [], 'module': self.module } config = MonitorConfig(content=config_data) url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger) actual_request = url_monitor.build_request() self.assertEqual(actual_request.get_method(), 'GET') self.assertFalse(actual_request.has_data()) self.assertEqual(actual_request.header_items(), [])
def test_get_request_no_headers(self): mock_logger = mock.MagicMock() config_data = { "url": "http://fooUrl", "request_method": "GET", "request_data": None, "request_headers": [], "module": self.module, } config = MonitorConfig(content=config_data) url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger) actual_request = url_monitor.build_request() self.assertEqual(actual_request.get_method(), "GET") self.assertFalse(actual_request.data is not None) self.assertEqual(actual_request.header_items(), [])
def test_get_request_no_headers(self): mock_logger = mock.MagicMock() config_data = { 'url': 'fooUrl', 'request_method': 'GET', 'request_data': None, 'request_headers': [], 'module': self.module } config = MonitorConfig(content=config_data) url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger) actual_request = url_monitor.build_request() self.assertEqual(actual_request.get_method(), 'GET') self.assertFalse(actual_request.has_data()) self.assertEqual(actual_request.header_items(), [])
def test_post_request_with_data(self): mock_logger = mock.MagicMock() config_data = { 'url': 'fooUrl', 'request_method': 'POST', 'request_data': '{fakejsonthatisnotlegit}', 'request_headers': self.legit_headers, 'module': self.module } config = MonitorConfig(content=config_data) url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger) actual_request = url_monitor.build_request() self.assertEqual(actual_request.get_method(), 'POST') self.assertEqual(actual_request.data, '{fakejsonthatisnotlegit}') self.assertEqual(actual_request.header_items(), [('Header_foo', 'foo'), ('Header_bar', 'bar')])
def test_get_request_with_headers(self): mock_logger = mock.MagicMock() config_data = { "url": "http://fooUrl", "request_method": "GET", "request_data": None, "request_headers": self.legit_headers, "module": self.module, } config = MonitorConfig(content=config_data) url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger) actual_request = url_monitor.build_request() self.assertEqual(actual_request.get_method(), "GET") self.assertFalse(actual_request.data is not None) self.assertEqual( sorted(actual_request.header_items()), sorted([("Header_foo", "foo"), ("Header_bar", "bar")]), )
def test_post_request_with_data(self): mock_logger = mock.MagicMock() config_data = { 'url': 'fooUrl', 'request_method': 'POST', 'request_data': '{fakejsonthatisnotlegit}', 'request_headers': self.legit_headers, 'module': self.module } config = MonitorConfig(content=config_data) url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger) actual_request = url_monitor.build_request() self.assertEqual(actual_request.get_method(), 'POST') self.assertEqual(actual_request.data, '{fakejsonthatisnotlegit}') self.assertEqual( actual_request.header_items(), [('Header_foo', 'foo'), ('Header_bar', 'bar')] )
def test_post_request_with_data(self): mock_logger = mock.MagicMock() config_data = { "url": "fooUrl", "request_method": "POST", "request_data": "{fakejsonthatisnotlegit}", "request_headers": self.legit_headers, "module": self.module, } config = MonitorConfig(content=config_data) url_monitor = UrlMonitor(monitor_config=config, logger=mock_logger) actual_request = url_monitor.build_request() self.assertEqual(actual_request.get_method(), "POST") self.assertEqual(actual_request.data, "{fakejsonthatisnotlegit}") self.assertEqual( actual_request.header_items(), [("Header_foo", "foo"), ("Header_bar", "bar")], )
def test_gather_sample(self): monitor_config = { "module": "shell_monitor", "url": "https://www.scalyr.com", "request_method": "GET", "max_characters": 100, } mock_logger = mock.Mock() monitor = UrlMonitor(monitor_config, mock_logger) monitor.gather_sample() call_args_list = mock_logger.emit_value.call_args_list[0] call_args = call_args_list[0] call_kwargs = call_args_list[1] self.assertEqual(call_args[0], "response") self.assertTrue(len(call_args[1]) >= 10) self.assertEqual(call_kwargs["extra_fields"]["url"], "https://www.scalyr.com") self.assertEqual(call_kwargs["extra_fields"]["status"], 200) self.assertEqual(call_kwargs["extra_fields"]["request_method"], "GET")
def test_gather_sample_200_success_multiline(self): url = "http://%s:%s/200_multiline" % ( self.mock_http_server_thread.host, self.mock_http_server_thread.port, ) # log_all_lines=False (only first line should be logged) monitor_config = { "module": "shell_monitor", "url": url, "request_method": "GET", "max_characters": 100, } mock_logger = mock.Mock() monitor = UrlMonitor(monitor_config, mock_logger) monitor.gather_sample() call_args_list = mock_logger.emit_value.call_args_list[0] call_args = call_args_list[0] call_kwargs = call_args_list[1] self.assertEqual(mock_logger.error.call_count, 0) self.assertEqual(call_args[0], "response") self.assertEqual(call_args[1], "line 1") self.assertEqual(call_kwargs["extra_fields"]["url"], url) self.assertEqual(call_kwargs["extra_fields"]["status"], 200) self.assertEqual(call_kwargs["extra_fields"]["request_method"], "GET") # log_all_lines=True (all lines should be logged) monitor_config = { "module": "shell_monitor", "url": url, "request_method": "GET", "max_characters": 100, "log_all_lines": True, } mock_logger = mock.Mock() monitor = UrlMonitor(monitor_config, mock_logger) monitor.gather_sample() call_args_list = mock_logger.emit_value.call_args_list[0] call_args = call_args_list[0] call_kwargs = call_args_list[1] self.assertEqual(mock_logger.error.call_count, 0) self.assertEqual(call_args[0], "response") self.assertEqual(call_args[1], "line 1\nline 2\nline 3") self.assertEqual(call_kwargs["extra_fields"]["url"], url) self.assertEqual(call_kwargs["extra_fields"]["status"], 200) self.assertEqual(call_kwargs["extra_fields"]["request_method"], "GET")
def test_malformed_headers(self): mock_logger = mock.MagicMock() config_data = { 'url': 'fooUrl', 'request_method': 'POST', 'request_data': '{fakejsonthatisnotlegit}', 'request_headers': 'not legit headers', 'module': self.module } config = MonitorConfig(content=config_data) with self.assertRaises(Exception): _ = UrlMonitor(monitor_config=config, logger=mock_logger)
def test_malformed_headers(self): mock_logger = mock.MagicMock() config_data = { "url": "fooUrl", "request_method": "POST", "request_data": "{fakejsonthatisnotlegit}", "request_headers": "not legit headers", "module": self.module, } config = MonitorConfig(content=config_data) self.assertRaises( Exception, lambda: UrlMonitor(monitor_config=config, logger=mock_logger))