mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-29 20:28:57 +03:00
098f4ef164
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
288 lines
9.4 KiB
C++
288 lines
9.4 KiB
C++
#include <QTest>
|
|
|
|
#include "capabilities.h"
|
|
#include "logger.h"
|
|
|
|
#include <QStandardPaths>
|
|
|
|
class TestCapabilities : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
private slots:
|
|
void initTestCase()
|
|
{
|
|
OCC::Logger::instance()->setLogFlush(true);
|
|
OCC::Logger::instance()->setLogDebug(true);
|
|
|
|
QStandardPaths::setTestModeEnabled(true);
|
|
}
|
|
|
|
void testPushNotificationsAvailable_pushNotificationsForActivitiesAvailable_returnTrue()
|
|
{
|
|
QStringList typeList;
|
|
typeList.append("activities");
|
|
|
|
QVariantMap notifyPushMap;
|
|
notifyPushMap["type"] = typeList;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["notify_push"] = notifyPushMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
const auto activitiesPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Activities);
|
|
|
|
QCOMPARE(activitiesPushNotificationsAvailable, true);
|
|
}
|
|
|
|
void testPushNotificationsAvailable_pushNotificationsForActivitiesNotAvailable_returnFalse()
|
|
{
|
|
QStringList typeList;
|
|
typeList.append("noactivities");
|
|
|
|
QVariantMap notifyPushMap;
|
|
notifyPushMap["type"] = typeList;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["notify_push"] = notifyPushMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
const auto activitiesPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Activities);
|
|
|
|
QCOMPARE(activitiesPushNotificationsAvailable, false);
|
|
}
|
|
|
|
void testPushNotificationsAvailable_pushNotificationsForFilesAvailable_returnTrue()
|
|
{
|
|
QStringList typeList;
|
|
typeList.append("files");
|
|
|
|
QVariantMap notifyPushMap;
|
|
notifyPushMap["type"] = typeList;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["notify_push"] = notifyPushMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
const auto filesPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Files);
|
|
|
|
QCOMPARE(filesPushNotificationsAvailable, true);
|
|
}
|
|
|
|
void testPushNotificationsAvailable_pushNotificationsForFilesNotAvailable_returnFalse()
|
|
{
|
|
QStringList typeList;
|
|
typeList.append("nofiles");
|
|
|
|
QVariantMap notifyPushMap;
|
|
notifyPushMap["type"] = typeList;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["notify_push"] = notifyPushMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
const auto filesPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Files);
|
|
|
|
QCOMPARE(filesPushNotificationsAvailable, false);
|
|
}
|
|
|
|
void testPushNotificationsAvailable_pushNotificationsForNotificationsAvailable_returnTrue()
|
|
{
|
|
QStringList typeList;
|
|
typeList.append("notifications");
|
|
|
|
QVariantMap notifyPushMap;
|
|
notifyPushMap["type"] = typeList;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["notify_push"] = notifyPushMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
const auto notificationsPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Notifications);
|
|
|
|
QCOMPARE(notificationsPushNotificationsAvailable, true);
|
|
}
|
|
|
|
void testPushNotificationsAvailable_pushNotificationsForNotificationsNotAvailable_returnFalse()
|
|
{
|
|
QStringList typeList;
|
|
typeList.append("nonotifications");
|
|
|
|
QVariantMap notifyPushMap;
|
|
notifyPushMap["type"] = typeList;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["notify_push"] = notifyPushMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
const auto notificationsPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Notifications);
|
|
|
|
QCOMPARE(notificationsPushNotificationsAvailable, false);
|
|
}
|
|
|
|
void testPushNotificationsAvailable_pushNotificationsNotAvailable_returnFalse()
|
|
{
|
|
const auto &capabilities = OCC::Capabilities(QVariantMap());
|
|
const auto activitiesPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Activities);
|
|
const auto filesPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Files);
|
|
const auto notificationsPushNotificationsAvailable = capabilities.availablePushNotifications().testFlag(OCC::PushNotificationType::Notifications);
|
|
|
|
QCOMPARE(activitiesPushNotificationsAvailable, false);
|
|
QCOMPARE(filesPushNotificationsAvailable, false);
|
|
QCOMPARE(notificationsPushNotificationsAvailable, false);
|
|
}
|
|
|
|
void testPushNotificationsWebSocketUrl_urlAvailable_returnUrl()
|
|
{
|
|
QString websocketUrl("testurl");
|
|
|
|
QVariantMap endpointsMap;
|
|
endpointsMap["websocket"] = websocketUrl;
|
|
|
|
QVariantMap notifyPushMap;
|
|
notifyPushMap["endpoints"] = endpointsMap;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["notify_push"] = notifyPushMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
|
|
QCOMPARE(capabilities.pushNotificationsWebSocketUrl(), websocketUrl);
|
|
}
|
|
|
|
void testUserStatus_userStatusAvailable_returnTrue()
|
|
{
|
|
QVariantMap userStatusMap;
|
|
userStatusMap["enabled"] = true;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["user_status"] = userStatusMap;
|
|
|
|
const OCC::Capabilities capabilities(capabilitiesMap);
|
|
|
|
QVERIFY(capabilities.userStatus());
|
|
}
|
|
|
|
void testUserStatus_userStatusNotAvailable_returnFalse()
|
|
{
|
|
QVariantMap userStatusMap;
|
|
userStatusMap["enabled"] = false;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["user_status"] = userStatusMap;
|
|
|
|
const OCC::Capabilities capabilities(capabilitiesMap);
|
|
|
|
QVERIFY(!capabilities.userStatus());
|
|
}
|
|
|
|
void testUserStatus_userStatusNotInCapabilites_returnFalse()
|
|
{
|
|
QVariantMap capabilitiesMap;
|
|
|
|
const OCC::Capabilities capabilities(capabilitiesMap);
|
|
|
|
QVERIFY(!capabilities.userStatus());
|
|
}
|
|
|
|
void testUserStatusSupportsEmoji_supportsEmojiAvailable_returnTrue()
|
|
{
|
|
QVariantMap userStatusMap;
|
|
userStatusMap["enabled"] = true;
|
|
userStatusMap["supports_emoji"] = true;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["user_status"] = userStatusMap;
|
|
|
|
const OCC::Capabilities capabilities(capabilitiesMap);
|
|
|
|
QVERIFY(capabilities.userStatus());
|
|
}
|
|
|
|
void testUserStatusSupportsEmoji_supportsEmojiNotAvailable_returnFalse()
|
|
{
|
|
QVariantMap userStatusMap;
|
|
userStatusMap["enabled"] = true;
|
|
userStatusMap["supports_emoji"] = false;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["user_status"] = userStatusMap;
|
|
|
|
const OCC::Capabilities capabilities(capabilitiesMap);
|
|
|
|
QVERIFY(!capabilities.userStatusSupportsEmoji());
|
|
}
|
|
|
|
void testUserStatusSupportsEmoji_supportsEmojiNotInCapabilites_returnFalse()
|
|
{
|
|
QVariantMap userStatusMap;
|
|
userStatusMap["enabled"] = true;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["user_status"] = userStatusMap;
|
|
|
|
const OCC::Capabilities capabilities(capabilitiesMap);
|
|
|
|
QVERIFY(!capabilities.userStatusSupportsEmoji());
|
|
}
|
|
|
|
void testShareDefaultPermissions_defaultSharePermissionsNotInCapabilities_returnZero()
|
|
{
|
|
QVariantMap filesSharingMap;
|
|
filesSharingMap["api_enabled"] = false;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["files_sharing"] = filesSharingMap;
|
|
|
|
const OCC::Capabilities capabilities(capabilitiesMap);
|
|
const auto defaultSharePermissionsNotInCapabilities = capabilities.shareDefaultPermissions();
|
|
|
|
QCOMPARE(defaultSharePermissionsNotInCapabilities, {});
|
|
}
|
|
|
|
void testShareDefaultPermissions_defaultSharePermissionsAvailable_returnPermissions()
|
|
{
|
|
QVariantMap filesSharingMap;
|
|
filesSharingMap["api_enabled"] = true;
|
|
filesSharingMap["default_permissions"] = 31;
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["files_sharing"] = filesSharingMap;
|
|
|
|
const OCC::Capabilities capabilities(capabilitiesMap);
|
|
const auto defaultSharePermissionsAvailable = capabilities.shareDefaultPermissions();
|
|
|
|
QCOMPARE(defaultSharePermissionsAvailable, 31);
|
|
}
|
|
|
|
void testBulkUploadAvailable_bulkUploadAvailable_returnTrue()
|
|
{
|
|
QVariantMap bulkuploadMap;
|
|
bulkuploadMap["bulkupload"] = "1.0";
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["dav"] = bulkuploadMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
const auto bulkuploadAvailable = capabilities.bulkUpload();
|
|
|
|
QCOMPARE(bulkuploadAvailable, true);
|
|
}
|
|
|
|
void testFilesLockAvailable_filesLockAvailable_returnTrue()
|
|
{
|
|
QVariantMap filesMap;
|
|
filesMap["locking"] = "1.0";
|
|
|
|
QVariantMap capabilitiesMap;
|
|
capabilitiesMap["files"] = filesMap;
|
|
|
|
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
|
|
const auto filesLockAvailable = capabilities.filesLockAvailable();
|
|
|
|
QCOMPARE(filesLockAvailable, true);
|
|
}
|
|
};
|
|
|
|
QTEST_GUILESS_MAIN(TestCapabilities)
|
|
#include "testcapabilities.moc"
|