nextcloud-desktop/test/testcapabilities.cpp

318 lines
10 KiB
C++
Raw Normal View History

#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);
}
void testSupport_hasValidSubscription_returnTrue()
{
QVariantMap supportMap;
supportMap["hasValidSubscription"] = "true";
QVariantMap capabilitiesMap;
capabilitiesMap["support"] = supportMap;
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
const auto serverHasValidSubscription = capabilities.serverHasValidSubscription();
QCOMPARE(serverHasValidSubscription, true);
}
void testSupport_desktopEnterpriseChannel_returnString()
{
QVariantMap supportMap;
const auto defaultChannel = "stable";
supportMap["desktopEnterpriseChannel"] = defaultChannel;
QVariantMap capabilitiesMap;
capabilitiesMap["support"] = supportMap;
const auto &capabilities = OCC::Capabilities(capabilitiesMap);
const auto enterpriseChannel = capabilities.desktopEnterpriseChannel();
QCOMPARE(enterpriseChannel, defaultChannel);
}
};
QTEST_GUILESS_MAIN(TestCapabilities)
#include "testcapabilities.moc"