Guest User

Untitled

a guest
Jul 16th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.69 KB | None | 0 0
  1. # project/test_users.py
  2.  
  3.  
  4. import os
  5. import unittest
  6.  
  7. from flasktaskr import app, db
  8. from _config import basedir
  9. from models import User
  10.  
  11. TEST_DB = 'test.db'
  12.  
  13.  
  14. class UsersTests(unittest.TestCase):
  15.  
  16.     ############################
  17.     #### setup and teardown ####
  18.     ############################
  19.  
  20.     # executed prior to each test
  21.     def setUp(self):
  22.         app.config['TESTING'] = True
  23.         app.config['WTF_CSRF_ENABLED'] = False
  24.         app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + \
  25.             os.path.join(basedir, TEST_DB)
  26.         self.app = app.test_client()
  27.         db.create_all()
  28.  
  29.     # executed after each test
  30.     def tearDown(self):
  31.         db.session.remove()
  32.         db.drop_all()
  33.  
  34.  
  35.     ########################
  36.     #### helper methods ####
  37.     ########################
  38.  
  39.     def login(self, name, password):
  40.         return self.app.post('/', data=dict(
  41.             name=name, password=password), follow_redirects=True)
  42.  
  43.     def register(self, name, email, password, confirm):
  44.         return self.app.post(
  45.             'register/',
  46.             data=dict(name=name, email=email, password=password, confirm=confirm),
  47.             follow_redirects=True
  48.         )
  49.  
  50.     def logout(self):
  51.         return self.app.get('logout/', follow_redirects=True)
  52.  
  53.     def create_user(self, name, email, password):
  54.         new_user = User(name=name, email=email, password=password)
  55.         db.session.add(new_user)
  56.         db.session.commit()
  57.  
  58.     def create_task(self):
  59.         return self.app.post('add/', data=dict(
  60.             name='Go to the bank',
  61.             due_date='02/05/2015',
  62.             priority='1',
  63.             posted_date='02/04/2015',
  64.             status='1'
  65.         ), follow_redirects=True)
  66.  
  67.     def test_users_can_register(self):
  68.         new_user = User("michael", "michael@mherman.org", "michaelherman")
  69.         db.session.add(new_user)
  70.         db.session.commit()
  71.         test = db.session.query(User).all()
  72.         for t in test:
  73.             t.name
  74.         assert t.name == "michael"
  75.  
  76.     def test_form_is_present_on_login_page(self):
  77.         response = self.app.get('/')
  78.         self.assertEqual(response.status_code, 200)
  79.         self.assertIn(b'Please sign in to access your task list', response.data)
  80.  
  81.     def test_users_cannot_login_unless_registered(self):
  82.         response = self.login('foo', 'bar')
  83.         self.assertIn(b'Invalid username or password', response.data)
  84.  
  85.     def test_users_can_login(self):
  86.         self.register('Michael', 'michael@realpython.com', 'python', 'python')
  87.         response = self.login('Michael', 'python')
  88.         self.assertIn(b'Welcome', response.data)
  89.  
  90.     def test_invalid_form_data(self):
  91.         self.register('Michael', 'michael@realpython.com', 'python', 'python')
  92.         response = self.login('alert("alert box!");', 'foo')
  93.         self.assertIn(b'Invalid username or password', response.data)
  94.  
  95.     def test_form_is_present_on_register_page(self):
  96.         response = self.app.get('register/')
  97.         self.assertEqual(response.status_code, 200)
  98.         self.assertIn(b'Please register to access the task list.', response.data)
  99.  
  100.     def test_user_registeration(self):
  101.         self.app.get('register/', follow_redirects=True)
  102.         response = self.register(
  103.             'Michael', 'michael@realpython.com', 'python', 'python')
  104.         self.assertIn(b'Thanks for registering please log in', response.data)
  105.  
  106.     def test_user_registeration_error(self):
  107.         self.app.get('register/', follow_redirects=True)
  108.         self.register('Michael', 'michael@realpython.com', 'python', 'python')
  109.         self.app.get('register/', follow_redirects=True)
  110.         response = self.register(
  111.             'Michael', 'michael@realpython.com', 'python', 'python'
  112.         )
  113.         self.assertIn(
  114.             b'This name is already taken',
  115.             response.data
  116.         )
  117.  
  118.     def test_logged_in_users_can_logout(self):
  119.         self.register('Fletcher', 'fletcher@realpython.com', 'python101', 'python101')
  120.         self.login('Fletcher', 'python101')
  121.         response = self.logout()
  122.         self.assertIn(b'Goodbye', response.data)
  123.  
  124.     def test_not_logged_in_users_cannot_logout(self):
  125.         response = self.logout()
  126.         self.assertNotIn(b'Goodbye', response.data)
  127.  
  128.     def test_duplicate_user_registeration_throws_error(self):
  129.         self.register('Fletcher', 'fletcher@realpython.com', 'python101', 'python101')
  130.         response = self.register('Fletcher', 'fletcher@realpython.com', 'python101', 'python101')
  131.         self.assertIn(
  132.             b'This name is already taken',
  133.             response.data
  134.         )
  135.  
  136.     def test_user_login_field_errors(self):
  137.         response = self.app.post(
  138.             '/',
  139.             data=dict(
  140.                 name='',
  141.                 password='python101',
  142.             ),
  143.             follow_redirects=True
  144.         )
  145.         self.assertIn(b'This field is required.', response.data)
  146.  
  147.     def test_string_representation_of_the_user_object(self):
  148.  
  149.         db.session.add(
  150.             User(
  151.                 "Johnny",
  152.                 "john@doe.com",
  153.                 "johnny"
  154.             )
  155.         )
  156.  
  157.         db.session.commit()
  158.  
  159.         users = db.session.query(User).all()
  160.         for user in users:
  161.             self.assertEqual(user.name, 'Johnny')
  162.  
  163.     def test_default_user_role(self):
  164.  
  165.         db.session.add(
  166.             User(
  167.                 "Johnny",
  168.                 "john@doe.com",
  169.                 "johnny"
  170.             )
  171.         )
  172.  
  173.         db.session.commit()
  174.  
  175.         users = db.session.query(User).all()
  176.         for user in users:
  177.             self.assertEqual(user.role, 'user')
  178.  
  179.  
  180. if __name__ == "__main__":
  181.     unittest.main()
Add Comment
Please, Sign In to add comment