- moved jp tests to `e2e/jp` - new fixtures - adapted docker-compose - improved `run_e2e` with several flags + report on failure - doc to come
93 lines
3.6 KiB
Python
93 lines
3.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
# SàT: an XMPP client
|
|
# Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org)
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
import os
|
|
import pytest
|
|
from helium import (
|
|
go_to, write, click, drag_file, find_all, wait_until, S, Text, Link, get_driver
|
|
)
|
|
|
|
|
|
if os.getenv("SAT_TEST_ENV_E2E_LIBERVIA") is None:
|
|
pytest.skip(
|
|
"skipping end-to-end tests, we are not in a test environment for Libervia",
|
|
allow_module_level=True
|
|
)
|
|
|
|
pytestmark = pytest.mark.usefixtures("test_profiles", "screenshot_on_failure")
|
|
|
|
|
|
class TestLogin:
|
|
|
|
def test_user_can_create_account(self, nobody_logged_in, sent_emails):
|
|
go_to("https://libervia.test:8443/login")
|
|
click("no account yet")
|
|
write("new_account", into="login")
|
|
write("some_email@example.net", into="email")
|
|
write("testtest", into="password")
|
|
click("register new account")
|
|
wait_until(lambda: get_driver().current_url.endswith("/login"))
|
|
write("testtest", into="password")
|
|
click("log in")
|
|
wait_until(Text("you are logged").exists)
|
|
wait_until(lambda: len(sent_emails) == 2)
|
|
if sent_emails[0].to == "admin@server1.test":
|
|
admin_email, user_email = sent_emails
|
|
else:
|
|
user_email, admin_email = sent_emails
|
|
assert admin_email.to == "admin@server1.test"
|
|
# profile name must be specified in admin email
|
|
assert "new_account" in admin_email.body
|
|
assert user_email.to == "some_email@example.net"
|
|
# user jid must be specified in the email
|
|
assert "new_account@server1.test" in user_email.body
|
|
# use can now log-in
|
|
|
|
def test_user_can_log_in(self, nobody_logged_in):
|
|
go_to("https://libervia.test:8443/login")
|
|
write("account1_s2", into="login")
|
|
write("test", into="password")
|
|
click("log in")
|
|
assert Text("you are logged").exists()
|
|
|
|
def test_wrong_password_fails(self, nobody_logged_in):
|
|
go_to("https://libervia.test:8443/login")
|
|
write("account1_s2", into="login")
|
|
write("wrong_password", into="password")
|
|
click("log in")
|
|
assert Text("Your login and/or password is incorrect. Please try again.")
|
|
|
|
|
|
class TestPhotos:
|
|
|
|
def test_user_can_create_album(self, log_in_account1):
|
|
go_to("https://libervia.test:8443/photos")
|
|
wait_until(Link("create").exists)
|
|
click("create")
|
|
write("test album", into="album name")
|
|
click("create")
|
|
album_link = Link("test album")
|
|
wait_until(album_link.exists)
|
|
click(album_link)
|
|
wait_until(lambda: not S("#loading_screen").exists())
|
|
drag_file("/src/sat/tests/_files/test_1.jpg", "drop photos here")
|
|
wait_until(lambda: len(find_all(S("div.progress_finished")))==1)
|
|
drag_file("/src/sat/tests/_files/test_2.jpg", "drop photos here")
|
|
wait_until(lambda: len(find_all(S("div.progress_finished")))==2)
|
|
assert S('img[alt="test_1.jpg"]').exists()
|
|
assert S('img[alt="test_2.jpg"]').exists()
|