pushnotificationstestutils.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include <QLoggingCategory>
  2. #include <QSignalSpy>
  3. #include <QTest>
  4. #include "pushnotificationstestutils.h"
  5. Q_LOGGING_CATEGORY(lcFakeWebSocketServer, "nextcloud.test.fakewebserver", QtInfoMsg)
  6. FakeWebSocketServer::FakeWebSocketServer(quint16 port, QObject *parent)
  7. : QObject(parent)
  8. , _webSocketServer(new QWebSocketServer(QStringLiteral("Fake Server"), QWebSocketServer::NonSecureMode, this))
  9. {
  10. if (_webSocketServer->listen(QHostAddress::Any, port)) {
  11. connect(_webSocketServer, &QWebSocketServer::newConnection, this, &FakeWebSocketServer::onNewConnection);
  12. connect(_webSocketServer, &QWebSocketServer::closed, this, &FakeWebSocketServer::closed);
  13. qCInfo(lcFakeWebSocketServer) << "Open fake websocket server on port:" << port;
  14. return;
  15. }
  16. Q_UNREACHABLE();
  17. }
  18. FakeWebSocketServer::~FakeWebSocketServer()
  19. {
  20. close();
  21. }
  22. void FakeWebSocketServer::close()
  23. {
  24. if (_webSocketServer->isListening()) {
  25. qCInfo(lcFakeWebSocketServer) << "Close fake websocket server";
  26. _webSocketServer->close();
  27. qDeleteAll(_clients.begin(), _clients.end());
  28. }
  29. }
  30. void FakeWebSocketServer::processTextMessageInternal(const QString &message)
  31. {
  32. auto client = qobject_cast<QWebSocket *>(sender());
  33. emit processTextMessage(client, message);
  34. }
  35. void FakeWebSocketServer::onNewConnection()
  36. {
  37. qCInfo(lcFakeWebSocketServer) << "New connection on fake websocket server";
  38. auto socket = _webSocketServer->nextPendingConnection();
  39. connect(socket, &QWebSocket::textMessageReceived, this, &FakeWebSocketServer::processTextMessageInternal);
  40. connect(socket, &QWebSocket::disconnected, this, &FakeWebSocketServer::socketDisconnected);
  41. _clients << socket;
  42. }
  43. void FakeWebSocketServer::socketDisconnected()
  44. {
  45. qCInfo(lcFakeWebSocketServer) << "Socket disconnected";
  46. auto client = qobject_cast<QWebSocket *>(sender());
  47. if (client) {
  48. _clients.removeAll(client);
  49. client->deleteLater();
  50. }
  51. }
  52. OCC::AccountPtr FakeWebSocketServer::createAccount()
  53. {
  54. auto account = OCC::Account::create();
  55. QStringList typeList;
  56. typeList.append("files");
  57. QString websocketUrl("ws://localhost:12345");
  58. QVariantMap endpointsMap;
  59. endpointsMap["websocket"] = websocketUrl;
  60. QVariantMap notifyPushMap;
  61. notifyPushMap["type"] = typeList;
  62. notifyPushMap["endpoints"] = endpointsMap;
  63. QVariantMap capabilitiesMap;
  64. capabilitiesMap["notify_push"] = notifyPushMap;
  65. account->setCapabilities(capabilitiesMap);
  66. return account;
  67. }
  68. CredentialsStub::CredentialsStub(const QString &user, const QString &password)
  69. : _user(user)
  70. , _password(password)
  71. {
  72. }
  73. QString CredentialsStub::authType() const
  74. {
  75. return "";
  76. }
  77. QString CredentialsStub::user() const
  78. {
  79. return _user;
  80. }
  81. QString CredentialsStub::password() const
  82. {
  83. return _password;
  84. }
  85. QNetworkAccessManager *CredentialsStub::createQNAM() const
  86. {
  87. return nullptr;
  88. }
  89. bool CredentialsStub::ready() const
  90. {
  91. return false;
  92. }
  93. void CredentialsStub::fetchFromKeychain() { }
  94. void CredentialsStub::askFromUser() { }
  95. bool CredentialsStub::stillValid(QNetworkReply * /*reply*/)
  96. {
  97. return false;
  98. }
  99. void CredentialsStub::persist() { }
  100. void CredentialsStub::invalidateToken() { }
  101. void CredentialsStub::forgetSensitiveData() { }