websauna.tests.test_utils module¶
Testing utility functions.
-
websauna.tests.test_utils.
PASSWORD
= 'ToholamppiMadCowz585'¶ Unit testing default password
-
websauna.tests.test_utils.
create_logged_in_user
(dbsession, registry, web_server, browser, admin=False, email='example@example.com', password='ToholamppiMadCowz585')[source]¶ For a web browser test session, creates a new user and log it in inside the test browser.
-
websauna.tests.test_utils.
create_user
(dbsession, registry, email='example@example.com', password='ToholamppiMadCowz585', admin=False)[source]¶ A helper function to create normal and admin users for tests.
Example:
import transaction from websauna.tests.test_utils import create_user def test_some_stuff(dbsession, registry): with transaction.manager: u = create_user(registry) # Do stuff with new user
- Parameters
email (
str
) – User’s email address. If inot given use unit testing default.password (
str
) – Password as plain text. If not given use unit testing default.admin (
bool
) – If True runwebsauna.system.user.usermixin.SiteCreator
login and set the user to admin group.
- Return type
-
websauna.tests.test_utils.
get_session_from_webdriver
(driver, registry)[source]¶ Extract session cookie from a Selenium driver and fetch a matching pyramid_redis_sesssion data.
Example:
def test_newsletter_referral(dbsession, web_server, browser, init): '''Referral is tracker for the newsletter subscription.''' b = browser b.visit(web_server + "/newsletter") with transaction.manager: r = ReferralProgram() r.name = "Foobar program" dbsession.add(r) dbsession.flush() ref_id, slug = r.id, r.slug # Inject referral data to the active session. We do this because it is very hard to spoof external links pointing to localhost test web server. session = get_session_from_webdriver(b.driver, init.config.registry) session["referral"] = { "ref": slug, "referrer": "http://example.com" } session.to_redis() b.fill("email", "[email protected]") b.find_by_name("subscribe").click() # Displayed as a message after succesful form subscription assert b.is_text_present("Thank you!") # Check we get an entry with transaction.manager: assert dbsession.query(NewsletterSubscriber).count() == 1 subscription = dbsession.query(NewsletterSubscriber).first() assert subscription.email == "[email protected]" assert subscription.ip == "127.0.0.1" assert subscription.referral_program_id == ref_id assert subscription.referrer == "http://example.com"
- Parameters
driver (
WebDriver
) – The active WebDriver (usuallybrowser.driver
)registry (
Registry
) – The Pyramid registry (usuallyinit.config.registry
)
- Return type
RedisSession
-
websauna.tests.test_utils.
login
(web_server, browser, email='example@example.com', password='ToholamppiMadCowz585')[source]¶ Login user to the website through the test browser.
-
websauna.tests.test_utils.
logout
(web_server, browser)[source]¶ Log out the current user from the test browser.
-
websauna.tests.test_utils.
make_dummy_request
(dbsession, registry)[source]¶ Creates a non-functional HTTP request with registry and dbsession configured.
Useful for crafting requests with custom settings
See also
make_routable_request()
.- Return type
InterfaceClass
-
websauna.tests.test_utils.
wait_until
(callback, expected, deadline=1.0, poll_period=0.05)[source]¶ A helper function to wait until a variable value is set (in another thread).
This is useful for communicating between Selenium test driver and test runner main thread.
- Parameters
callback (
Callable
) – t.Callable which we expect to return toexpected
value.deadline – Seconds how long we are going to wait max
poll_period – Sleep period between check attemps
- Returns
The final value of callback