mirror of
https://github.com/wassname/flask-security.git
synced 2026-09-12 12:21:37 +08:00
Full test coverage!
This commit is contained in:
+3
-2
@@ -23,10 +23,11 @@ class SecurityTest(TestCase):
|
||||
content_type=content_type or 'text/html',
|
||||
headers=headers)
|
||||
|
||||
def _post(self, route, data=None, content_type=None, follow_redirects=True):
|
||||
def _post(self, route, data=None, content_type=None, follow_redirects=True, headers=None):
|
||||
return self.client.post(route, data=data,
|
||||
follow_redirects=follow_redirects,
|
||||
content_type=content_type or 'application/x-www-form-urlencoded')
|
||||
content_type=content_type or 'application/x-www-form-urlencoded',
|
||||
headers=headers)
|
||||
|
||||
def register(self, email, password='password'):
|
||||
data = dict(email=email, password=password, password_confirm=password)
|
||||
|
||||
@@ -36,6 +36,8 @@ class DefaultSecurityTests(SecurityTest):
|
||||
r = self._get('/login')
|
||||
self.assertIn('Login Page', r.data)
|
||||
|
||||
|
||||
|
||||
def test_authenticate(self):
|
||||
r = self.authenticate()
|
||||
self.assertIn('Hello matt@lp.com', r.data)
|
||||
@@ -221,6 +223,10 @@ class ConfiguredSecurityTests(SecurityTest):
|
||||
r = self.logout(endpoint="/custom_logout")
|
||||
self.assertIn('Post Logout', r.data)
|
||||
|
||||
def test_register_view(self):
|
||||
r = self._get('/register')
|
||||
self.assertIn('<h1>Register</h1>', r.data)
|
||||
|
||||
def test_register(self):
|
||||
data = dict(email='dude@lp.com',
|
||||
password='password',
|
||||
@@ -432,7 +438,57 @@ class ExpiredResetPasswordTest(SecurityTest):
|
||||
self.assertIn('You did not reset your password within', r.data)
|
||||
|
||||
|
||||
class TrackableTests(SecurityTest):
|
||||
|
||||
AUTH_CONFIG = {
|
||||
'SECURITY_TRACKABLE': True
|
||||
}
|
||||
|
||||
def test_did_track(self):
|
||||
e = 'matt@lp.com'
|
||||
self.authenticate(email=e)
|
||||
self.logout()
|
||||
self.authenticate(email=e)
|
||||
|
||||
with self.app.test_request_context('/profile'):
|
||||
user = self.app.security.datastore.find_user(email=e)
|
||||
self.assertIsNotNone(user.last_login_at)
|
||||
self.assertIsNotNone(user.current_login_at)
|
||||
self.assertEquals('untrackable', user.last_login_ip)
|
||||
self.assertEquals('untrackable', user.current_login_ip)
|
||||
self.assertEquals(2, user.login_count)
|
||||
|
||||
|
||||
class MongoEngineSecurityTests(DefaultSecurityTests):
|
||||
|
||||
def _create_app(self, auth_config):
|
||||
return app.create_mongoengine_app(auth_config)
|
||||
|
||||
|
||||
class DefaultDatastoreTests(SecurityTest):
|
||||
|
||||
def test_add_role_to_user(self):
|
||||
r = self._get('/coverage/add_role_to_user')
|
||||
self.assertIn('success', r.data)
|
||||
|
||||
def test_remove_role_from_user(self):
|
||||
r = self._get('/coverage/remove_role_from_user')
|
||||
self.assertIn('success', r.data)
|
||||
|
||||
def test_activate_user(self):
|
||||
r = self._get('/coverage/activate_user')
|
||||
self.assertIn('success', r.data)
|
||||
|
||||
def test_deactivate_user(self):
|
||||
r = self._get('/coverage/deactivate_user')
|
||||
self.assertIn('success', r.data)
|
||||
|
||||
def test_invalid_role(self):
|
||||
r = self._get('/coverage/invalid_role')
|
||||
self.assertIn('success', r.data)
|
||||
|
||||
|
||||
class MongoEngineDatastoreTests(DefaultDatastoreTests):
|
||||
|
||||
def _create_app(self, auth_config):
|
||||
return app.create_mongoengine_app(auth_config)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import unittest
|
||||
|
||||
from flask_security import RoleMixin, UserMixin, AnonymousUser
|
||||
from flask_security.datastore import UserDatastore
|
||||
|
||||
|
||||
class Role(RoleMixin):
|
||||
@@ -41,3 +42,13 @@ class SecurityEntityTests(unittest.TestCase):
|
||||
au = AnonymousUser()
|
||||
self.assertEqual(0, len(au.roles))
|
||||
self.assertFalse(au.has_role('admin'))
|
||||
|
||||
|
||||
class UserDatastoreTests(unittest.TestCase):
|
||||
|
||||
def test_unimplemented(self):
|
||||
ds = UserDatastore(None, None, None)
|
||||
self.assertRaises(NotImplementedError, ds._save_model, None)
|
||||
self.assertRaises(NotImplementedError, ds._delete_model, None)
|
||||
self.assertRaises(NotImplementedError, ds._do_find_user)
|
||||
self.assertRaises(NotImplementedError, ds._do_find_role)
|
||||
|
||||
Reference in New Issue
Block a user