Files
EetCpp/tests/eetv4response_test.cpp
T

81 lines
3.0 KiB
C++

#include "eetv4response.h"
#include <QtTest>
class EetV4ResponseTest : public QObject
{
Q_OBJECT
private slots:
void parsesConfirmation();
void parsesError();
void parsesSoapFault();
void rejectsInvalidResponse();
};
void EetV4ResponseTest::parsesConfirmation()
{
const QByteArray soap =
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body><Odpoved xmlns=\"http://fs.gov.cz/eet/schema/v4\">"
"<Hlavicka uuid_zpravy=\"123e4567-e89b-42d3-a456-426614174000\" "
"dat_prij=\"2026-10-13T20:00:00+02:00\"/>"
"<Potvrzeni pok=\"123e4567-e89b-42d3-a456-426614174000-01\" test=\"true\"/>"
"<Varovani kod_varov=\"12\"/>"
"</Odpoved></soap:Body></soap:Envelope>";
EetV4Response response;
QString error;
QVERIFY2(EetV4ResponseParser::parseSoap(soap, &response, &error), qPrintable(error));
QCOMPARE(response.status, EetV4ResponseStatus::Success);
QCOMPARE(response.pok, QStringLiteral("123e4567-e89b-42d3-a456-426614174000-01"));
QCOMPARE(response.messageUuid, QStringLiteral("123e4567-e89b-42d3-a456-426614174000"));
QVERIFY(response.test);
QCOMPARE(response.warningCodes, QList<int>{12});
QVERIFY(response.receivedAt.isValid());
}
void EetV4ResponseTest::parsesError()
{
const QByteArray soap =
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body><Odpoved xmlns=\"http://fs.gov.cz/eet/schema/v4\">"
"<Hlavicka dat_odmit=\"2026-10-13T20:00:00Z\"/>"
"<Chyba kod=\"-25\">Invalid certificate</Chyba>"
"</Odpoved></soap:Body></soap:Envelope>";
EetV4Response response;
QVERIFY(EetV4ResponseParser::parseSoap(soap, &response));
QCOMPARE(response.status, EetV4ResponseStatus::Error);
QCOMPARE(response.errorCode, -25);
QCOMPARE(response.message, QStringLiteral("Invalid certificate"));
QVERIFY(response.rejectedAt.isValid());
}
void EetV4ResponseTest::parsesSoapFault()
{
const QByteArray soap =
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body><soap:Fault><faultcode>soap:Server</faultcode>"
"<faultstring>Service unavailable</faultstring></soap:Fault>"
"</soap:Body></soap:Envelope>";
EetV4Response response;
QVERIFY(EetV4ResponseParser::parseSoap(soap, &response));
QCOMPARE(response.status, EetV4ResponseStatus::SoapFault);
QCOMPARE(response.message, QStringLiteral("soap:Server: Service unavailable"));
}
void EetV4ResponseTest::rejectsInvalidResponse()
{
const QByteArray soap =
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body><Odpoved xmlns=\"http://fs.gov.cz/eet/schema/v4\">"
"<Hlavicka/><Potvrzeni pok=\"not-a-pok\"/>"
"</Odpoved></soap:Body></soap:Envelope>";
EetV4Response response;
QString error;
QVERIFY(!EetV4ResponseParser::parseSoap(soap, &response, &error));
QVERIFY(!error.isEmpty());
}
QTEST_MAIN(EetV4ResponseTest)
#include "eetv4response_test.moc"