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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
import pytest
from PyQt6.QtWidgets import QFormLayout, QWidget
from vorta.views.partials.password_input import PasswordInput, PasswordLineEdit
def test_create_password_line_edit(qtbot):
password_line_edit = PasswordLineEdit()
qtbot.addWidget(password_line_edit)
assert password_line_edit is not None
def test_password_line_get_password(qtbot):
password_line_edit = PasswordLineEdit()
qtbot.addWidget(password_line_edit)
assert password_line_edit.get_password() == ""
qtbot.keyClicks(password_line_edit, "test")
assert password_line_edit.get_password() == "test"
def test_password_line_visible(qtbot):
password_line_edit = PasswordLineEdit()
qtbot.addWidget(password_line_edit)
assert not password_line_edit.visible
password_line_edit.toggle_visibility()
assert password_line_edit.visible
with pytest.raises(TypeError):
password_line_edit.visible = "OK"
def test_password_line_error_state(qtbot):
password_line_edit = PasswordLineEdit()
qtbot.addWidget(password_line_edit)
assert not password_line_edit.error_state
assert password_line_edit.styleSheet() == ""
password_line_edit.error_state = True
assert password_line_edit.error_state
assert password_line_edit.styleSheet() == "QLineEdit { border: 2px solid red; }"
def test_password_line_visibility_button(qtbot):
password_line_edit = PasswordLineEdit(show_visibility_button=False)
qtbot.addWidget(password_line_edit)
assert not password_line_edit._show_visibility_button
password_line_edit = PasswordLineEdit()
qtbot.addWidget(password_line_edit)
assert password_line_edit._show_visibility_button
# test visibility button
password_line_edit.showHideAction.trigger()
assert password_line_edit.visible
password_line_edit.showHideAction.trigger()
assert not password_line_edit.visible
# PasswordInput
def test_create_password_input(qapp, qtbot):
password_input = PasswordInput()
qtbot.addWidget(password_input.create_form_widget(parent=qapp.main_window))
assert password_input is not None
assert not password_input.passwordLineEdit.error_state
assert not password_input.confirmLineEdit.error_state
def test_password_input_get_password(qapp, qtbot):
password_input = PasswordInput()
qtbot.addWidget(password_input.create_form_widget(parent=qapp.main_window))
assert password_input.get_password() == ""
password_input.passwordLineEdit.setText("test")
assert password_input.get_password() == "test"
def test_password_input_validation(qapp, qtbot):
password_input = PasswordInput(minimum_length=10)
qtbot.addWidget(password_input.create_form_widget(parent=qapp.main_window))
qtbot.keyClicks(password_input.passwordLineEdit, "123456789")
qtbot.keyClicks(password_input.confirmLineEdit, "123456789")
assert password_input.passwordLineEdit.error_state
assert password_input.validation_label.text() == "Passwords must be at least 10 characters long."
password_input.clear()
qtbot.keyClicks(password_input.passwordLineEdit, "123456789")
qtbot.keyClicks(password_input.confirmLineEdit, "test")
assert password_input.passwordLineEdit.error_state
assert password_input.confirmLineEdit.error_state
assert password_input.validation_label.text() == "Passwords must be identical and at least 10 characters long."
password_input.clear()
qtbot.keyClicks(password_input.passwordLineEdit, "1234567890")
qtbot.keyClicks(password_input.confirmLineEdit, "test")
assert not password_input.passwordLineEdit.error_state
assert password_input.confirmLineEdit.error_state
assert password_input.validation_label.text() == "Passwords must be identical."
password_input.clear()
qtbot.keyClicks(password_input.passwordLineEdit, "1234567890")
qtbot.keyClicks(password_input.confirmLineEdit, "1234567890")
assert not password_input.passwordLineEdit.error_state
assert not password_input.confirmLineEdit.error_state
assert password_input.validation_label.text() == ""
def test_password_input_validation_disabled(qapp, qtbot):
password_input = PasswordInput(show_error=False)
qtbot.addWidget(password_input.create_form_widget(parent=qapp.main_window))
qtbot.keyClicks(password_input.passwordLineEdit, "test")
qtbot.keyClicks(password_input.confirmLineEdit, "test")
assert not password_input.passwordLineEdit.error_state
assert not password_input.confirmLineEdit.error_state
assert password_input.validation_label.text() == ""
password_input.set_validation_enabled(True)
qtbot.keyClicks(password_input.passwordLineEdit, "s")
qtbot.keyClicks(password_input.confirmLineEdit, "a")
assert password_input.passwordLineEdit.error_state
assert password_input.confirmLineEdit.error_state
assert password_input.validation_label.text() == "Passwords must be identical and at least 9 characters long."
password_input.set_validation_enabled(False)
assert not password_input.passwordLineEdit.error_state
assert not password_input.confirmLineEdit.error_state
assert password_input.validation_label.text() == ""
def test_password_input_set_label(qapp, qtbot):
password_input = PasswordInput(label=["test", "test2"])
qtbot.addWidget(password_input.create_form_widget(parent=qapp.main_window))
assert password_input._label_password.text() == "test"
assert password_input._label_confirm.text() == "test2"
password_input.set_labels("test3", "test4")
assert password_input._label_password.text() == "test3"
assert password_input._label_confirm.text() == "test4"
def test_password_input_add_form_to_layout(qapp, qtbot):
password_input = PasswordInput()
widget = QWidget()
form_layout = QFormLayout(widget)
qtbot.addWidget(widget)
password_input.add_form_to_layout(form_layout)
assert form_layout.itemAt(0, QFormLayout.ItemRole.LabelRole).widget() == password_input._label_password
assert form_layout.itemAt(0, QFormLayout.ItemRole.FieldRole).widget() == password_input.passwordLineEdit
assert form_layout.itemAt(1, QFormLayout.ItemRole.LabelRole).widget() == password_input._label_confirm
assert form_layout.itemAt(1, QFormLayout.ItemRole.FieldRole).widget() == password_input.confirmLineEdit
|