Offer attachment encryption after selecting a file
This commit is contained in:
1 parent
7e08135bba
commit
b3495349e1
4 files changed
+57
-26
No files matched your search
@@ -22,6 +22,7 @@ extern "C" {
|
||||
#include <QMessageBox>
|
||||
#include <QAbstractButton>
|
||||
#include <QPushButton>
|
||||
#include <QCheckBox>
|
||||
|
||||
static QString makeFile(const QTemporaryDir& dir, const QString& name, const QByteArray& contents = "test") {
|
||||
const QString path = dir.filePath(name);
|
||||
@@ -47,12 +48,19 @@ static bool dropUrls(QWidget* target, const QList<QUrl>& urls, bool process = tr
|
||||
class FileDropTest : public QObject {
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void encryptedAttachmentCapturesTargetAndResetsChoice_data() {
|
||||
QTest::addColumn<bool>("picker");
|
||||
QTest::newRow("drop") << false; QTest::newRow("file-picker") << true;
|
||||
}
|
||||
void encryptedAttachmentCapturesTargetAndResetsChoice() {
|
||||
QFETCH(bool, picker);
|
||||
QTemporaryDir dir; QVERIFY(dir.isValid());
|
||||
const QString file = makeFile(dir, "private.txt", "private bytes");
|
||||
InputBar bar(nullptr, nullptr); bar.show(); bar.setRecordingContext(dir.filePath("media"), "123");
|
||||
auto* editor = bar.findChild<QTextEdit*>(); QVERIFY(editor);
|
||||
auto* encrypt = bar.findChild<QPushButton*>("encryptAttachmentButton"); QVERIFY(encrypt);
|
||||
auto* encrypt = bar.findChild<QCheckBox*>("encryptAttachmentCheckBox"); QVERIFY(encrypt);
|
||||
auto* clear = bar.findChild<QPushButton*>("clearAttachmentButton"); QVERIFY(clear);
|
||||
QVERIFY(!encrypt->isVisible()); QVERIFY(!encrypt->isChecked());
|
||||
QSignalSpy ordinary(&bar, &InputBar::sendFileAttachment);
|
||||
int encrypted = 0;
|
||||
connect(&bar, &InputBar::submitAttachment, &bar, [&](const QString& target, attachment_send_req* request) {
|
||||
@@ -60,13 +68,35 @@ private slots:
|
||||
QCOMPARE(QString::fromUtf8(request->source), file); QCOMPARE(QString::fromUtf8(request->info.name), QString("private.txt"));
|
||||
++encrypted; u_free(request);
|
||||
});
|
||||
QVERIFY(dropUrls(editor->viewport(), {QUrl::fromLocalFile(file)}));
|
||||
QTimer timer; timer.setInterval(1);
|
||||
if (picker) {
|
||||
connect(&timer, &QTimer::timeout, &bar, [&] {
|
||||
auto* dialog = qobject_cast<QFileDialog*>(QApplication::activeModalWidget());
|
||||
if (!dialog) return;
|
||||
timer.stop(); dialog->selectFile(file);
|
||||
QMetaObject::invokeMethod(dialog, "accept", Qt::DirectConnection);
|
||||
});
|
||||
timer.start(); QVERIFY(QMetaObject::invokeMethod(&bar, "onAttachClicked", Qt::DirectConnection));
|
||||
} else QVERIFY(dropUrls(editor->viewport(), {QUrl::fromLocalFile(file)}));
|
||||
QVERIFY(encrypt->isVisible()); QVERIFY(!encrypt->isChecked());
|
||||
QTest::mouseClick(encrypt, Qt::LeftButton); QVERIFY(encrypt->isChecked());
|
||||
QTest::keyClick(editor, Qt::Key_Return);
|
||||
QCOMPARE(encrypted, 1); QCOMPARE(ordinary.size(), 0); QVERIFY(!encrypt->isChecked()); QVERIFY(QFile::exists(file));
|
||||
QVERIFY(!encrypt->isVisible());
|
||||
QVERIFY(dropUrls(editor->viewport(), {QUrl::fromLocalFile(file)}));
|
||||
QTest::mouseClick(encrypt, Qt::LeftButton); QVERIFY(encrypt->isChecked());
|
||||
bar.setRecordingContext(dir.filePath("media"), "456"); QVERIFY(!encrypt->isChecked());
|
||||
bar.setDmMode(true); QVERIFY(encrypt->isHidden()); QVERIFY(!encrypt->isChecked());
|
||||
QTest::mouseClick(clear, Qt::LeftButton); QVERIFY(!encrypt->isVisible()); QVERIFY(!encrypt->isChecked());
|
||||
QVERIFY(dropUrls(editor->viewport(), {QUrl::fromLocalFile(file)}));
|
||||
QTest::mouseClick(encrypt, Qt::LeftButton); QVERIFY(encrypt->isChecked());
|
||||
QVERIFY(dropUrls(editor->viewport(), {QUrl::fromLocalFile(dir.filePath("missing.txt"))}));
|
||||
QVERIFY(encrypt->isChecked());
|
||||
QVERIFY(dropUrls(editor->viewport(), {QUrl::fromLocalFile(makeFile(dir, "second.txt"))}));
|
||||
QVERIFY(encrypt->isVisible()); QVERIFY(!encrypt->isChecked());
|
||||
QTest::mouseClick(encrypt, Qt::LeftButton); QVERIFY(encrypt->isChecked());
|
||||
bar.setRecordingContext(dir.filePath("media"), "456"); QVERIFY(!encrypt->isVisible()); QVERIFY(!encrypt->isChecked());
|
||||
bar.setDmMode(true);
|
||||
QVERIFY(dropUrls(editor->viewport(), {QUrl::fromLocalFile(file)}));
|
||||
QVERIFY(!encrypt->isVisible()); QVERIFY(!encrypt->isChecked());
|
||||
}
|
||||
|
||||
void replyDraftAndLateResults() {
|
||||
|
||||
Reference in new issue
Block a user