Skip to content

Commit

Permalink
test: extend clipboard tests to various different sizes
Browse files Browse the repository at this point in the history
Check if copying 64k also works. And then try copying 200kb, both
with default settings (should be refused) and with limit raised. This
test assume already modified behavior on over the limit copy (truncate
to 0 instead of truncating to the limit).
Finally, test copying 300k, which should be rejected regardless of the
limit.

QubesOS/qubes-issues#9296
  • Loading branch information
marmarek committed Oct 24, 2024
1 parent 4463bf6 commit a28fcb7
Showing 1 changed file with 45 additions and 2 deletions.
47 changes: 45 additions & 2 deletions qubes/tests/integ/basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,10 @@ def setUp(self):
super(TC_30_Gui_daemon, self).setUp()
self.init_default_template()

async def _test_clipboard(self, test_string):
async def _test_clipboard(self, test_string,
set_features=None,
expect_content=None,
expect_source_name=None):
testvm1 = self.app.add_new_vm(
qubes.vm.appvm.AppVM,
name=self.make_vm_name('vm1'), label='red')
Expand All @@ -483,6 +486,9 @@ async def _test_clipboard(self, test_string):
await testvm2.create_on_disk()
self.app.save()

for feature, value in (set_features or {}).items():
testvm1.features[feature] = value

await asyncio.gather(
testvm1.start(),
testvm2.start())
Expand Down Expand Up @@ -514,12 +520,17 @@ async def _test_clipboard(self, test_string):

clipboard_content = \
open('/var/run/qubes/qubes-clipboard.bin', 'r').read().strip()

if expect_content is not None:
test_string = expect_content
self.assertEqual(clipboard_content, test_string,
"Clipboard copy operation failed - content")
if expect_source_name is None:
expect_source_name = testvm1.name
clipboard_source = \
open('/var/run/qubes/qubes-clipboard.bin.source',
'r').read().strip()
self.assertEqual(clipboard_source, testvm1.name,
self.assertEqual(clipboard_source, expect_source_name,
"Clipboard copy operation failed - owner")

# Then paste it to the other window
Expand Down Expand Up @@ -553,6 +564,38 @@ def test_000_clipboard(self):
test_string = "test123"
self.loop.run_until_complete(self._test_clipboard(test_string))

@unittest.skipUnless(
spawn.find_executable('xdotool'),
"xdotool not installed")
def test_001_clipboard_64k(self):
test_string = "test123abc" * 6400
self.loop.run_until_complete(self._test_clipboard(test_string))

@unittest.skipUnless(
spawn.find_executable('xdotool'),
"xdotool not installed")
def test_002_clipboard_200k_truncated(self):
test_string = "test123abc" * 20000
self.loop.run_until_complete(self._test_clipboard(test_string,
expect_content="", expect_source_name=""))

@unittest.skipUnless(
spawn.find_executable('xdotool'),
"xdotool not installed")
def test_002_clipboard_200k(self):
test_string = "test123abc" * 20000
self.loop.run_until_complete(self._test_clipboard(test_string,
set_features={"gui-max-clipboard-size": 200_000}))

@unittest.skipUnless(
spawn.find_executable('xdotool'),
"xdotool not installed")
def test_002_clipboard_300k(self):
test_string = "test123abc" * 30000
self.loop.run_until_complete(self._test_clipboard(test_string,
expect_content="Qube clipboard size over 256KiB and X11 INCR "
"protocol support is not implemented!\n"))


class TC_05_StandaloneVMMixin(object):
def setUp(self):
Expand Down

0 comments on commit a28fcb7

Please sign in to comment.