def oauth_callback(provider): if not current_user.is_anonymous(): return redirect(url_for('simple_page.index')) oauth = OAuthSignIn.get_provider(provider) social_id, username, email = oauth.callback() if social_id is None: flash(getttext(u'Authentication failed'), 'danger') return redirect(url_for('simple_page.index')) # check if user exists and if no creates new user = User.query.filter_by(social_id=social_id).first() if user is None: user = User( username=username, password='', email=email, social_id=social_id ) db.session.add(user) db.session.commit() login_user(user, remember=True) user.update_login_info() return redirect(url_for('simple_page.index'))
def test_add_user_to_database(self): user = User(username='******', password=generate_password_hash('a'), email='*****@*****.**') db.session.add(user) db.session.commit() user = User.query.filter_by(username='******').first() assert user.id == 1 assert user.username == 'john' assert check_password_hash(user.password, 'a') assert user.email == '*****@*****.**' self.assertIn("facebook$" + user.username, user.social_id) assert user.registered_on is not None assert user.confirmed is False assert user.confirmed_on is None self.assertTrue(user.first_login is None) self.assertTrue(user.last_login is None) self.assertFalse(user.is_active_login()) user.update_login_info() login_date = datetime.now() self.assertTrue(user.first_login is not None) self.assertLess(user.first_login, login_date) self.assertTrue(user.last_login is not None) self.assertLess(user.last_login, login_date) self.assertTrue(user.is_active_login()) user.last_login = datetime.now() + timedelta(days=-10) db.session.add(user) db.session.commit() self.assertFalse(user.is_active_login()) # login again user.update_login_info() self.assertTrue(user.first_login is not None) self.assertLess(user.first_login, login_date) self.assertTrue(user.last_login is not None) self.assertGreater(user.last_login, login_date) user_second = User(username='******', password=generate_password_hash('a'), email='*****@*****.**') db.session.add(user_second) db.session.commit() user_second = User.query.filter_by(username='******').first() assert user_second.id == 2 self.assertEqual(user_second.id, 2) self.assertNotEqual(user_second.username, 'john', msg=None) self.assertEqual(user_second.username, 'johner')