Merge branch 'develop' into patch-2

This commit is contained in:
Kostyantyn Leschenko
2013-09-05 18:10:05 +03:00
10 changed files with 27 additions and 27 deletions
-1
View File
@@ -3,7 +3,6 @@ language: python
python:
- "2.6"
- "2.7"
- "pypy"
install:
- pip install . --quiet
+2 -1
View File
@@ -1,2 +1,3 @@
include CHANGES LICENSE
recursive-include tests *.py
recursive-include flask_security/templates *.*
recursive-include flask_security/templates *.*
+2 -2
View File
@@ -132,11 +132,11 @@ Overriding these templates is simple:
Each template is passed a template context object that includes values for any
links that are required in the email. If you require more values in the
templates you can specify an email context processor with the
``email_context_processor`` decorator. For example::
``mail_context_processor`` decorator. For example::
security = Security(app, user_datastore)
# This processor is added to all emails
@security.email_context_processor
@security.mail_context_processor
def security_mail_processor():
return dict(hello="world")
+4 -15
View File
@@ -22,18 +22,11 @@ class SecurityTest(TestCase):
app = self._create_app(self.AUTH_CONFIG or {}, **app_kwargs)
app.debug = False
app.config['TESTING'] = True
app.config['WTF_CSRF_ENABLED'] = False
self.app = app
self.client = app.test_client()
with self.client.session_transaction() as session:
session['csrf'] = 'csrf_token'
csrf_hmac = hmac.new(self.app.config['SECRET_KEY'],
'csrf_token'.encode('utf8'),
digestmod=sha1)
self.csrf_token = '##' + csrf_hmac.hexdigest()
def _create_app(self, auth_config, **kwargs):
return create_app(auth_config, **kwargs)
@@ -43,16 +36,13 @@ class SecurityTest(TestCase):
headers=headers)
def _post(self, route, data=None, content_type=None, follow_redirects=True, headers=None):
if isinstance(data, dict):
data['csrf_token'] = self.csrf_token
content_type = content_type or 'application/x-www-form-urlencoded'
return self.client.post(route, data=data,
follow_redirects=follow_redirects,
content_type=content_type, headers=headers)
def register(self, email, password='password'):
data = dict(email=email, password=password, csrf_token=self.csrf_token)
data = dict(email=email, password=password)
return self.client.post('/register', data=data, follow_redirects=True)
def authenticate(self, email="matt@lp.com", password="password", endpoint=None, **kwargs):
@@ -62,11 +52,10 @@ class SecurityTest(TestCase):
def json_authenticate(self, email="matt@lp.com", password="password", endpoint=None):
data = """{
"email": "%s",
"password": "%s",
"csrf_token": "%s"
"password": "%s"
}"""
return self._post(endpoint or '/login', content_type="application/json",
data=data % (email, password, self.csrf_token))
data=data % (email, password))
def logout(self, endpoint=None):
return self._get(endpoint or '/logout', follow_redirects=True)
+2 -2
View File
@@ -77,7 +77,7 @@ class ConfiguredSecurityTests(SecurityTest):
self.assertIn('Page 1', r.data)
def test_register_json(self):
data = '{ "email": "dude@lp.com", "password": "password", "csrf_token":"%s" }' % self.csrf_token
data = '{ "email": "dude@lp.com", "password": "password"}'
r = self._post('/register', data=data, content_type='application/json')
data = json.loads(r.data)
self.assertEquals(data['meta']['code'], 200)
@@ -559,7 +559,7 @@ class PasswordlessTests(SecurityTest):
self.assertIn(msg, r.data)
def test_request_login_token_with_json_and_valid_email(self):
data = '{"email": "matt@lp.com", "password": "password", "csrf_token":"%s"}' % self.csrf_token
data = '{"email": "matt@lp.com", "password": "password"}'
r = self._post('/login', data=data, content_type='application/json')
self.assertEquals(r.status_code, 200)
self.assertNotIn('error', r.data)
+1 -2
View File
@@ -173,8 +173,7 @@ class ChangeableSignalsTests(SignalTest):
client.post('/change',
data=dict(password='password',
new_password='newpassword',
new_password_confirm='newpassword',
csrf_token=self.csrf_token))
new_password_confirm='newpassword'))
self.assertEqual(mocks.signals_sent(), set([password_changed]))
user = self.app.security.datastore.find_user(email='joe@lp.com')
calls = mocks[password_changed]
+1
View File
@@ -16,6 +16,7 @@ def create_app(config):
app.debug = True
app.config['SECRET_KEY'] = 'secret'
app.config['TESTING'] = True
app.config['LOGIN_DISABLED'] = False
for key, value in config.items():
app.config[key] = value
+2 -2
View File
@@ -18,7 +18,7 @@ from tests.test_app import create_app as create_base_app, populate_data, \
def create_app(config, **kwargs):
app = create_base_app(config)
app.config['DATABASE'] = {
'name': 'example2.db',
'name': 'peewee.db',
'engine': 'peewee.SqliteDatabase'
}
db = Database(app)
@@ -50,7 +50,7 @@ def create_app(config, **kwargs):
def before_first_request():
for Model in (Role, User, UserRoles):
Model.drop_table(fail_silently=True)
Model.create_table(fail_silently=True)
Model.create_table()
populate_data(app.config.get('USER_COUNT', None))
app.security = Security(app, datastore=PeeweeUserDatastore(db, User, Role, UserRoles), **kwargs)
-2
View File
@@ -16,8 +16,6 @@ from tests.test_app import create_app as create_base_app, populate_data, \
def create_app(config, **kwargs):
app = create_base_app(config)
#app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost/flask_security_test'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
db = SQLAlchemy(app)
+13
View File
@@ -0,0 +1,13 @@
[tox]
envlist = py26, py27
[testenv]
deps =
nose
simplejson
Flask-SQLAlchemy
Flask-MongoEngine
Flask-Peewee
py-bcrypt
commands = nosetests []