File indexing completed on 2024-06-23 10:37:26

0001 /*
0002     SPDX-FileCopyrightText: 2017 Chinmoy Ranjan Pradhan <chinmoyrp65@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "privilegejobtest.h"
0008 
0009 #include <QTest>
0010 
0011 #include <KIO/ChmodJob>
0012 #include <KIO/CopyJob>
0013 #include <KIO/DeleteJob>
0014 #include <KIO/MkpathJob>
0015 #include <KIO/SimpleJob>
0016 #include <KIO/TransferJob>
0017 
0018 #include "kiotesthelper.h"
0019 
0020 QTEST_MAIN(PrivilegeJobTest)
0021 
0022 void PrivilegeJobTest::initTestCase()
0023 {
0024     cleanupTestCase();
0025     homeTmpDir();
0026     m_testFilePath = homeTmpDir() + "testfile";
0027     createTestFile(m_testFilePath);
0028     QVERIFY(QFile::exists(m_testFilePath));
0029     QVERIFY(QFile::setPermissions(homeTmpDir(), QFileDevice::ReadOwner | QFileDevice::ExeOwner));
0030 }
0031 
0032 void PrivilegeJobTest::cleanupTestCase()
0033 {
0034     QFile::setPermissions(homeTmpDir(), QFileDevice::ReadOwner | QFileDevice::WriteOwner | QFileDevice::ExeOwner);
0035     QDir(homeTmpDir()).removeRecursively();
0036 }
0037 
0038 void PrivilegeJobTest::privilegeChmod()
0039 {
0040     KFileItem item(QUrl::fromLocalFile(m_testFilePath));
0041     const mode_t origPerm = item.permissions();
0042     mode_t newPerm = origPerm ^ S_IWGRP;
0043     QVERIFY(newPerm != origPerm);
0044     // Remove search permission
0045     QVERIFY(QFile::setPermissions(homeTmpDir(), QFileDevice::ReadOwner));
0046     KFileItemList items;
0047     items << item;
0048     KIO::Job *job = KIO::chmod(items, newPerm, S_IWGRP, QString(), QString(), false, KIO::HideProgressInfo);
0049     job->addMetaData("UnitTesting", "true");
0050     job->setUiDelegate(nullptr);
0051     QVERIFY2(job->exec(), qPrintable(job->errorString()));
0052     QCOMPARE(job->queryMetaData("TestData"), QLatin1String("PrivilegeOperationAllowed"));
0053     // Bring it back
0054     QVERIFY(QFile::setPermissions(homeTmpDir(), QFileDevice::ReadOwner | QFileDevice::ExeOwner));
0055 }
0056 
0057 void PrivilegeJobTest::privilegeCopy()
0058 {
0059     const QUrl src = QUrl::fromLocalFile(m_testFilePath);
0060     const QUrl dest = QUrl::fromLocalFile(homeTmpDir() + "newtestfile");
0061     KIO::CopyJob *job = KIO::copy(src, dest, KIO::HideProgressInfo);
0062     job->addMetaData("UnitTesting", "true");
0063     job->setUiDelegate(nullptr);
0064     QVERIFY2(job->exec(), qPrintable(job->errorString()));
0065     QCOMPARE(job->queryMetaData("TestData"), QStringLiteral("PrivilegeOperationAllowed"));
0066 }
0067 
0068 void PrivilegeJobTest::privilegeDelete()
0069 {
0070     const QUrl url = QUrl::fromLocalFile(m_testFilePath);
0071     KIO::DeleteJob *job = KIO::del(url, KIO::HideProgressInfo);
0072     job->addMetaData("UnitTesting", "true");
0073     job->setUiDelegate(nullptr);
0074     QVERIFY2(job->exec(), qPrintable(job->errorString()));
0075     QCOMPARE(job->queryMetaData("TestData"), QStringLiteral("PrivilegeOperationAllowed"));
0076 }
0077 
0078 void PrivilegeJobTest::privilegeMkpath()
0079 {
0080     const QUrl dirUrl = QUrl::fromLocalFile(homeTmpDir() + "testdir");
0081     KIO::MkpathJob *job = KIO::mkpath(dirUrl, QUrl(), KIO::HideProgressInfo);
0082     job->addMetaData("UnitTesting", "true");
0083     job->setUiDelegate(nullptr);
0084     QVERIFY2(job->exec(), qPrintable(job->errorString()));
0085     QCOMPARE(job->queryMetaData("TestData"), QStringLiteral("PrivilegeOperationAllowed"));
0086 }
0087 
0088 void PrivilegeJobTest::privilegePut()
0089 {
0090     const QUrl url = QUrl::fromLocalFile(homeTmpDir() + "putfile");
0091     KIO::TransferJob *job = KIO::put(url, -1, KIO::HideProgressInfo);
0092     job->addMetaData("UnitTesting", "true");
0093     job->setUiDelegate(nullptr);
0094     QVERIFY2(job->exec(), qPrintable(job->errorString()));
0095     QCOMPARE(job->queryMetaData("TestData"), QStringLiteral("PrivilegeOperationAllowed"));
0096 }
0097 
0098 void PrivilegeJobTest::privilegeRename()
0099 {
0100     const QUrl src = QUrl::fromLocalFile(homeTmpDir() + "testfile");
0101     const QUrl dest = QUrl::fromLocalFile(homeTmpDir() + "newtestfile");
0102     KIO::SimpleJob *job = KIO::rename(src, dest, KIO::HideProgressInfo);
0103     job->addMetaData("UnitTesting", "true");
0104     job->setUiDelegate(nullptr);
0105     QVERIFY2(job->exec(), qPrintable(job->errorString()));
0106     QCOMPARE(job->queryMetaData("TestData"), QStringLiteral("PrivilegeOperationAllowed"));
0107 }
0108 
0109 void PrivilegeJobTest::privileSymlink()
0110 {
0111     const QString target = homeTmpDir() + "testfile";
0112     const QUrl dest = QUrl::fromLocalFile(homeTmpDir() + "symlink");
0113     KIO::SimpleJob *job = KIO::symlink(target, dest, KIO::HideProgressInfo);
0114     job->addMetaData("UnitTesting", "true");
0115     job->setUiDelegate(nullptr);
0116     QVERIFY2(job->exec(), qPrintable(job->errorString()));
0117     QCOMPARE(job->queryMetaData("TestData"), QStringLiteral("PrivilegeOperationAllowed"));
0118 }
0119 
0120 #include "moc_privilegejobtest.cpp"