diff options
author | Juha Vuolle <juha.vuolle@qt.io> | 2023-11-20 12:56:10 +0200 |
---|---|---|
committer | Juha Vuolle <juha.vuolle@qt.io> | 2023-12-08 15:53:36 +0200 |
commit | 8da4156da7ed2eff7b44bdda51eb92870bdfbc57 (patch) | |
tree | e98d8d196f8b9b5003794b1de33ed24f35a6b0bb /tests/auto/network | |
parent | a80ed49b1049478957edca1cfbcd90f9f4b83cb3 (diff) |
Add PATCH support for QRestAccessManager
It is somewhat common HTTP method with RESTful use cases
(partial updates on resources)
Task-number: QTBUG-114637
Change-Id: Id252d3f4b54c3ebb8df5c93259e64a4af2d0ca2f
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'tests/auto/network')
3 files changed, 28 insertions, 0 deletions
diff --git a/tests/auto/network/access/qrestaccessmanager/httptestserver.cpp b/tests/auto/network/access/qrestaccessmanager/httptestserver.cpp index dfa2b45063..089342ff8b 100644 --- a/tests/auto/network/access/qrestaccessmanager/httptestserver.cpp +++ b/tests/auto/network/access/qrestaccessmanager/httptestserver.cpp @@ -147,6 +147,8 @@ bool HttpTestServer::readMethod(QTcpSocket *socket) method = Method::Get; else if (fragment == "PUT") method = Method::Put; + else if (fragment == "PATCH") + method = Method::Patch; else if (fragment == "POST") method = Method::Post; else if (fragment == "DELETE") diff --git a/tests/auto/network/access/qrestaccessmanager/httptestserver_p.h b/tests/auto/network/access/qrestaccessmanager/httptestserver_p.h index d1819fcc21..1498c4bdb7 100644 --- a/tests/auto/network/access/qrestaccessmanager/httptestserver_p.h +++ b/tests/auto/network/access/qrestaccessmanager/httptestserver_p.h @@ -54,6 +54,7 @@ public: Head, Get, Put, + Patch, Post, Delete, Custom, diff --git a/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp b/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp index f66968bf1c..b2cfcf4a75 100644 --- a/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp +++ b/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp @@ -108,6 +108,7 @@ void tst_QRestAccessManager::networkRequestReply() const QByteArray methodPOST{"POST"_ba}; const QByteArray methodGET{"GET"_ba}; const QByteArray methodPUT{"PUT"_ba}; + const QByteArray methodPATCH{"PATCH"_ba}; const QByteArray methodCUSTOM{"FOOBAR"_ba}; // DELETE @@ -209,6 +210,27 @@ void tst_QRestAccessManager::networkRequestReply() VERIFY_REPLY_OK(methodPUT); QCOMPARE(serverSideRequest.body, ioDeviceData); + // PATCH + manager.patch(request, byteArrayData, this, callback); + VERIFY_REPLY_OK(methodPATCH); + QCOMPARE(serverSideRequest.body, byteArrayData); + + manager.patch(request, jsonObjectData, this, callback); + VERIFY_REPLY_OK(methodPATCH); + QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData); + + manager.patch(request, jsonArrayData, this, callback); + VERIFY_REPLY_OK(methodPATCH); + QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).array(), jsonArrayData); + + manager.patch(request, variantMapData, this, callback); + VERIFY_REPLY_OK(methodPATCH); + QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData); + + manager.patch(request, &bufferIoDevice, this, callback); + VERIFY_REPLY_OK(methodPATCH); + QCOMPARE(serverSideRequest.body, ioDeviceData); + //These must NOT compile //manager.get(request, [](){}); // callback without context object //manager.get(request, ""_ba, [](){}); // callback without context object @@ -219,6 +241,9 @@ void tst_QRestAccessManager::networkRequestReply() //manager.post(request); // data is required //manager.put(request, QString()); // wrong datatype //manager.put(request); // data is required + //manager.patch(request, 123); // wrong datatype + //manager.patch(request, QString()); // wrong datatype + //manager.patch(request); // data is required //manager.deleteResource(request, "f"_ba); // data not allowed //manager.head(request, "f"_ba); // data not allowed //manager.post(request, ""_ba, this, [](int param){}); // Wrong callback signature |