forked from loafle/openapi-generator-original
* Disable creation of empty json fields and fields for primitives which were not set, but using default values modelnamePrefix will be the one passed from command line or SWG if none * Updates after review Also common http files are splitted Update Petstore examples
252 lines
6.5 KiB
C++
252 lines
6.5 KiB
C++
#include "PetApiTests.h"
|
|
|
|
#include <QJsonDocument>
|
|
#include <QNetworkAccessManager>
|
|
#include <QNetworkReply>
|
|
#include <QDebug>
|
|
|
|
PetApiTests::PetApiTests () {}
|
|
|
|
PetApiTests::~PetApiTests () {
|
|
exit(1);
|
|
}
|
|
|
|
SWGPetApi* PetApiTests::getApi() {
|
|
SWGPetApi* api = new SWGPetApi();
|
|
api->host = "http://petstore.swagger.io";
|
|
api->basePath = "/v2";
|
|
return api;
|
|
}
|
|
|
|
SWGPet* PetApiTests::createRandomPet() {
|
|
SWGPet* pet = new SWGPet();
|
|
qint64 id = QDateTime::currentMSecsSinceEpoch();
|
|
|
|
pet->setName(new QString("monster"));
|
|
pet->setId(id);
|
|
pet->setStatus(new QString("freaky"));
|
|
|
|
return pet;
|
|
}
|
|
|
|
void PetApiTests::runTests() {
|
|
PetApiTests* tests = new PetApiTests();
|
|
QTest::qExec(tests);
|
|
delete tests;
|
|
}
|
|
|
|
void PetApiTests::findPetsByStatusTest() {
|
|
SWGPetApi* api = getApi();
|
|
|
|
static QEventLoop loop;
|
|
QTimer timer;
|
|
timer.setInterval(14000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto validator = [](QList<SWGPet*>* pets) {
|
|
foreach(SWGPet* pet, *pets) {
|
|
QVERIFY(pet->getStatus()->startsWith("available") || pet->getStatus()->startsWith("sold"));
|
|
}
|
|
loop.quit();
|
|
};
|
|
|
|
connect(api, &SWGPetApi::findPetsByStatusSignal, this, validator);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
QList<QString*>* status = new QList<QString*>();
|
|
status->append(new QString("available"));
|
|
status->append(new QString("sold"));
|
|
api->findPetsByStatus(status);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
delete api;
|
|
}
|
|
|
|
void PetApiTests::createAndGetPetTest() {
|
|
SWGPetApi* api = getApi();
|
|
|
|
static QEventLoop loop;
|
|
QTimer timer;
|
|
timer.setInterval(14000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto validator = []() {
|
|
// pet created
|
|
loop.quit();
|
|
};
|
|
|
|
connect(api, &SWGPetApi::addPetSignal, this, validator);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
SWGPet* pet = createRandomPet();
|
|
qint64 id = pet->getId();
|
|
|
|
api->addPet(*pet);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
|
|
timer.setInterval(1000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto getPetValidator = [](SWGPet* pet) {
|
|
QVERIFY(pet->getId() > 0);
|
|
QVERIFY(pet->getStatus()->compare("freaky") == 0);
|
|
loop.quit();
|
|
};
|
|
|
|
connect(api, &SWGPetApi::getPetByIdSignal, this, getPetValidator);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
api->getPetById(id);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
delete api;
|
|
}
|
|
|
|
void PetApiTests::updatePetTest() {
|
|
static SWGPetApi* api = getApi();
|
|
|
|
SWGPet* pet = createRandomPet();
|
|
static SWGPet* petToCheck;
|
|
qint64 id = pet->getId();
|
|
static QEventLoop loop;
|
|
QTimer timer;
|
|
timer.setInterval(100000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto validator = []() {
|
|
loop.quit();
|
|
};
|
|
|
|
connect(api, &SWGPetApi::addPetSignal, this, validator);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
// create pet
|
|
api->addPet(*pet);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
|
|
// fetch it
|
|
timer.setInterval(1000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto fetchPet = [](SWGPet* pet) {
|
|
petToCheck = pet;
|
|
loop.quit();
|
|
};
|
|
connect(api, &SWGPetApi::getPetByIdSignal, this, fetchPet);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
// create pet
|
|
api->getPetById(id);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
|
|
// update it
|
|
timer.setInterval(1000);
|
|
timer.setSingleShot(true);
|
|
auto updatePetTest = []() {
|
|
loop.quit();
|
|
};
|
|
|
|
connect(api, &SWGPetApi::updatePetSignal, this, updatePetTest);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
// update pet
|
|
petToCheck->setStatus(new QString("scary"));
|
|
api->updatePet(*petToCheck);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
|
|
// check it
|
|
timer.setInterval(1000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto fetchPet2 = [](SWGPet* pet) {
|
|
QVERIFY(pet->getId() == petToCheck->getId());
|
|
QVERIFY(pet->getStatus()->compare(petToCheck->getStatus()) == 0);
|
|
loop.quit();
|
|
};
|
|
connect(api, &SWGPetApi::getPetByIdSignal, this, fetchPet2);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
api->getPetById(id);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
}
|
|
|
|
void PetApiTests::updatePetWithFormTest() {
|
|
static SWGPetApi* api = getApi();
|
|
|
|
SWGPet* pet = createRandomPet();
|
|
static SWGPet* petToCheck;
|
|
qint64 id = pet->getId();
|
|
static QEventLoop loop;
|
|
QTimer timer;
|
|
|
|
// create pet
|
|
timer.setInterval(1000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto validator = []() {
|
|
loop.quit();
|
|
};
|
|
|
|
connect(api, &SWGPetApi::addPetSignal, this, validator);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
api->addPet(*pet);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
|
|
// fetch it
|
|
timer.setInterval(1000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto fetchPet = [](SWGPet* pet) {
|
|
petToCheck = pet;
|
|
loop.quit();
|
|
};
|
|
connect(api, &SWGPetApi::getPetByIdSignal, this, fetchPet);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
api->getPetById(id);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
|
|
// update it
|
|
timer.setInterval(1000);
|
|
timer.setSingleShot(true);
|
|
|
|
connect(api, &SWGPetApi::updatePetWithFormSignal, this, [](){loop.quit();});
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
api->updatePetWithForm(id, new QString("gorilla"), NULL);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
|
|
// fetch it
|
|
timer.setInterval(1000);
|
|
timer.setSingleShot(true);
|
|
|
|
auto fetchUpdatedPet = [](SWGPet* pet) {
|
|
QVERIFY(pet->getName()->compare(QString("gorilla")) == 0);
|
|
loop.quit();
|
|
};
|
|
connect(api, &SWGPetApi::getPetByIdSignal, this, fetchUpdatedPet);
|
|
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
|
|
|
api->getPetById(id);
|
|
timer.start();
|
|
loop.exec();
|
|
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
|
}
|