def setUp(self): import flask if flask.__version__.startswith('0.12') and PYTHON_VERSION != ( 2, 6) and PYTHON_VERSION != (2, 7) and PYTHON_VERSION < (3, 3): self.skipTest( 'Flask 0.12 requires Python 2.6, 2.7 or Python3 > 3.2') if flask.__version__.startswith('1.0') and PYTHON_VERSION != ( 2, 7) and PYTHON_VERSION < (3, 4): self.skipTest('Flask 1.0 requires Python 2.7 or Python3 > 3.3') if flask.__version__.startswith('1.1') and PYTHON_VERSION != ( 2, 7) and PYTHON_VERSION < (3, 5): self.skipTest('Flask 1.1 requires Python 2.7 or Python3 > 3.4') self.config = Configuration() self.app = flask.Flask(__name__) self.app.secret_key = 'safe' self.app.config.update({'HONEYBADGER_ENVIRONMENT': 'production_flask'}) self.plugin = FlaskPlugin() @self.app.route('/test', methods=['GET', 'POST', 'PUT']) def foo(): return 'bar'
def setUp(self): if PY3_2: self.skipTest( 'Flask requires Python3 > 3.2. More info at http://flask.pocoo.org/docs/0.12/python3/#requirements' ) import flask self.config = Configuration() self.app = flask.Flask(__name__) self.app.secret_key = 'safe' self.app.config.update({'HONEYBADGER_ENVIRONMENT': 'production_flask'}) self.plugin = FlaskPlugin() @self.app.route('/test', methods=['GET', 'POST', 'PUT']) def foo(): return 'bar'
def setUp(self): if PY3_2: self.skipTest( 'Flask requires Python3 > 3.2. More info at http://flask.pocoo.org/docs/0.12/python3/#requirements') import flask self.config = Configuration() self.app = flask.Flask(__name__) self.app.secret_key = 'safe' self.app.config.update({ 'HONEYBADGER_ENVIRONMENT': 'production_flask' }) self.plugin = FlaskPlugin() @self.app.route('/test', methods=['GET', 'POST', 'PUT']) def foo(): return 'bar'
class FlaskPluginTestCase(unittest.TestCase): def setUp(self): if PY3_2: self.skipTest( 'Flask requires Python3 > 3.2. More info at http://flask.pocoo.org/docs/0.12/python3/#requirements' ) import flask self.config = Configuration() self.app = flask.Flask(__name__) self.app.secret_key = 'safe' self.app.config.update({'HONEYBADGER_ENVIRONMENT': 'production_flask'}) self.plugin = FlaskPlugin() @self.app.route('/test', methods=['GET', 'POST', 'PUT']) def foo(): return 'bar' def test_supports_in_request_context(self): with self.app.test_request_context(): self.assertTrue(self.plugin.supports(self.config, {})) def test_supports_no_request_context(self): self.assertFalse(self.plugin.supports(self.config, {})) def test_get_request_with_headers(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', query_string='a=1&a=2&foo=bar', headers={'X-Wizard-Color': 'grey'}): payload = self.plugin.generate_payload(self.config, {'k': 'value'}) self.assertEqual(payload['url'], 'http://server:1234/path/test') self.assertEqual(payload['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['action'], 'foo') self.assertDictEqual(payload['params'], { 'a': ['1', '2'], 'foo': ['bar'] }) self.assertDictEqual(payload['session'], {}) self.assertDictEqual( payload['cgi_data'], { 'Content-Length': '0', 'Host': 'server:1234', 'X-Wizard-Color': 'grey', 'REQUEST_METHOD': 'GET' }) self.assertDictEqual(payload['context'], {'k': 'value'}) def test_get_request_with_session(self): with self.app.test_request_context( path='/test', base_url='http://server:1234/path') as ctx: ctx.session['answer'] = 42 ctx.session['password'] = '******' payload = self.plugin.generate_payload(self.config, {'k': 'value'}) self.assertEqual(payload['url'], 'http://server:1234/path/test') self.assertEqual(payload['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['action'], 'foo') self.assertDictEqual(payload['params'], {}) self.assertDictEqual(payload['session'], { 'answer': 42, 'password': '******' }) self.assertDictEqual( payload['cgi_data'], { 'Content-Length': '0', 'Host': 'server:1234', 'REQUEST_METHOD': 'GET' }) self.assertDictEqual(payload['context'], {'k': 'value'}) def test_post_request(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', method='POST', data={ 'foo': 'bar', 'password': '******' }): payload = self.plugin.generate_payload(self.config, {'k': 'value'}) self.assertEqual(payload['url'], 'http://server:1234/path/test') self.assertEqual(payload['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['action'], 'foo') self.assertDictEqual(payload['params'], { 'foo': ['bar'], 'password': '******' }) self.assertDictEqual(payload['session'], {}) self.assertDictEqual( payload['cgi_data'], { 'Host': 'server:1234', 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '29', 'REQUEST_METHOD': 'POST' }) self.assertDictEqual(payload['context'], {'k': 'value'}) def test_put_request(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', method='PUT', data={ 'foo': 'bar', 'password': '******' }): payload = self.plugin.generate_payload(self.config, {'k': 'value'}) self.assertEqual(payload['url'], 'http://server:1234/path/test') self.assertEqual(payload['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['action'], 'foo') self.assertDictEqual(payload['params'], { 'foo': ['bar'], 'password': '******' }) self.assertDictEqual(payload['session'], {}) self.assertDictEqual( payload['cgi_data'], { 'Host': 'server:1234', 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '29', 'REQUEST_METHOD': 'PUT' }) self.assertDictEqual(payload['context'], {'k': 'value'})
class FlaskPluginTestCase(unittest.TestCase): def setUp(self): if PY3_2: self.skipTest( 'Flask requires Python3 > 3.2. More info at http://flask.pocoo.org/docs/0.12/python3/#requirements') import flask self.config = Configuration() self.app = flask.Flask(__name__) self.app.secret_key = 'safe' self.app.config.update({ 'HONEYBADGER_ENVIRONMENT': 'production_flask' }) self.plugin = FlaskPlugin() @self.app.route('/test', methods=['GET', 'POST', 'PUT']) def foo(): return 'bar' def test_supports_in_request_context(self): with self.app.test_request_context(): self.assertTrue(self.plugin.supports(self.config, {})) def test_supports_no_request_context(self): self.assertFalse(self.plugin.supports(self.config, {})) def test_get_request_with_headers(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', query_string='a=1&a=2&foo=bar', headers={ 'X-Wizard-Color': 'grey' }): payload = self.plugin.generate_payload(self.config, {'k': 'value'}) self.assertEqual(payload['url'], 'http://server:1234/path/test') self.assertEqual(payload['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['action'], 'foo') self.assertDictEqual(payload['params'], {'a': ['1', '2'], 'foo': ['bar']}) self.assertDictEqual(payload['session'], {}) self.assertDictEqual(payload['cgi_data'], { 'Content-Length': '0', 'Host': 'server:1234', 'X-Wizard-Color': 'grey', 'REQUEST_METHOD': 'GET' }) self.assertDictEqual(payload['context'], {'k': 'value'}) def test_get_request_with_session(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path') as ctx: ctx.session['answer'] = 42 ctx.session['password'] = '******' payload = self.plugin.generate_payload(self.config, {'k': 'value'}) self.assertEqual(payload['url'], 'http://server:1234/path/test') self.assertEqual(payload['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['action'], 'foo') self.assertDictEqual(payload['params'], {}) self.assertDictEqual(payload['session'], {'answer': 42, 'password': '******'}) self.assertDictEqual(payload['cgi_data'], { 'Content-Length': '0', 'Host': 'server:1234', 'REQUEST_METHOD': 'GET' }) self.assertDictEqual(payload['context'], {'k': 'value'}) def test_post_request(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', method='POST', data={'foo': 'bar', 'password': '******'}): payload = self.plugin.generate_payload(self.config, {'k': 'value'}) self.assertEqual(payload['url'], 'http://server:1234/path/test') self.assertEqual(payload['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['action'], 'foo') self.assertDictEqual(payload['params'], {'foo': ['bar'], 'password': '******'}) self.assertDictEqual(payload['session'], {}) self.assertDictEqual(payload['cgi_data'], { 'Host': 'server:1234', 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '29', 'REQUEST_METHOD': 'POST' }) self.assertDictEqual(payload['context'], {'k': 'value'}) def test_put_request(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', method='PUT', data={'foo': 'bar', 'password': '******'}): payload = self.plugin.generate_payload(self.config, {'k': 'value'}) self.assertEqual(payload['url'], 'http://server:1234/path/test') self.assertEqual(payload['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['action'], 'foo') self.assertDictEqual(payload['params'], {'foo': ['bar'], 'password': '******'}) self.assertDictEqual(payload['session'], {}) self.assertDictEqual(payload['cgi_data'], { 'Host': 'server:1234', 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '29', 'REQUEST_METHOD': 'PUT' }) self.assertDictEqual(payload['context'], {'k': 'value'})
class FlaskPluginTestCase(unittest.TestCase): def setUp(self): import flask if flask.__version__.startswith('0.12') and PYTHON_VERSION < (3, 3): self.skipTest('Flask 0.12 requires Python > 3.2') if flask.__version__.startswith('1.0') and PYTHON_VERSION < (3, 4): self.skipTest('Flask 1.0 requires Python > 3.3') if flask.__version__.startswith('1.1') and PYTHON_VERSION < (3, 5): self.skipTest('Flask 1.1 requires Python > 3.4') self.config = Configuration() self.default_payload = {'request': {}} self.app = flask.Flask(__name__) self.app.secret_key = 'safe' self.app.config.update({'HONEYBADGER_ENVIRONMENT': 'production_flask'}) self.plugin = FlaskPlugin() @self.app.route('/test', methods=['GET', 'POST', 'PUT']) def foo(): return 'bar' def test_supports_in_request_context(self): with self.app.test_request_context(): self.assertTrue(self.plugin.supports(self.config, {})) def test_supports_no_request_context(self): self.assertFalse(self.plugin.supports(self.config, {})) def test_get_request_with_headers(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', query_string='a=1&a=2&foo=bar', headers={'X-Wizard-Color': 'grey'}): payload = self.plugin.generate_payload(self.default_payload, self.config, {'k': 'value'}) self.assertEqual(payload['request']['url'], 'http://server:1234/path/test') self.assertEqual(payload['request']['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['request']['action'], 'foo') self.assertDictEqual(payload['request']['params'], { 'a': ['1', '2'], 'foo': ['bar'] }) self.assertDictEqual(payload['request']['session'], {}) self.assertDictContainsSubset( { 'Host': 'server:1234', 'X-Wizard-Color': 'grey', 'REQUEST_METHOD': 'GET' }, payload['request']['cgi_data']) self.assertDictEqual(payload['request']['context'], {'k': 'value'}) def test_get_request_with_session(self): with self.app.test_request_context( path='/test', base_url='http://server:1234/path') as ctx: ctx.session['answer'] = 42 ctx.session['password'] = '******' payload = self.plugin.generate_payload(self.default_payload, self.config, {'k': 'value'}) self.assertEqual(payload['request']['url'], 'http://server:1234/path/test') self.assertEqual(payload['request']['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['request']['action'], 'foo') self.assertDictEqual(payload['request']['params'], {}) self.assertDictEqual(payload['request']['session'], { 'answer': 42, 'password': '******' }) self.assertDictContainsSubset( { 'Host': 'server:1234', 'REQUEST_METHOD': 'GET' }, payload['request']['cgi_data']) self.assertDictEqual(payload['request']['context'], {'k': 'value'}) def test_post_request(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', method='POST', data={ 'foo': 'bar', 'password': '******' }): payload = self.plugin.generate_payload(self.default_payload, self.config, {'k': 'value'}) self.assertEqual(payload['request']['url'], 'http://server:1234/path/test') self.assertEqual(payload['request']['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['request']['action'], 'foo') self.assertDictEqual(payload['request']['params'], { 'foo': ['bar'], 'password': '******' }) self.assertDictEqual(payload['request']['session'], {}) self.assertDictEqual( payload['request']['cgi_data'], { 'Host': 'server:1234', 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '29', 'REQUEST_METHOD': 'POST', 'HTTP_COOKIE': {} }) self.assertDictEqual(payload['request']['context'], {'k': 'value'}) def test_put_request(self): with self.app.test_request_context(path='/test', base_url='http://server:1234/path', method='PUT', data={ 'foo': 'bar', 'password': '******' }): payload = self.plugin.generate_payload(self.default_payload, self.config, {'k': 'value'}) self.assertEqual(payload['request']['url'], 'http://server:1234/path/test') self.assertEqual(payload['request']['component'], 'honeybadger.tests.contrib.test_flask') self.assertEqual(payload['request']['action'], 'foo') self.assertDictEqual(payload['request']['params'], { 'foo': ['bar'], 'password': '******' }) self.assertDictEqual(payload['request']['session'], {}) self.assertDictEqual( payload['request']['cgi_data'], { 'Host': 'server:1234', 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '29', 'REQUEST_METHOD': 'PUT', 'HTTP_COOKIE': {} }) self.assertDictEqual(payload['request']['context'], {'k': 'value'})