tests: fix and update tests:
- update code to newer version of `sh` - update code to newer version of `selenium` - update names of OMEMO algorithms - fix paths and names used to mount source to the test container - skip modules using `Gst` and `PyQt` when they are not available.
This commit is contained in:
parent
fa55bc6fb9
commit
48201780de
7 changed files with 58 additions and 29 deletions
|
|
@ -38,7 +38,7 @@ class LiberviaCliJson:
|
|||
kwargs['output'] = 'json-raw'
|
||||
kwargs['_tty_out'] = False
|
||||
cmd = li(*args, **kwargs)
|
||||
return json.loads(cmd.stdout)
|
||||
return json.loads(cmd)
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name.startswith('_'):
|
||||
|
|
@ -63,7 +63,7 @@ class LiberviaCliElt(LiberviaCliJson):
|
|||
kwargs['output'] = 'xml-raw'
|
||||
kwargs['_tty_out'] = False
|
||||
cmd = li(*args, **kwargs)
|
||||
return self.parser(cmd.stdout.decode().strip())
|
||||
return self.parser(cmd.strip())
|
||||
|
||||
|
||||
class Editor:
|
||||
|
|
|
|||
|
|
@ -376,17 +376,20 @@ class TestE2EEncryption:
|
|||
|
||||
def test_jingle_encrypted_transport_jet(self, fake_file):
|
||||
"""A file is sent and received properly with JET OMEMO"""
|
||||
li.encryption.start("account1@server2.test", name="oldmemo")
|
||||
# FIXME: transport should be checked to see if content is actually encrypted.
|
||||
# Maybe we can use tcpdump?
|
||||
li.encryption.start("account1@server2.test", name="omemo_legacy")
|
||||
source_file = fake_file.size(10240)
|
||||
source_file_hash = fake_file.get_source_hash(source_file)
|
||||
send_cmd = li.file.send(
|
||||
source_file, "account1@server2.test", encrypt=True, _bg=True
|
||||
source_file, "account1@server2.test", encrypt=True, _bg=True,
|
||||
)
|
||||
dest_path = fake_file.dest_files / "test_send_receive"
|
||||
dest_path.mkdir()
|
||||
try:
|
||||
li.file.receive(
|
||||
"account1@server1.test", profile="account1_s2", path=dest_path)
|
||||
"account1@server1.test", profile="account1_s2", path=dest_path,
|
||||
)
|
||||
dest_file = dest_path / source_file.name
|
||||
dest_file_hash = fake_file.get_dest_hash(dest_file)
|
||||
finally:
|
||||
|
|
@ -401,9 +404,9 @@ class TestE2EEncryption:
|
|||
secret_blog = "this is a secret blog post"
|
||||
node = "e2ee_blog"
|
||||
item = "test_pte"
|
||||
li.encryption.start("account1@server2.test", name="twomemo")
|
||||
li.encryption.start("account1@server2.test", name="omemo")
|
||||
li.encryption.start(
|
||||
"account1@server1.test", name="twomemo", profile="account1_s2"
|
||||
"account1@server1.test", name="omemo", profile="account1_s2"
|
||||
)
|
||||
li.blog.set(
|
||||
_in=secret_blog, node="e2ee_blog", item=item,
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ from pathlib import Path
|
|||
import helium
|
||||
|
||||
|
||||
WEB_HOST = "libervia-web.test"
|
||||
WEB_HOST = "web"
|
||||
WEB_PORT_HTTPS = 8443
|
||||
BASE_URL = f"https://{WEB_HOST}:{WEB_PORT_HTTPS}"
|
||||
SIZE_DESKTOP = (1024, 728)
|
||||
|
|
@ -54,7 +54,7 @@ def screenshot_on_failure(request):
|
|||
filename = f"{datetime.now().isoformat()}_{request.node.name}.png"
|
||||
dest_path = dest_dir/filename
|
||||
helium.get_driver().save_screenshot(str(dest_path))
|
||||
print(f"screenshot saved to {dest_path}")
|
||||
print(f" 📸screenshot saved to {dest_path}")
|
||||
|
||||
|
||||
def wait_for_socket(host, port, retries=30):
|
||||
|
|
|
|||
|
|
@ -18,11 +18,27 @@
|
|||
|
||||
import os
|
||||
import re
|
||||
|
||||
import pytest
|
||||
|
||||
from helium import (
|
||||
go_to, write, press, click, drag_file, find_all, wait_until, S, Text, Link, Button,
|
||||
select, scroll_down, get_driver, ENTER
|
||||
Button,
|
||||
ENTER,
|
||||
Link,
|
||||
S,
|
||||
Text,
|
||||
click,
|
||||
drag_file,
|
||||
find_all,
|
||||
get_driver,
|
||||
go_to,
|
||||
press,
|
||||
scroll_down,
|
||||
select,
|
||||
wait_until,
|
||||
write,
|
||||
)
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
|
||||
if os.getenv("LIBERVIA_TEST_ENV_E2E_WEB") is None:
|
||||
|
|
@ -214,8 +230,8 @@ class TestLists:
|
|||
assert Link("manage invitations").exists()
|
||||
item = Link("test item")
|
||||
assert item.exists()
|
||||
labels_elt = item.web_element.find_element_by_class_name("xmlui_field__labels")
|
||||
labels = [t.text for t in labels_elt.find_elements_by_tag_name("span")]
|
||||
labels_elt = item.web_element.find_element(By.CLASS_NAME, "xmlui_field__labels")
|
||||
labels = [t.text for t in labels_elt.find_elements(By.TAG_NAME, "span")]
|
||||
assert labels == ["label 1", "label 2"]
|
||||
|
||||
@pytest.mark.dependency(depends=["create_generic_list_item"])
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ from datetime import datetime
|
|||
import sh
|
||||
import io
|
||||
import sat_templates
|
||||
import libervia
|
||||
from libervia import web
|
||||
from libervia.backend.core import exceptions
|
||||
from libervia.backend.tools.common import regex
|
||||
import yaml
|
||||
|
|
@ -145,34 +145,34 @@ def use_e2e_env():
|
|||
keep_containers = keep_profiles = keep_vnc = visual = True
|
||||
|
||||
for p in Path.cwd().parents:
|
||||
package_path = p / "sat"
|
||||
package_path = p / "libervia"
|
||||
docker_path = p / "docker"
|
||||
if package_path.is_dir() and docker_path.is_dir():
|
||||
backend_root_path = p
|
||||
break
|
||||
else:
|
||||
raise exceptions.NotFound(
|
||||
"Can't find root of SàT code, are you sure that you are running the test "
|
||||
"from the backend repository?"
|
||||
"Can't find root of Libervia code, are you sure that you are running the "
|
||||
"test from the backend repository?"
|
||||
)
|
||||
|
||||
libervia_web_path = Path(libervia.__file__).parent.resolve()
|
||||
libervia_web_path = Path(web.__file__).parent.resolve()
|
||||
libervia_web_root_path = libervia_web_path.parent
|
||||
if (libervia_web_root_path / ".hg").is_dir():
|
||||
libervia_web_source = libervia_web_root_path
|
||||
libervia_web_target = "/src/libervia-web"
|
||||
else:
|
||||
libervia_web_source = libervia_web_path
|
||||
libervia_web_target = "/src/libervia-web/libervia"
|
||||
libervia_web_target = "/src/libervia-web/libervia/web"
|
||||
|
||||
sat_templates_path = Path(sat_templates.__file__).parent.resolve()
|
||||
sat_templates_root_path = sat_templates_path.parent
|
||||
if (sat_templates_root_path / ".hg").is_dir():
|
||||
sat_templates_source = sat_templates_root_path
|
||||
sat_templates_target = "/src/libervia-templates"
|
||||
libervia_templates_source = sat_templates_root_path
|
||||
libervia_templates_target = "/src/libervia-templates"
|
||||
else:
|
||||
sat_templates_source = sat_templates_path
|
||||
sat_templates_target = "/src/libervia-templates/sat_templates"
|
||||
libervia_templates_source = sat_templates_path
|
||||
libervia_templates_target = "/src/libervia-templates/sat_templates"
|
||||
|
||||
compose_e2e_path = docker_path / "docker-compose-e2e.yml"
|
||||
if not compose_e2e_path.is_file():
|
||||
|
|
@ -201,8 +201,8 @@ def use_e2e_env():
|
|||
target: {libervia_web_target}
|
||||
read_only: true
|
||||
- type: bind
|
||||
source: {sat_templates_source}
|
||||
target: {sat_templates_target}
|
||||
source: {libervia_templates_source}
|
||||
target: {libervia_templates_target}
|
||||
read_only: true
|
||||
"""
|
||||
),
|
||||
|
|
|
|||
|
|
@ -17,11 +17,14 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
import pytest
|
||||
|
||||
from libervia.cli.call_gui import AVCallUI
|
||||
from libervia.frontends.tools import display_servers
|
||||
try:
|
||||
from libervia.cli.call_gui import AVCallUI
|
||||
from libervia.frontends.tools import display_servers
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
except ModuleNotFoundError:
|
||||
pytest.skip("PyQt6 is not available.", allow_module_level=True)
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
|
|
|
|||
|
|
@ -17,9 +17,13 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
|
||||
from gi.repository import Gst
|
||||
import pytest
|
||||
|
||||
try:
|
||||
from gi.repository import Gst
|
||||
except ImportError:
|
||||
pytest.skip("Gst not available.", allow_module_level=True)
|
||||
|
||||
from libervia.backend.core import exceptions
|
||||
from libervia.backend.tools.common import data_format
|
||||
from libervia.frontends.tools import webrtc as webrtc_mod
|
||||
|
|
@ -158,6 +162,7 @@ class TestWebRtc:
|
|||
mock_pipeline.add.assert_called()
|
||||
mock_pad.link.assert_called()
|
||||
|
||||
@pytest.mark.skipif(Gst is None)
|
||||
@pytest.mark.asyncio
|
||||
async def test_setup_call_correct_role(self, host, webrtc, monkeypatch):
|
||||
"""Roles are set in setup_call."""
|
||||
|
|
@ -191,6 +196,7 @@ class TestWebRtc:
|
|||
assert "v4l2src" in webrtc.gst_pipe_desc
|
||||
assert "pulsesrc" in webrtc.gst_pipe_desc
|
||||
|
||||
@pytest.mark.skipif(Gst is None)
|
||||
@pytest.mark.asyncio
|
||||
async def test_setup_call_with_stun_and_turn(self, host, webrtc, monkeypatch):
|
||||
"""STUN and TURN server configurations are done in setup_call."""
|
||||
|
|
@ -231,6 +237,7 @@ class TestWebRtc:
|
|||
"add-turn-server", "turn://user:pass@turn.host:3478"
|
||||
)
|
||||
|
||||
@pytest.mark.skipif(Gst is None)
|
||||
@pytest.mark.asyncio
|
||||
async def test_setup_call_gstreamer_pipeline_failure(self, webrtc, monkeypatch):
|
||||
"""Test setup_call method handling Gstreamer pipeline failure."""
|
||||
|
|
|
|||
Loading…
Reference in a new issue