4
1
mirror of https://github.com/QuasarApp/Heart.git synced 2025-05-14 10:29:43 +00:00
This commit is contained in:
Andrei Yankovich 2019-10-20 12:53:17 +03:00
parent 24b13b281f
commit 8cebdc847b
13 changed files with 118 additions and 614 deletions

@ -18,7 +18,6 @@ CONFIG(release, debug|release): {
LIBS += -L$$CLIENTPROTOCOL_LIB_OUTPUT_DIR -lClientProtocol
include($$PWD/ClientProtocolIncludes.pri)
include($$PWD/../Qt-Secret/src/Qt-Secret.pri)

@ -42,32 +42,30 @@ include($$PWD/../QuasarAppLib/QuasarLib.pri)
SOURCES += \
abstractdata.cpp \
DataPacakages/abstract.cpp \
DataPacakages/badrequest.cpp \
abstractheader.cpp \
abstractnode.cpp \
abstractnodeinfo.cpp \
# baseclient.cpp \
abstractnode.cpp \
abstractnodeinfo.cpp \
abstractpackage.cpp \
baseheader.cpp \
basenodeinfo.cpp \
# baseserver.cpp \
basenodeinfo.cpp \
basepackage.cpp \
clientprotocol.cpp
clientprotocol.cpp
HEADERS += \
abstractdata.h \
DataPacakages/abstract.h \
DataPacakages/badrequest.h \
abstractheader.h \
abstractnode.h \
abstractnodeinfo.h \
# baseclient.h \
abstractnode.h \
abstractnodeinfo.h \
abstractpackage.h \
baseheader.h \
basenodeinfo.h \
# baseserver.h \
basenodeinfo.h \
basepackage.h \
clientprotocol.h \
clientprotocol_global.h \
config.h
clientprotocol.h \
clientprotocol_global.h \
config.h
include($$PWD/ClientProtocolIncludes.pri)

@ -1,4 +1,5 @@
INCLUDEPATH += "$$PWD/"
INCLUDEPATH += "$$PWD/Objects"
INCLUDEPATH += "$$PWD/DataPacakages"
LIBS += -L$$CLIENTPROTOCOL_LIB_OUTPUT_DIR -lcrypto

@ -1,4 +1,4 @@
#include "abstractdata.h"
#include "abstract.h"
#include <QDataStream>
#include <QMap>
#include <typeinfo>
@ -6,16 +6,17 @@
namespace ClientProtocol {
namespace Data {
static QMap<size_t, unsigned char> commandTable = {};
unsigned char ClientProtocol::AbstractData::cmd() const {
unsigned char Abstract::cmd() const {
return _cmd;
}
AbstractData::AbstractData() {
Abstract::Abstract() {
size_t hash = typeid(*this).hash_code();
if (!commandTable.contains(hash)) {
commandTable[hash] = static_cast<unsigned char>(commandTable.size());
@ -23,13 +24,13 @@ AbstractData::AbstractData() {
_cmd = commandTable[hash];
}
AbstractData::AbstractData(const ClientProtocol::BasePackage &package):
AbstractData() {
Abstract::Abstract(const ClientProtocol::BasePackage &package):
Abstract() {
fromBytes(package.data);
}
bool AbstractData::fromBytes(const QByteArray &data) {
bool Abstract::fromBytes(const QByteArray &data) {
if (data.isEmpty())
return false;
@ -39,14 +40,14 @@ bool AbstractData::fromBytes(const QByteArray &data) {
return true;
}
QByteArray AbstractData::toBytes() const {
QByteArray Abstract::toBytes() const {
QByteArray res;
QDataStream stream(&res, QIODevice::WriteOnly);
toStream(stream);
return res;
}
bool AbstractData::toPackage(BasePackage &package,
bool Abstract::toPackage(BasePackage &package,
unsigned char trigeredCommand) const {
if (!isValid()) {
@ -62,18 +63,20 @@ bool AbstractData::toPackage(BasePackage &package,
return package.isValid();
}
QDataStream &AbstractData::fromStream(QDataStream &stream) {
QDataStream &Abstract::fromStream(QDataStream &stream) {
stream >> _cmd;
return stream;
}
QDataStream &AbstractData::toStream(QDataStream &stream) const {
QDataStream &Abstract::toStream(QDataStream &stream) const {
stream << _cmd;
return stream;
}
bool AbstractData::isValid() const {
bool Abstract::isValid() const {
return _cmd;
}
}
}

@ -4,11 +4,13 @@
namespace ClientProtocol {
namespace Data {
/**
* @brief The AbstractData class
* all data packages inherited this class.
*/
class CLIENTPROTOCOLSHARED_EXPORT AbstractData
class CLIENTPROTOCOLSHARED_EXPORT Abstract
{
private:
/**
@ -20,13 +22,13 @@ protected:
/**
* @brief AbstractData
*/
explicit AbstractData();
explicit Abstract();
/**
* @brief AbstractData
* @param package
*/
explicit AbstractData(const BasePackage& package);
explicit Abstract(const BasePackage& package);
/**
* @brief fromBytes - private initialisation of object from byte array
@ -77,11 +79,13 @@ public:
*/
virtual bool isValid() const;
virtual ~AbstractData();
virtual ~Abstract();
};
}
}
#endif // ABSTRACTDATA_H

@ -0,0 +1,6 @@
#include "badrequest.h"
BadRequest::BadRequest()
{
}

@ -0,0 +1,16 @@
#ifndef BADREQUEST_H
#define BADREQUEST_H
#include "abstract.h"
namespace ClientProtocol{
}
class BadRequest : public Abstract
{
public:
BadRequest();
};
#endif // BADREQUEST_H

@ -1,4 +1,4 @@
#include "abstractdata.h"
#include "abstract.h"
#include "abstractnode.h"
#include <QSslCertificate>
#include <QSslKey>
@ -292,7 +292,7 @@ bool AbstractNode::sendPackage(const BasePackage &pkg, QAbstractSocket *target)
return sendet;
}
bool AbstractNode::sendResponse(const AbstractData &resp, quint32 id, const BaseHeader *req) {
bool AbstractNode::sendResponse(const Abstract &resp, quint32 id, const BaseHeader *req) {
auto client = getInfoPtr(id);
if (!client) {
@ -317,6 +317,46 @@ bool AbstractNode::sendResponse(const AbstractData &resp, quint32 id, const Base
return true;
}
void AbstractNode::badRequest(quint32 address, const BaseHeader &req) {
auto client = getInfoPtr(address);
if (!client) {
QuasarAppUtils::Params::verboseLog("Bad request detected, bud responce command not sendet!"
" because client == null",
QuasarAppUtils::Error);
return;
}
if (!changeTrust(address, REQUEST_ERROR)) {
QuasarAppUtils::Params::verboseLog("Bad request detected, bud responce command not sendet!"
" because karma not changed",
QuasarAppUtils::Error);
return;
}
BasePackage pcg;
if (!(pcg.create(Command::BadRequest, Type::Responke, &req))) {
QuasarAppUtils::Params::verboseLog("Bad request detected, bud responce command not sendet!"
" because package not created",
QuasarAppUtils::Error);
};
if (!sendPackage(pcg, client->getSct())) {
QuasarAppUtils::Params::verboseLog("Bad request detected, bud responce command not sendet!"
" because karma not changed",
QuasarAppUtils::Error);
return;
}
QuasarAppUtils::Params::verboseLog("Bad request sendet to adderess: " +
client->getSct()->peerAddress().toString(),
QuasarAppUtils::Info);
}
QString AbstractNode::getWorkState() const {
if (isListening()) {
if (connectionsCount() >= maxPendingConnections())

@ -43,7 +43,7 @@ struct SslSrtData {
#define LOGICK_ERROOR -20
#define REQUEST_ERROR -5
class AbstractData;
class Abstract;
/**
* @brief The AbstractNode class
@ -199,7 +199,7 @@ protected:
* @param req
* @return
*/
virtual bool sendResponse(const AbstractData& resp, quint32 address,
virtual bool sendResponse(const Abstract& resp, quint32 address,
const BaseHeader *req = nullptr);
/**

@ -1,3 +1,4 @@
#include "abstract.h"
#include "abstractpackage.h"
namespace ClientProtocol {

@ -7,6 +7,7 @@
namespace ClientProtocol {
class Abstract;
/**
* @brief The Package struct
*/

@ -4,6 +4,8 @@
#include "baseheader.h"
#include "basepackage.h"
#include "config.h"
#include "abstractnode.h"
#include "abstractnodeinfo.h"
namespace ClientProtocol {

@ -1,48 +1,22 @@
#include <QtTest>
//#include <cp.h>
//#include <sp.h>
#include <thread>
#include <quasarapp.h>
#include <QCoreApplication>
#include <QCryptographicHash>
//#include <sqldbwriter.h>
//#include <sqldbcache.h>
#include <clientprotocol.h>
//#include <snake.h>
//#include <playerdbdata.h>
//#include <mainserver.h>
//#include "factorynetobjects.h"
#include "testutils.h"
// add necessary includes here
//#define TEST_LOCAL_SERVER QString(DEFAULT_SERVER) + "Test"
//#define TEST_SERVER_ADDRESS LOCAL_SNAKE_SERVER
//#define TEST_SERVER_PORT 27777
#define TEST_LOCAL_HOST "127.0.0.1"
#define TEST_PORT 1234
class testSankeServer : public QObject
{
Q_OBJECT
private:
// void testPingServerProtockol(ServerProtocol::Client &cli);
// void testStateServerProtockol(ServerProtocol::Client &cli);
// void testBanServerProtockol(ServerProtocol::Client& cli);
// void testUnBanServerProtockol(ServerProtocol::Client& cli);
// void testRestartServerProtockol(ServerProtocol::Client& cli);
// void testStopServerProtockol(ServerProtocol::Client& cli);
// void testPingClientProtockol(ClientProtocol::Client& cli);
// void testLogin(ClientProtocol::Client& cli);
// void testUserData(ClientProtocol::Client& cli);
// void testGetItem(ClientProtocol::Client& cli);
// void testApplyData(ClientProtocol::Client& cli);
// void testWebSockets(ClientProtocol::Client& cli);
// void testBanLogin(ClientProtocol::Client &cli, ServerProtocol::Client &term);
// void testBaseSql();
// void testSqlCache();
public:
testSankeServer();
@ -51,12 +25,7 @@ public:
private slots:
void initTestCase();
// void clianupTestCase();
// void testProtockols();
//// void testClientProtockol();
// void testSql();
void testAbstractNode();
};
@ -70,551 +39,15 @@ testSankeServer::~testSankeServer() {
}
void testSankeServer::initTestCase() {
// ClientProtocol::initClientProtockol();
// ClientProtocol::initClientProtockol();
}
//void testSankeServer::clianupTestCase() {
void testSankeServer::testAbstractNode() {
ClientProtocol::AbstractNode node;
node.run(TEST_LOCAL_HOST, TEST_PORT);
//}
}
//void testSankeServer::testPingServerProtockol(ServerProtocol::Client &cli) {
// bool isWork = false;
// bool received = false;
// QMetaObject::Connection m_connection;
// m_connection = QObject::connect(&cli, &ServerProtocol::Client::sigIncommingData,
// [&isWork, &received, &m_connection] (const QVariantMap& map) {
// isWork = map["res"].toString() == "Pong";
// disconnect(m_connection);
// received = true;
// });
// QVERIFY(cli.ping());
// QVERIFY(cli.wait(received, 1000));
// QVERIFY(isWork);
//}
//void testSankeServer::testStateServerProtockol(ServerProtocol::Client& cli) {
// QVariantMap map;
// QVERIFY(TestUtils::getState(cli, map));
//}
//void testSankeServer::testBanServerProtockol(ServerProtocol::Client& cli) {
// bool isWork = false;
// bool received = false;
// QMetaObject::Connection m_connection;
// m_connection = QObject::connect(&cli, &ServerProtocol::Client::sigIncommingData,
// [&isWork, &received, &m_connection] (const QVariantMap& map) {
// isWork = !map.contains("Error");
// received = true;
// disconnect(m_connection);
// });
// QVERIFY(!cli.ban(QHostAddress()));
// QVERIFY(cli.ban(QHostAddress("192.192.192.192")));
// QVERIFY(cli.wait(received, 1000));
// QVERIFY(isWork);
//}
//void testSankeServer::testUnBanServerProtockol(ServerProtocol::Client& cli)
//{
// bool isWork = false;
// bool received = false;
// QMetaObject::Connection m_connection;
// m_connection = QObject::connect(&cli, &ServerProtocol::Client::sigIncommingData,
// [&isWork, &received, &m_connection] (const QVariantMap& map) {
// isWork = !map.contains("Error");
// received = true;
// disconnect(m_connection);
// });
// QVERIFY(!cli.unBan(QHostAddress()));
// QVERIFY(cli.unBan(QHostAddress("192.192.192.192")));
// QVERIFY(cli.wait(received, 1000));
// QVERIFY(isWork);
//}
//void testSankeServer::testRestartServerProtockol(ServerProtocol::Client& cli) {
// bool isWork = false;
// bool received = false;
// QMetaObject::Connection m_connection;
// m_connection = QObject::connect(&cli, &ServerProtocol::Client::sigIncommingData,
// [&isWork, &received, &m_connection] (const QVariantMap& map) {
// isWork = !map.contains("Error");
// received = true;
// disconnect(m_connection);
// });
// QVERIFY(!cli.restart("lolo", 0));
// QVERIFY(!cli.restart("192.168.1.999", 0));
// QVERIFY(!cli.restart("192.168.1.99", 0));
// QVERIFY(!cli.restart("192.168.1.9", 0));
// QVERIFY(!cli.restart("-1.168.1.999", 77));
// QVERIFY(!cli.restart("192.168.-1.99", 7777));
// QVERIFY(cli.restart("127.168.1.9", 3456));
// cli.wait(received, 1000);
// QVERIFY(isWork);
// isWork = false;
// received = false;
// m_connection = QObject::connect(&cli, &ServerProtocol::Client::sigIncommingData,
// [&isWork, &received, &m_connection] (const QVariantMap& map) {
// isWork = map.value("Address") == QString("%0:%1").
// arg(TEST_SERVER_ADDRESS).
// arg(TEST_SERVER_PORT) &&
// !map.contains("Error");
// received = true;
// disconnect(m_connection);
// });
// QVERIFY(cli.restart(TEST_SERVER_ADDRESS, TEST_SERVER_PORT));
// cli.wait(received, 1000);
// QVERIFY(isWork);
//}
//void testSankeServer::testStopServerProtockol(ServerProtocol::Client& cli) {
// bool isWork = false;
// bool received = false;
// QMetaObject::Connection m_connection;
// m_connection = QObject::connect(&cli, &ServerProtocol::Client::sigIncommingData,
// [&isWork, &received, &m_connection] (const QVariantMap& map) {
// isWork = !map.contains("Error");
// received = true;
// disconnect(m_connection);
// });
// QVERIFY(cli.stop());
// cli.wait(received, 1000);
// QVERIFY(!received || isWork);
//}
//void testSankeServer::testPingClientProtockol(ClientProtocol::Client &cli) {
// bool isWork = false;
// bool received = false;
// QMetaObject::Connection m_connection;
// m_connection = QObject::connect(&cli, &ClientProtocol::Client::sigIncommingData,
// [&isWork, &received, &m_connection] (const ClientProtocol::Command cmd,
// const QByteArray&) {
// isWork = cmd == ClientProtocol::Command::Ping;
// received = true;
// disconnect(m_connection);
// });
// QVERIFY(cli.ping());
// QVERIFY(TestUtils::wait(received, 1000));
// QVERIFY(isWork);
//}
//void testSankeServer::testLogin(ClientProtocol::Client &cli) {
// QVERIFY(TestUtils::loginFunc(cli, "Test@gmail.com", "testpass", true, false));
// QVERIFY(TestUtils::registerFunc(cli, "Test@gmail.com", "testpass", true, true));
// QVERIFY(TestUtils::registerFunc(cli, "Test@gmail.com", "testpass", true, false));
// QVERIFY(TestUtils::loginFunc(cli, "Test@gmail.com", "testpass", true, true));
// QVERIFY(TestUtils::loginFunc(cli, "Test@gmail.com", "testpass2", true, false));
// QVERIFY(TestUtils::loginFunc(cli, "Test@gmail.com", "testpass", true, true));
//}
//void testSankeServer::testBanLogin(ClientProtocol::Client &cli, ServerProtocol::Client &term) {
// QVariantMap state;
// TestUtils::getState(term, state);
// for (int i = 0; i < 25 && cli.isOnline(); i++) {
// QVERIFY(TestUtils::loginFunc(cli, "Test@gmail.com", "testpass2", true, false) == cli.isOnline());
// }
// TestUtils::getState(term, state);
// QVERIFY(state.value("Baned List").toStringList().contains("127.0.0.1"));
// QVERIFY(TestUtils::loginFunc(cli, "Test@gmail.com", "testpass", false, false));
// QVERIFY(TestUtils::loginFunc(cli, "Test123@gmail.com", "testpass2", false, false));
// TestUtils::unBanFunc(term, QHostAddress::LocalHost);
// TestUtils::getState(term, state);
// QVERIFY(!state.value("Baned List").toStringList().contains("127.0.0.1"));
// TestUtils::banFunc(term, QHostAddress::LocalHost);
// TestUtils::getState(term, state);
// QVERIFY(state.value("Baned List").toStringList().contains("127.0.0.1"));
// TestUtils::unBanFunc(term, QHostAddress::LocalHost);
// cli.reconnectToHost();
// TestUtils::reconnectFunc(cli);
// QVERIFY(TestUtils::loginFunc(cli, "Test@gmail.com", "testpass", true, true));
// QVERIFY(TestUtils::loginFunc(cli, "Test123@gmail.com", "testpass2", true, false));
//}
//void testSankeServer::testUserData(ClientProtocol::Client &cli) {
// cli._token = "";
// QVERIFY(!cli.updateData());
// cli._token = QCryptographicHash::hash("testtoken", QCryptographicHash::Sha256);
// QVERIFY(cli.updateData());
//}
//void testSankeServer::testGetItem(ClientProtocol::Client &cli) {
// cli._token = "";
// QVERIFY(!cli.getItem(1));
// cli._token = QCryptographicHash::hash("testtoken", QCryptographicHash::Sha256);
// QVERIFY(cli.getItem(1));
//}
//void testSankeServer::testApplyData(ClientProtocol::Client &cli) {
// cli._token = QCryptographicHash::hash("testtoken", QCryptographicHash::Sha256);
// QVERIFY(!cli.savaData(QList<int>()));
// QList<int> listData = {1};
// QVERIFY(cli.savaData(listData));
//}
//void testSankeServer::testWebSockets(ClientProtocol::Client &cli) {
// QVERIFY(cli.setSubscribe(ClientProtocol::Command::Player, true));
// QVERIFY(cli.setSubscribe(ClientProtocol::Command::Player, false));
//}
//void testSankeServer::testBaseSql() {
// SqlDBWriter db;
// QFile::remove("./test.db");
// bool init = db.initDb("./test.db");
// if (!init) {
// QFile::remove("./test.db");
// }
// QVERIFY(init);
// ClientProtocol::Snake snake;
// snake.setSpeed(10);
// snake.setSkillet(QList<float>() << 1);
// snake.setSnakeClass(0);
// // TEST ITEM
// ClientProtocol::Snake resSnake;
// QVERIFY(db.saveItem(&snake) < 0);
// snake.setId(0);
// int id = db.saveItem(&snake);
// QVERIFY(id == 0);
// QVERIFY(db.getItem(id).parse(resSnake));
// QVERIFY(snake.getSpeed() == resSnake.getSpeed());
// QVERIFY(snake.getSkillet() == resSnake.getSkillet());
// QVERIFY(snake.getSnakeClass() == resSnake.getSnakeClass());
// QVERIFY(snake.getClass() == resSnake.getClass());
// QVERIFY(snake.id() == resSnake.id());
// resSnake.setSnakeClass(10);
// QVERIFY(id == db.saveItem(Item(&resSnake)));
// ClientProtocol::Snake temp;
// QVERIFY(db.getItem(id).parse(temp));
// QVERIFY(temp.getSnakeClass() == 10);
// // TEST PLAYER
// PlayerDBData player = PlayerDBData();
// player.setMany(10);
// player.setLastOnline(1000);
// player.setOnlineTime(1001);
// player.setName("test");
// player.fromHexPass("FF");
// player.setGmail("test@gmail.com");
// player.setCureentSnake(0);
// QVERIFY(db.savePlayer(player) < 0);
// player.setId(0);
// QVERIFY(db.savePlayer(player) < 0);
// player.setCureentSnake(-1);
// id = db.savePlayer(player);
// QVERIFY(id == 0);
// QVERIFY(!db.saveowners(id, QSet<int>() << 1));
// QVERIFY(db.saveowners(id, QSet<int>() << 0));
// QSet<int> items;
// QVERIFY(db.getAllItemsOfPalyer(id, items));
// QVERIFY(items.contains(0));
// QVERIFY(items.size() == 1);
// player.setCureentSnake(0);
// id = db.savePlayer(player);
// auto resPlayer = db.getPlayer(id);
// QVERIFY(resPlayer.isValid());
// QVERIFY(player.getLastOnline() == resPlayer.getLastOnline());
// QVERIFY(player.getMany() == resPlayer.getMany());
// QVERIFY(player.getOnlineTime() == resPlayer.getOnlineTime());
// QVERIFY(player.getName() == resPlayer.getName());
// QVERIFY(player.getPass() == resPlayer.getPass());
// QVERIFY(player.getCureentSnake() == resPlayer.getCureentSnake());
// player.setCureentSnake(3);
// QVERIFY(db.savePlayer(player) < 0);
// player.setCureentSnake(0);
// player.setName("new");
// QVERIFY(db.savePlayer(player) == id);
// resPlayer = db.getPlayer(id);
// QVERIFY(resPlayer.getName() == "new");
//}
//void testSankeServer::testSqlCache() {
// SqlDBCache db;
// QFile::remove("./test2.db");
// bool init = db.initDb("./test2.db");
// if (!init) {
// QFile::remove("./test2.db");
// }
// QVERIFY(init);
// ClientProtocol::Snake snake;
// snake.setSpeed(10);
// snake.setSkillet(QList<float>() << 1);
// snake.setSnakeClass(0);
// // TEST ITEM
// ClientProtocol::Snake resSnake;
// int id = db.saveItem(&snake);
// QVERIFY(id == 0);
// snake.setId(id);
// QVERIFY(db.getItem(id).parse(resSnake));
// QVERIFY(snake.getSpeed() == resSnake.getSpeed());
// QVERIFY(snake.getSkillet() == resSnake.getSkillet());
// QVERIFY(snake.getSnakeClass() == resSnake.getSnakeClass());
// QVERIFY(snake.getClass() == resSnake.getClass());
// QVERIFY(snake.id() == resSnake.id());
// resSnake.setSnakeClass(10);
// QVERIFY(id == db.saveItem(Item(&resSnake)));
// ClientProtocol::Snake temp;
// QVERIFY(db.getItem(id).parse(temp));
// QVERIFY(temp.getSnakeClass() == 10);
// // TEST PLAYER
// PlayerDBData player = PlayerDBData();
// player.setMany(10);
// player.setLastOnline(1000);
// player.setOnlineTime(1001);
// player.setName("test");
// player.fromHexPass("FF");
// player.setGmail("test@gmail.com");
// player.setCureentSnake(0);
// QVERIFY(db.savePlayer(player) < 0);
// player.setId(0);
// QVERIFY(db.savePlayer(player) < 0);
// player.setCureentSnake(-1);
// id = db.savePlayer(player);
// QVERIFY(id == 0);
// QVERIFY(!db.getItem(id, 1));
// QVERIFY(db.getItem(id, 0));
// player.setCureentSnake(0);
// QVERIFY(db.savePlayer(player) == id);
// auto resPlayer = db.getPlayer(id);
// QVERIFY(resPlayer.isValid());
// QVERIFY(player.getLastOnline() == resPlayer.getLastOnline());
// QVERIFY(player.getMany() == resPlayer.getMany());
// QVERIFY(player.getOnlineTime() == resPlayer.getOnlineTime());
// QVERIFY(player.getName() == resPlayer.getName());
// QVERIFY(player.getPass() == resPlayer.getPass());
// QVERIFY(player.getCureentSnake() == resPlayer.getCureentSnake());
// player.setCureentSnake(3);
// QVERIFY(db.savePlayer(player) < 0);
// player.setCureentSnake(0);
// player.setName("new");
// QVERIFY(db.savePlayer(player) == id);
// resPlayer = db.getPlayer(id);
// QVERIFY(resPlayer.getName() == "new");
// PlayerDBData second_player = PlayerDBData();
// second_player.setMany(10);
// second_player.setLastOnline(1000);
// second_player.setOnlineTime(1001);
// second_player.setName("test2");
// second_player.setPass("test2");
// second_player.setGmail("test2@gmail.com");
// second_player.setCureentSnake(-1);
// second_player.setId(-1);
// QVERIFY(db.savePlayer(second_player) == 1);
// QVERIFY(db.moveItem(0, 1, 0));
// QSet<int> items;
// QVERIFY(db.getAllItemsOfPalyer(1, items));
// QVERIFY(items.contains(0));
// QVERIFY(items.size() == 1);
// db.updateInterval = 0;
// db.globalUpdateDataBasePrivate(0);
//}
//void testSankeServer::testSql() {
// testBaseSql();
// testSqlCache();
//}
//void testSankeServer::testProtockols() {
// int argc =0;
// char * argv[] = {nullptr};
// QCoreApplication app(argc, argv);
// auto serv = new MainServer(true, this);
// QVERIFY(serv->run(TEST_SERVER_ADDRESS, TEST_SERVER_PORT , "", TEST_LOCAL_SERVER));
// ServerProtocol::Client cliS(TEST_LOCAL_SERVER);
// ClientProtocol::Client cliC(TEST_SERVER_ADDRESS, TEST_SERVER_PORT);
// QVERIFY(TestUtils::wait(cliC.isOnline(), 1000));
// QTimer::singleShot(0, [this, &app, &cliS, &cliC]() {
// // test client protockol
// testPingClientProtockol(cliC);
// testLogin(cliC);
// testGetItem(cliC);
// testUserData(cliC);
// testApplyData(cliC);
// testWebSockets(cliC);
// testBanLogin(cliC, cliS);
// // test server protockiol
// testPingServerProtockol(cliS);
// testStateServerProtockol(cliS);
// testBanServerProtockol(cliS);
// testUnBanServerProtockol(cliS);
// testRestartServerProtockol(cliS);
// testStopServerProtockol(cliS);
// app.exit(0);
// });
// app.exec();
//}
//void testSankeServer::testClientProtockol() {
// auto serv = new ClientProtocol::Server(this);
// QVERIFY(serv->run(TEST_SERVER_ADDRESS, TEST_SERVER_PORT));
//}
QTEST_APPLESS_MAIN(testSankeServer)