|
|
|
|
@ -223,6 +223,39 @@ private slots:
|
|
|
|
|
requestStarted = {}; transferStarted = {}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void changedTreeRemovesUnpublishedCopy() { |
|
|
|
|
QTemporaryDir root; QVERIFY(root.isValid()); |
|
|
|
|
MemberFileBatch batch(42, 33, 22, MemberFileBatch::Download, nullptr); |
|
|
|
|
bool done = false, success = true; QString summary, downloaded; |
|
|
|
|
batch.progress = [](const QString&, int) {}; |
|
|
|
|
batch.conflict = [](const QString&, bool) { return int(QMessageBox::Cancel); }; |
|
|
|
|
batch.finished = [&](bool ok, const QString& status, const QStringList& roots) { |
|
|
|
|
done = true; success = ok; summary = status; QVERIFY(roots.isEmpty()); |
|
|
|
|
}; |
|
|
|
|
requestStarted = [&](mf_gui_request request) { |
|
|
|
|
QTimer::singleShot(0, &batch, [&, request] { |
|
|
|
|
mf_message response = request.message; response.kind = MF_RESPONSE; response.type = MF_DIRECTORY; |
|
|
|
|
if (response.command == MF_STAT) response.status = MF_STALE; |
|
|
|
|
else { |
|
|
|
|
response.data[0] = 8; response.data[2] = MF_FILE; memset(response.data + 19, 7, 16); |
|
|
|
|
memcpy(response.data + MF_ENTRY_HEADER, "file.txt", 8); response.data_len = MF_ENTRY_HEADER + 8; response.cursor = 1; |
|
|
|
|
} |
|
|
|
|
QVERIFY(batch.response(response)); |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
transferStarted = [&](mf_transfer_request request) { |
|
|
|
|
downloaded = QString::fromUtf8(request.local); |
|
|
|
|
QFile file(downloaded); QVERIFY(file.open(QIODevice::WriteOnly)); file.write("complete file"); file.close(); |
|
|
|
|
QTimer::singleShot(0, &batch, [&, request] { |
|
|
|
|
uint8_t bytes[51]{}; mf_put64(bytes, request.id); bytes[50] = 2; QVERIFY(batch.transfer(bytes, sizeof(bytes))); |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
batch.start({{"folder", {}, QByteArray(16, '\7'), true}}, root.path(), true); |
|
|
|
|
QTRY_VERIFY(done); QVERIFY(!success); QVERIFY(!downloaded.isEmpty()); QVERIFY(!QFileInfo::exists(downloaded)); |
|
|
|
|
QVERIFY(summary.contains("folder")); QCOMPARE(QDir(root.path()).entryList(QDir::AllEntries | QDir::NoDotAndDotDot).size(), 0); |
|
|
|
|
requestStarted = {}; transferStarted = {}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void deleteAndParentShortcuts() { |
|
|
|
|
sqlite3* sql = nullptr; QCOMPARE(sqlite3_open(":memory:", &sql), SQLITE_OK); |
|
|
|
|
QCOMPARE(sqlite3_exec(sql, "CREATE TABLE accounts(node_id INTEGER,display_name TEXT);" |
|
|
|
|
|