All endpoints working

there may be a problem with opening json file on Git runner
This commit is contained in:
Ondřej Fischer 2019-10-11 16:21:16 +02:00
parent 3c65d89b54
commit e9df6e58d0
5 changed files with 145 additions and 2 deletions

View File

@ -184,6 +184,49 @@ QByteArray RequestManager::makeTimeStampJson(uint64_t time)
return doc.toJson();
}
QByteArray RequestManager::makeTokensJson(QList<QPointer<Token>> tokens)
{
QJsonObject items;
QJsonArray jsonTokens;
for (auto token : tokens)
{
QJsonObject jsonToken;
jsonToken.insert("id",token->idToStringWithoutBraces());
jsonToken.insert("name",token->getName());
jsonToken.insert("description", token->getDescription());
jsonToken.insert("tokenType", token->getTokenType());
jsonToken.insert("tokenBits", token->getTokenBits());
jsonToken.insert("tokenData", token->getTokenData());
jsonToken.insert("timeToLive", token->getTimeToLive());
jsonToken.insert("authErrors", token->getAuthErrors());
QJsonArray flags;
auto flagStructure = token->getFlags();
for (auto flag : flagStructure)
flags.push_back(flag);
jsonToken.insert("flags", flags);
jsonToken.insert("subjectId", token->subjectIdToStringWithoutBraces());
jsonTokens.push_back(jsonToken);
}
items.insert("items", jsonTokens);
QJsonDocument doc;
doc.setObject(items);
return doc.toJson();
}
QByteArray RequestManager::makeIdsJson(QList<QString> ids)
{
QJsonArray jsonIds;
for (auto id : ids)
{
jsonIds.push_back(id);
}
QJsonObject items;
items.insert("items", jsonIds);
QJsonDocument doc;
doc.setObject(items);
return doc.toJson();
}
Response* RequestManager::getSubjects()
{
return getRequestReturnLogic("/SubjectManager/getSubjects");
@ -249,7 +292,15 @@ Response* RequestManager::getAccessGroupMembershipDeleted(uint64_t time)
return postRequestReturnLogic("/AccessManager/getAccessGroupMembershipDeleted", makeTimeStampJson(time));
}
Response* RequestManager::setTokens(QList<QPointer<Token>> tokens)
{
return postRequestReturnLogic("/TokenManager/setTokens", makeTokensJson(tokens));
}
Response* RequestManager::deleteTokens(QList<QString> ids)
{
return postRequestReturnLogic("/TokenManager/deleteTokens", makeIdsJson(ids));
}

View File

@ -12,6 +12,7 @@
#include <QByteArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonParseError>
#include <QFile>
#include <QString>
@ -22,6 +23,7 @@
#include <QPair>
#include "token.h"
#include "response.h"
class RequestManager : public QObject
@ -47,6 +49,9 @@ public:
Response* getAccessGroupMembershipUpdated(uint64_t time);
Response* getAccessGroupMembershipDeleted(uint64_t time);
Response* setTokens(QList<QPointer<Token>> tokens);
Response* deleteTokens(QList<QString> ids);
void login(QString endpoint, QString username, QString password); //I want it private, but unittest???
const QJsonDocument &getConfig() const {return config;}
@ -61,7 +66,9 @@ private:
QString encryptedPassword(QString password);
QString getLoginHeader(QString username, QString hash);
void prepareAuthHeader();
QByteArray makeTimeStampJson(uint64_t);
QByteArray makeTimeStampJson(uint64_t time);
QByteArray makeTokensJson(QList<QPointer<Token>> tokens);
QByteArray makeIdsJson(QList<QString> ids);
private slots:
void onSSLError(QNetworkReply *reply, const QList<QSslError> &errors);

34
src/colnod/tokens.json Normal file
View File

@ -0,0 +1,34 @@
{
"items": [
{
"id": "582c982d-6fd7-4856-8548-7ce542791c7a",
"name": "test",
"description": "mobile",
"tokenType": "Token",
"tokenBits": 32,
"tokenData": "7B9D32",
"timeToLive": 255,
"authErrors": 255,
"flags": [
"Enabled",
"NoValidity"
],
"subjectId": "72b37f7e-5761-4e6c-8e87-20c0bed0d904"
},
{
"id": "3ff23b41-3da3-4b33-82ce-d8e2d8c9a546",
"name": "test1",
"description": "mobile",
"tokenType": "Token",
"tokenBits": 32,
"tokenData": "7B9D12",
"timeToLive": 255,
"authErrors": 255,
"flags": [
"Enabled",
"NoValidity"
],
"subjectId": "72b37f7e-5761-4e6c-8e87-20c0bed0d904"
}
]
}

View File

@ -193,6 +193,55 @@ void UnitTest::getAccessGroupMembershipDeleted()
QVERIFY(!json.isEmpty());
}
void UnitTest::setTokens()
{
QFile jsonData(QDir::current().filePath("tokens.json"));
if (!jsonData.open(QIODevice::ReadOnly)) {
qCritical() << "Couldn't open config file config.json" << QDir::current().filePath("subjects.json");
QCoreApplication::exit(-1);
return;
}
QJsonDocument doc = QJsonDocument::fromJson(jsonData.readAll());
QJsonObject obj = doc.object();
QJsonArray arr = obj["items"].toArray();
qDebug() << arr;
QList<QPointer<Token>> tokens;
for (auto object : arr)
{
auto token = new Token;
token->fromJSON(object.toObject());
qDebug() << token;
tokens.append(token);
}
RequestManager* testAccess = new RequestManager();
QSignalSpy spy(testAccess, SIGNAL(responseReady()));
Response* response = testAccess->setTokens(tokens);
QCOMPARE(spy.count(), 0);
spy.wait(10000);
QVERIFY(spy.isValid());
QCOMPARE(spy.count(), 1);
QString json = response->reply->readAll();
QVERIFY(!json.isEmpty());
}
void UnitTest::deleteTokens()
{
RequestManager* testAccess = new RequestManager();
QSignalSpy spy(testAccess, SIGNAL(responseReady()));
QList<QString> ids;
ids.append("582c982d-6fd7-4856-8548-7ce542791c7a");
ids.append("3ff23b41-3da3-4b33-82ce-d8e2d8c9a546");
Response* response = testAccess->deleteTokens(ids);
QCOMPARE(spy.count(), 0);
spy.wait(10000);
QVERIFY(spy.isValid());
QCOMPARE(spy.count(), 1);
QString json = response->reply->readAll();
QVERIFY(!json.isEmpty());
}
void UnitTest::subjectJSONParser()
{
/*

View File

@ -31,6 +31,8 @@ private slots:
void getAccessGroupMembership();
void getAccessGroupMembershipUpdated();
void getAccessGroupMembershipDeleted();
void setTokens();
void deleteTokens();
void subjectJSONParser();
void tokenJSONParser();
void connectToDB();