1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
/*
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <QObject>
#include <QTemporaryDir>
#include "gui/accountstate.h"
#include "gui/folderman.h"
#include "libsync/account.h"
constexpr auto testUsername = "test";
constexpr auto testPassword = "test";
class QNetworkReply;
namespace OCC
{
class Folder;
class FolderMan;
}
class EndToEndTestCredentials : public OCC::AbstractCredentials
{
Q_OBJECT
public:
explicit EndToEndTestCredentials()
: OCC::AbstractCredentials()
, _user(testUsername)
, _password(testPassword)
{
_wasFetched = true;
};
[[nodiscard]] QString authType() const override { return QStringLiteral("http"); }
[[nodiscard]] QString user() const override { return _user; }
[[nodiscard]] QString password() const override { return _password; }
[[nodiscard]] bool ready() const override { return true; }
bool stillValid(QNetworkReply *) override { return true; }
void askFromUser() override {};
void fetchFromKeychain() override { _wasFetched = true; Q_EMIT fetched(); };
void persist() override {};
void invalidateToken() override {};
void forgetSensitiveData() override {};
[[nodiscard]] QNetworkAccessManager *createQNAM() const override;
private:
QString _user;
QString _password;
};
class EndToEndTestHelper : public QObject
{
Q_OBJECT
public:
EndToEndTestHelper() = default;
~EndToEndTestHelper() override;
[[nodiscard]] OCC::AccountPtr account() const { return _account; }
[[nodiscard]] OCC::AccountStatePtr accountState() const { return _accountState; }
OCC::Folder *configureSyncFolder(const QString &targetPath = QStringLiteral(""));
signals:
void accountReady(const OCC::AccountPtr &account);
public slots:
void startAccountConfig();
void removeConfiguredAccount();
void removeConfiguredSyncFolder();
private slots:
void slotConnectToNCUrl(const QString &url);
void setupFolderMan();
private:
OCC::AccountPtr _account;
OCC::AccountStatePtr _accountState;
QScopedPointer<OCC::FolderMan> _folderMan;
QTemporaryDir _tempDir;
OCC::Folder* _syncFolder = nullptr;
};
|