File indexing completed on 2025-01-12 12:29:35
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"