# 需要导入模块: from flask.ext import login [as 别名]
# 或者: from flask.ext.login import UserMixin [as 别名]
def test_succesful_event(app, test_client, path_info, secret_key, user_id):
@app.route(path_info, methods=['GET', 'POST'])
def boom():
1 / 0
# from http://docs.datadoghq.com/api/
options = {
'api_key': '0c82710457ebeaeab1c901c0152852fa',
'app_key': 'b8e5af1010d49ac73cadde2a5be5ef01b6ae73c6'
}
header = 'Accept'
html = 'text/html'
headers = {header: html}
to_ban = ('to ban', 'Guido Van Rossum')
to_find = ('to find', 'Raymond Hettinger')
data = dict((to_ban, to_find))
h_blacklist = ['/{0}'.format(header)]
d_blacklist = ['/{0}'.format(to_ban[0])]
app.secret_key = secret_key
login_manager = flask_login.LoginManager()
@login_manager.user_loader
def user_loader(username):
class User(flask_login.UserMixin):
def get_id(self):
return user_id
return User()
login_manager.init_app(app)
ba = Breathalyzer(app, headers_blacklist=h_blacklist, data_blacklist=d_blacklist, **options)
assert ba.last_event_id is None
with test_client() as c:
with c.session_transaction() as sess:
sess['user_id'] = user_id
sess['_fresh'] = True
response = c.post(path_info, data=json.dumps(data), content_type='application/json', headers=headers)
assert response.status == '500 INTERNAL SERVER ERROR'
assert b'
500 Internal Server Error' in response.dataassert response.mimetype == 'text/html'
assert 'ZeroDivisionError' in ba.last_event['event']['text']
assert ba.last_event_id == ba.last_event['event']['id']
assert to_ban[1] not in ba.last_event['event']['text']
assert to_find[1] in ba.last_event['event']['text']
assert user_id in ba.last_event['event']['text']