File: test_lock.py

package info (click to toggle)
vorta 0.10.3-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 5,684 kB
  • sloc: python: 11,548; makefile: 89; xml: 63; sh: 51
file content (45 lines) | stat: -rw-r--r-- 1,864 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import pytest
from PyQt6 import QtCore

import vorta.application
import vorta.borg.borg_job


def test_create_perm_error(qapp, borg_json_output, mocker, qtbot):
    main = qapp.main_window
    mocker.patch.object(vorta.application.QMessageBox, 'show')

    stdout, stderr = borg_json_output('create_perm')
    popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
    mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)

    qtbot.mouseClick(main.createStartBtn, QtCore.Qt.MouseButton.LeftButton)

    qtbot.waitUntil(lambda: hasattr(qapp, '_msg'), **pytest._wait_defaults)
    assert qapp._msg.text().startswith("You do not have permission")
    del qapp._msg


def test_create_lock(qapp, borg_json_output, mocker, qtbot):
    main = qapp.main_window
    mocker.patch.object(vorta.application.QMessageBox, 'show')

    # Trigger locked repo
    stdout, stderr = borg_json_output('create_lock')
    popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
    mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)

    qtbot.mouseClick(main.createStartBtn, QtCore.Qt.MouseButton.LeftButton)

    qtbot.waitUntil(lambda: hasattr(qapp, '_msg'), **pytest._wait_defaults)
    assert "The repository at" in qapp._msg.text()

    # Break locked repo
    stdout, stderr = borg_json_output('create_break')
    popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0)
    mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result)

    qtbot.waitUntil(lambda: main.createStartBtn.isEnabled(), **pytest._wait_defaults)  # Prevent thread collision
    qapp._msg.accept()
    exp_message_text = 'Repository lock broken. Please redo your last action.'
    qtbot.waitUntil(lambda: exp_message_text in main.progressText.text(), **pytest._wait_defaults)