def test_presto_login(web_server, browser, DBSession, init): """Login / sign up with Prestodoctor. Presto application must be configurd as web application, running in http://localhost:8521/. Example invocation: PRESTO_USER="******" PRESTO_PASSWORD="******" py.test trees -s --splinter-webdriver=firefox --splinter-make-screenshot-on-failure=false --ini=test.ini -k test_facebook_login :param web_server: Py.text fixture, gives HTTP address where the functional test web server is running, ``http://localhost:8521/`` :param browser: Py.test Splinter Browser fixture :param DBSession: Py.test SQLALchemy session :param init: Websauna configuration object """ b = browser # Initiate Presto login with Authomatic b.visit("{}/login".format(web_server)) b.find_by_css(".btn-login-prestodoctor").click() do_presto_login_if_needed(b) assert b.is_text_present("You are now logged in") # See that we got somewhat sane data with transaction.manager: assert DBSession.query(User).count() == 1 u = DBSession.query(User).get(1) assert u.first_login assert u.email == PRESTO_USER_WITH_RECOMMENDATION assert u.activated_at assert u.last_login_ip == "127.0.0.1" # Check user basic data assert u.full_name == 'Test Oauth1' assert u.user_data["social"]["prestodoctor"]["dob"] == -621648001 assert u.address == "123 MARKET ST" assert u.city == "SAN FRANCISCO" assert u.state == "CA" assert u.zipcode == "94105" # License details assert u.presto_license_number == 692624515 assert u.medical_license_upload_completed_at assert u.driving_license_upload_completed_at assert u.license_initial_upload_completed_at # Generated by our backend on succesful oauth login assert b.is_text_present("You are now logged in") logout(web_server, b) assert b.is_text_present("You are now logged out")
def test_presto_double_login(web_server, browser, DBSession, init): """Login Presto user twice and see we do heavy data import only once.""" b = browser # Initiate Presto login with Authomatic b.visit("{}/login".format(web_server)) b.find_by_css(".btn-login-prestodoctor").click() do_presto_login_if_needed(b) assert b.is_text_present("You are now logged in") # See that we got somewhat sane data with transaction.manager: assert DBSession.query(User).count() == 1 u = DBSession.query(User).get(1) # Grab timestamp of full data update full_data_updated_at = u.user_data["social"]["prestodoctor"][ "full_data_updated_at"] logout(web_server, b) # Go again b.visit("{}/login".format(web_server)) b.find_by_css(".btn-login-prestodoctor").click() do_presto_login_if_needed(b) assert b.is_text_present("You are now logged in") with transaction.manager: assert DBSession.query(User).count() == 1 u = DBSession.query(User).get(1) # Grab timestamp of full data update assert u.user_data["social"]["prestodoctor"][ "full_data_updated_at"] == full_data_updated_at
def test_presto_double_login(web_server, browser, DBSession, init): """Login Presto user twice and see we do heavy data import only once.""" b = browser # Initiate Presto login with Authomatic b.visit("{}/login".format(web_server)) b.find_by_css(".btn-login-prestodoctor").click() do_presto_login_if_needed(b) assert b.is_text_present("You are now logged in") # See that we got somewhat sane data with transaction.manager: assert DBSession.query(User).count() == 1 u = DBSession.query(User).get(1) # Grab timestamp of full data update full_data_updated_at = u.user_data["social"]["prestodoctor"]["full_data_updated_at"] logout(web_server, b) # Go again b.visit("{}/login".format(web_server)) b.find_by_css(".btn-login-prestodoctor").click() do_presto_login_if_needed(b) assert b.is_text_present("You are now logged in") with transaction.manager: assert DBSession.query(User).count() == 1 u = DBSession.query(User).get(1) # Grab timestamp of full data update assert u.user_data["social"]["prestodoctor"]["full_data_updated_at"] == full_data_updated_at