85 lines
2.4 KiB
C++
85 lines
2.4 KiB
C++
#pragma once
|
|
|
|
#include <Wallet/WalletApi.h>
|
|
|
|
#include <StatusGo/Utils.h>
|
|
|
|
#include <filesystem>
|
|
#include <string>
|
|
|
|
#include <QString>
|
|
|
|
class QCoreApplication;
|
|
|
|
namespace Status::Onboarding
|
|
{
|
|
class OnboardingController;
|
|
class MultiAccount;
|
|
} // namespace Status::Onboarding
|
|
|
|
namespace Wallet = Status::StatusGo::Wallet;
|
|
namespace Accounts = Status::StatusGo::Accounts;
|
|
namespace GoUtils = Status::StatusGo::Utils;
|
|
|
|
namespace Status::Testing
|
|
{
|
|
|
|
class AutoCleanTempTestDir;
|
|
|
|
class ScopedTestAccount final
|
|
{
|
|
public:
|
|
/*!
|
|
* \brief Create and logs in a new test account
|
|
* \param tempTestSubfolderName subfolder name of the temporary test folder where to initalize user data \see AutoCleanTempTestDir
|
|
* \todo make it more flexible by splitting into create account, login and wait for events
|
|
*/
|
|
explicit ScopedTestAccount(const std::string& tempTestSubfolderName,
|
|
const QString& accountName = defaultAccountName,
|
|
const QString& accountPassword = defaultAccountPassword);
|
|
~ScopedTestAccount();
|
|
|
|
void processMessages(size_t millis, std::function<bool()> shouldWaitUntilTimeout);
|
|
void logOut();
|
|
|
|
static Accounts::ChatOrWalletAccount firstChatAccount();
|
|
static Accounts::ChatOrWalletAccount firstWalletAccount();
|
|
/// Root account
|
|
const Status::Onboarding::MultiAccount& loggedInAccount() const;
|
|
|
|
QString password() const
|
|
{
|
|
return m_accountPassword;
|
|
};
|
|
StatusGo::HashedPassword hashedPassword() const
|
|
{
|
|
return GoUtils::hashPassword(m_accountPassword);
|
|
};
|
|
|
|
Status::Onboarding::OnboardingController* onboardingController() const;
|
|
|
|
/// Temporary test folder that is deleted when class instance goes out of scope
|
|
const std::filesystem::path& fusedTestFolder() const;
|
|
const std::filesystem::path& testDataDir() const;
|
|
|
|
QCoreApplication* app()
|
|
{
|
|
return m_app.get();
|
|
};
|
|
|
|
private:
|
|
std::unique_ptr<AutoCleanTempTestDir> m_fusedTestFolder;
|
|
std::unique_ptr<QCoreApplication> m_app;
|
|
std::filesystem::path m_dataDirPath;
|
|
std::shared_ptr<Status::Onboarding::OnboardingController> m_onboarding;
|
|
std::function<bool()> m_checkIfShouldContinue;
|
|
|
|
QString m_accountName;
|
|
QString m_accountPassword;
|
|
|
|
static constexpr auto defaultAccountName = "test_name";
|
|
static constexpr auto defaultAccountPassword = "test_pwd*";
|
|
};
|
|
|
|
} // namespace Status::Testing
|