def test_user_cannot_login_with_incorrect_password(self):
        """Test that a bad password will not let existing user log in"""
        # add example users
        generate_example_users()

        result = self.app.post('/login',
                               data={'email': '*****@*****.**',
                                     'password': '******'},
                               follow_redirects=True)

        self.assertEqual(result.status_code, 200)
        self.assertIn('text/html', result.headers['Content-Type'])
        self.assertIn('Incorrect password.', result.data)

        db.session.rollback()
    def test_unknown_user_cannot_login(self):
        """Test that an unknown user cannot log in"""
        # add example users
        generate_example_users()

        result = self.app.post('/login',
                               data={'email': '*****@*****.**',
                                     'password': '******'},
                               follow_redirects=True)

        self.assertEqual(result.status_code, 200)
        self.assertIn('text/html', result.headers['Content-Type'])
        self.assertIn('You are not registered as a user.', result.data)

        db.session.rollback()
    def test_login_existing_user(self):
        """Test that an existing user can login"""
        # add example users
        generate_example_users()

        result = self.app.post('/login',
                               data={'email': '*****@*****.**',
                                     'password': '******'},
                               follow_redirects=True)

        self.assertEqual(result.status_code, 200)
        self.assertIn('text/html', result.headers['Content-Type'])
        self.assertIn('You have logged in.', result.data)

        db.session.rollback()
    def setUp(self):
        self.app = app.test_client()
        app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'
        app.config['TESTING'] = True
        app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
        db.app = app
        db.init_app(app)
        db.create_all()

        generate_example_schools()
        generate_example_users()
        generate_example_school_lists()

        # initiate session
        with self.app as c:
            with c.session_transaction() as sess:
                sess['user_id'] = '1'
    def test_existing_user_cannot_reregister(self):
        """Test that an existing user cannot reregister"""
        # add example users
        generate_example_users()

        result = self.app.post('/register',
                               data={'email': '*****@*****.**',
                                     'password': '******',
                                     'gpa': 3.0,
                                     'lsat': 165},
                               follow_redirects=True)

        self.assertEqual(result.status_code, 200)
        self.assertIn('text/html', result.headers['Content-Type'])
        self.assertIn('You are already registered.', result.data)

        db.session.rollback()