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'
Esempio n. 2
0
    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'
Esempio n. 4
0
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'})