[cpp-qt5] client response headers and validation of properties for client and server (#1508)

* Add validation of required properties
Add Header extraction for client
* Remove some todos
* Add Test for Store API
Improve some checks for serialization
This commit is contained in:
sunn
2018-11-29 11:00:37 +01:00
committed by GitHub
parent 5b4a19849e
commit 308515bbc1
53 changed files with 966 additions and 394 deletions

View File

@@ -8,7 +8,7 @@
PetApiTests::PetApiTests () {}
PetApiTests::~PetApiTests () {
exit(1);
}
OAIPetApi* PetApiTests::getApi() {
@@ -35,7 +35,6 @@ void PetApiTests::runTests() {
void PetApiTests::findPetsByStatusTest() {
OAIPetApi* api = getApi();
QEventLoop loop;
QTimer timer;
timer.setInterval(14000);

View File

@@ -19,6 +19,8 @@ TEMPLATE = app
include(../client/client.pri)
SOURCES += main.cpp \
PetApiTests.cpp
PetApiTests.cpp \
StoreApiTests.cpp
HEADERS += PetApiTests.h
HEADERS += PetApiTests.h \
StoreApiTests.h

View File

@@ -0,0 +1,117 @@
#include "StoreApiTests.h"
#include <QJsonDocument>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QDebug>
StoreApiTests::StoreApiTests () {}
StoreApiTests::~StoreApiTests () {
exit(1);
}
OAIStoreApi* StoreApiTests::getApi() {
auto api = new OAIStoreApi();
api->host = "http://petstore.swagger.io";
api->basePath = "/v2";
return api;
}
void StoreApiTests::runTests() {
StoreApiTests* tests = new StoreApiTests();
QTest::qExec(tests);
delete tests;
}
void StoreApiTests::placeOrderTest() {
auto api = getApi();
QEventLoop loop;
QTimer timer;
timer.setInterval(14000);
timer.setSingleShot(true);
auto validator = [this](OAIOrder order) {
QVERIFY(order.getPetId() == 10000);
QVERIFY((order.getId() == 500));
qDebug() << order.getShipDate();
emit quit();
};
auto finalizer = [&]() {
loop.quit();
};
connect(this, &StoreApiTests::quit, finalizer);
connect(api, &OAIStoreApi::placeOrderSignal, this, validator);
connect(&timer, &QTimer::timeout, &loop, finalizer);
OAIOrder order;
order.setId(500);
order.setQuantity(10);
order.setPetId(10000);
order.setComplete(false);
order.setStatus(QString("shipping"));
order.setShipDate(QDateTime::currentDateTime());
api->placeOrder(order);
timer.start();
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
disconnect(this, nullptr, nullptr, nullptr);
delete api;
}
void StoreApiTests::getOrderByIdTest() {
auto api = getApi();
QEventLoop loop;
QTimer timer;
timer.setInterval(14000);
timer.setSingleShot(true);
auto validator = [this](OAIOrder order) {
QVERIFY(order.getPetId() == 10000);
QVERIFY((order.getId() == 500));
qDebug() << order.getShipDate();
emit quit();
};
auto finalizer = [&]() {
loop.quit();
};
connect(this, &StoreApiTests::quit, finalizer);
connect(api, &OAIStoreApi::getOrderByIdSignal, this, validator);
connect(&timer, &QTimer::timeout, &loop, finalizer);
api->getOrderById(500);
timer.start();
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
disconnect(this, nullptr, nullptr, nullptr);
delete api;
}
void StoreApiTests::getInventoryTest() {
auto api = getApi();
QEventLoop loop;
QTimer timer;
timer.setInterval(14000);
timer.setSingleShot(true);
auto validator = [this](QMap<QString, qint32> status) {
for(const auto& key : status.keys()) {
qDebug() << (key) << " Quantities " << status.value(key);
}
emit quit();
};
auto finalizer = [&]() {
loop.quit();
};
connect(this, &StoreApiTests::quit, finalizer);
connect(api, &OAIStoreApi::getInventorySignal, this, validator);
connect(&timer, &QTimer::timeout, &loop, finalizer);
api->getInventory();
timer.start();
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
disconnect(this, nullptr, nullptr, nullptr);
delete api;
}

View File

@@ -0,0 +1,32 @@
#ifndef STOREAPITESTS_H
#define STOREAPITESTS_H
#include <QtTest/QtTest>
#include <QTimer>
#include "../client/OAIStoreApi.h"
using namespace OpenAPI;
class StoreApiTests: public QObject {
Q_OBJECT
public:
StoreApiTests();
virtual ~StoreApiTests();
static void runTests();
private:
OAIStoreApi* getApi();
OAIOrder createRandomOrder();
signals:
void quit();
bool success();
private slots:
void placeOrderTest();
void getOrderByIdTest();
void getInventoryTest();
};
#endif // STOREAPITESTS_H

View File

@@ -1,8 +1,10 @@
#include <QCoreApplication>
#include "PetApiTests.h"
#include "StoreApiTests.h"
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
PetApiTests::runTests();
StoreApiTests::runTests();
return a.exec();
}