init
Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
Close stale issues and PRs / stale (push) Has been cancelled
Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
Close stale issues and PRs / stale (push) Has been cancelled
This commit is contained in:
103
Telegram/ThirdParty/xdg-desktop-portal/tests/test_clipboard.py
vendored
Normal file
103
Telegram/ThirdParty/xdg-desktop-portal/tests/test_clipboard.py
vendored
Normal file
@@ -0,0 +1,103 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# This file is formatted with Python Black
|
||||
|
||||
import tests as xdp
|
||||
|
||||
import dbus
|
||||
import pytest
|
||||
import os
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def required_templates():
|
||||
return {
|
||||
"Clipboard": {},
|
||||
"RemoteDesktop": {"force-clipboard-enabled": True},
|
||||
}
|
||||
|
||||
|
||||
class TestClipboard:
|
||||
def test_version(self, portals, dbus_con):
|
||||
xdp.check_version(dbus_con, "Clipboard", 1)
|
||||
|
||||
def start_session(self, dbus_con):
|
||||
clipboard_intf = xdp.get_portal_iface(dbus_con, "Clipboard")
|
||||
remotedesktop_intf = xdp.get_portal_iface(dbus_con, "RemoteDesktop")
|
||||
|
||||
create_session_request = xdp.Request(dbus_con, remotedesktop_intf)
|
||||
create_session_response = create_session_request.call(
|
||||
"CreateSession", options={"session_handle_token": "1234"}
|
||||
)
|
||||
assert create_session_response
|
||||
assert create_session_response.response == 0
|
||||
assert str(create_session_response.results["session_handle"])
|
||||
|
||||
session = xdp.Session.from_response(dbus_con, create_session_response)
|
||||
|
||||
clipboard_intf.RequestClipboard(session.handle, {})
|
||||
|
||||
start_session_request = xdp.Request(dbus_con, remotedesktop_intf)
|
||||
start_session_response = start_session_request.call(
|
||||
"Start", session_handle=session.handle, parent_window="", options={}
|
||||
)
|
||||
|
||||
assert start_session_response
|
||||
assert start_session_response.response == 0
|
||||
|
||||
return (session, start_session_response.results.get("clipboard_enabled"))
|
||||
|
||||
def test_request_clipboard_and_start_session(self, portals, dbus_con):
|
||||
_, clipboard_enabled = self.start_session(dbus_con)
|
||||
|
||||
assert clipboard_enabled
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"template_params", ({"RemoteDesktop": {"force-clipboard-enabled": False}},)
|
||||
)
|
||||
def test_checks_clipboard_enabled(self, portals, dbus_con):
|
||||
clipboard_intf = xdp.get_portal_iface(dbus_con, "Clipboard")
|
||||
session, clipboard_enabled = self.start_session(dbus_con)
|
||||
|
||||
assert not clipboard_enabled
|
||||
|
||||
with pytest.raises(dbus.exceptions.DBusException):
|
||||
clipboard_intf.SetSelection(session.handle, {})
|
||||
|
||||
def test_set_selection(self, portals, dbus_con):
|
||||
clipboard_intf = xdp.get_portal_iface(dbus_con, "Clipboard")
|
||||
session, _ = self.start_session(dbus_con)
|
||||
|
||||
clipboard_intf.SetSelection(session.handle, {})
|
||||
|
||||
def test_selection_write(self, portals, dbus_con):
|
||||
clipboard_intf = xdp.get_portal_iface(dbus_con, "Clipboard")
|
||||
session, _ = self.start_session(dbus_con)
|
||||
|
||||
fd_object: dbus.types.UnixFd = clipboard_intf.SelectionWrite(
|
||||
session.handle, 1234
|
||||
)
|
||||
assert fd_object
|
||||
|
||||
fd = fd_object.take()
|
||||
assert fd
|
||||
|
||||
bytes_written = os.write(fd, b"Clipboard")
|
||||
assert bytes_written > 0
|
||||
|
||||
clipboard_intf.SelectionWriteDone(session.handle, 1234, True)
|
||||
|
||||
def test_selection_read(self, portals, dbus_con):
|
||||
clipboard_intf = xdp.get_portal_iface(dbus_con, "Clipboard")
|
||||
session, _ = self.start_session(dbus_con)
|
||||
|
||||
fd_object: dbus.types.UnixFd = clipboard_intf.SelectionRead(
|
||||
session.handle, "mimetype"
|
||||
)
|
||||
assert fd_object
|
||||
|
||||
fd = fd_object.take()
|
||||
assert fd
|
||||
|
||||
clipboard_contents = os.read(fd, 1000)
|
||||
assert str(clipboard_contents)
|
||||
Reference in New Issue
Block a user