File indexing completed on 2024-04-28 03:58:56

0001 /*
0002     SPDX-FileCopyrightText: 2017 Montel Laurent <montel@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "kpasswordlineedittest.h"
0008 #include "kpasswordlineedit.h"
0009 #include <QAction>
0010 #include <QHBoxLayout>
0011 #include <QLineEdit>
0012 #include <QSignalSpy>
0013 #include <QTest>
0014 
0015 PasswordLineEditTest::PasswordLineEditTest(QObject *parent)
0016     : QObject(parent)
0017 {
0018 }
0019 
0020 void PasswordLineEditTest::shouldHaveDefaultValue()
0021 {
0022     KPasswordLineEdit lineEdit;
0023     QVERIFY(lineEdit.password().isEmpty());
0024 
0025     QHBoxLayout *mainLayout = lineEdit.findChild<QHBoxLayout *>(QStringLiteral("mainlayout"));
0026     QVERIFY(mainLayout);
0027     QCOMPARE(mainLayout->contentsMargins(), QMargins(0, 0, 0, 0));
0028 
0029     QLineEdit *edit = lineEdit.findChild<QLineEdit *>(QStringLiteral("passwordlineedit"));
0030     QVERIFY(edit);
0031     QVERIFY(edit->text().isEmpty());
0032     QCOMPARE(edit->echoMode(), QLineEdit::Password);
0033 
0034     QVERIFY(lineEdit.toggleEchoModeAction());
0035     QVERIFY(!lineEdit.toggleEchoModeAction()->isVisible());
0036 }
0037 
0038 void PasswordLineEditTest::shouldShowTogglePassword()
0039 {
0040     KPasswordLineEdit lineEdit;
0041     lineEdit.show();
0042     QVERIFY(QTest::qWaitForWindowExposed(&lineEdit));
0043 
0044     QLineEdit *edit = lineEdit.findChild<QLineEdit *>(QStringLiteral("passwordlineedit"));
0045     edit->setText(QStringLiteral("FOO"));
0046     QVERIFY(lineEdit.toggleEchoModeAction()->isVisible());
0047 
0048     edit->clear();
0049     QVERIFY(!lineEdit.toggleEchoModeAction()->isVisible());
0050 }
0051 
0052 void PasswordLineEditTest::shouldNotShowToggleWhenSetPassword()
0053 {
0054     KPasswordLineEdit lineEdit;
0055     lineEdit.show();
0056     QVERIFY(QTest::qWaitForWindowExposed(&lineEdit));
0057     lineEdit.setPassword(QStringLiteral("foo"));
0058     QVERIFY(!lineEdit.toggleEchoModeAction()->isVisible());
0059 }
0060 
0061 void PasswordLineEditTest::shouldShowRevealPassword()
0062 {
0063     KPasswordLineEdit lineEdit;
0064     lineEdit.show();
0065     QVERIFY(QTest::qWaitForWindowExposed(&lineEdit));
0066 
0067     QLineEdit *edit = lineEdit.findChild<QLineEdit *>(QStringLiteral("passwordlineedit"));
0068     edit->setText(QStringLiteral("FOO"));
0069     QVERIFY(lineEdit.toggleEchoModeAction()->isVisible());
0070 
0071     lineEdit.setRevealPasswordMode(KPassword::RevealMode::Never);
0072     QVERIFY(!lineEdit.toggleEchoModeAction()->isVisible());
0073 
0074     lineEdit.setRevealPasswordMode(KPassword::RevealMode::Always);
0075     QVERIFY(lineEdit.toggleEchoModeAction()->isVisible());
0076 
0077     lineEdit.setRevealPasswordMode(KPassword::RevealMode::OnlyNew);
0078     QVERIFY(lineEdit.toggleEchoModeAction()->isVisible());
0079 
0080     lineEdit.setPassword(QStringLiteral("FOO2"));
0081     QVERIFY(!lineEdit.toggleEchoModeAction()->isVisible());
0082 
0083     edit->clear();
0084     QVERIFY(!lineEdit.toggleEchoModeAction()->isVisible());
0085 }
0086 
0087 void PasswordLineEditTest::shouldEmitSignalPasswordChanged()
0088 {
0089     KPasswordLineEdit lineEdit;
0090     lineEdit.show();
0091     QSignalSpy spy(&lineEdit, &KPasswordLineEdit::passwordChanged);
0092     lineEdit.setPassword(QStringLiteral("foo"));
0093     QCOMPARE(spy.count(), 1);
0094 }
0095 
0096 void PasswordLineEditTest::testReadOnly()
0097 {
0098     KPasswordLineEdit lineEdit;
0099     lineEdit.show();
0100     lineEdit.setReadOnly(true);
0101     QSignalSpy spy(&lineEdit, &KPasswordLineEdit::passwordChanged);
0102     lineEdit.setPassword(QStringLiteral("foo"));
0103     QCOMPARE(spy.count(), 1);
0104     QTest::keyClick(&lineEdit, Qt::Key_A);
0105     QCOMPARE(spy.count(), 1);
0106     QCOMPARE(lineEdit.password(), QStringLiteral("foo"));
0107 }
0108 
0109 QTEST_MAIN(PasswordLineEditTest)
0110 
0111 #include "moc_kpasswordlineedittest.cpp"