81 lines
3.0 KiB
C++
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"
|