From 3fdd85ec486caa7ff87e88afd6532908ae1e8b91 Mon Sep 17 00:00:00 2001 From: Sona Kurazyan Date: Mon, 25 May 2020 11:34:34 +0200 Subject: Do not overwrite the payload of a QCoapRequest When sending POST and PUT requests via overloads taking QCoapRequest and QByteArray data, the payload of the request will be overwritten by an empty byte array, if no data has been passed when calling post()/put(). Do not overwrite the payload of a QCoapRequest, if the data parameter is empty. Pick-to: 5.15 Change-Id: Iffa40b00ce841a5cebb09dcf59ea22a2a5f9df50 Reviewed-by: Karsten Heimrich Reviewed-by: Alex Blasche --- tests/auto/qcoapclient/tst_qcoapclient.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'tests') diff --git a/tests/auto/qcoapclient/tst_qcoapclient.cpp b/tests/auto/qcoapclient/tst_qcoapclient.cpp index e28a48b..c9067c0 100644 --- a/tests/auto/qcoapclient/tst_qcoapclient.cpp +++ b/tests/auto/qcoapclient/tst_qcoapclient.cpp @@ -363,16 +363,19 @@ void tst_QCoapClient::methods() QSignalSpy spyClientFinished(&client, SIGNAL(finished(QCoapReply *))); + const QByteArray payload = "test payload"; QScopedPointer reply; - if (qstrncmp(QTest::currentDataTag(), "get", 3) == 0) + if (qstrncmp(QTest::currentDataTag(), "get", 3) == 0) { reply.reset(client.get(request)); - else if (qstrncmp(QTest::currentDataTag(), "post", 4) == 0) + } else if (qstrncmp(QTest::currentDataTag(), "post", 4) == 0) { + request.setPayload(payload); reply.reset(client.post(request)); - else if (qstrncmp(QTest::currentDataTag(), "put", 3) == 0) + } else if (qstrncmp(QTest::currentDataTag(), "put", 3) == 0) { + request.setPayload(payload); reply.reset(client.put(request)); - else if (qstrncmp(QTest::currentDataTag(), "delete", 6) == 0) + } else if (qstrncmp(QTest::currentDataTag(), "delete", 6) == 0) { reply.reset(client.deleteResource(request)); - else { + } else { QString error = QLatin1String("Unrecognized method '") + QTest::currentDataTag() + "'"; QFAIL(qPrintable(error)); } @@ -395,9 +398,11 @@ void tst_QCoapClient::methods() } else if (qstrncmp(QTest::currentDataTag(), "post", 4) == 0) { QVERIFY(replyData.isEmpty()); QCOMPARE(reply->responseCode(), QtCoap::ResponseCode::Created); + QCOMPARE(reply->request().payload(), payload); } else if (qstrncmp(QTest::currentDataTag(), "put", 3) == 0) { QVERIFY(replyData.isEmpty()); QCOMPARE(reply->responseCode(), QtCoap::ResponseCode::Changed); + QCOMPARE(reply->request().payload(), payload); } else if (qstrncmp(QTest::currentDataTag(), "delete", 6) == 0) { QVERIFY(replyData.isEmpty()); QCOMPARE(reply->responseCode(), QtCoap::ResponseCode::Deleted); -- cgit v1.2.3