summaryrefslogtreecommitdiffstats
path: root/tests/auto/network
diff options
context:
space:
mode:
authorJuha Vuolle <juha.vuolle@qt.io>2023-11-20 12:56:10 +0200
committerJuha Vuolle <juha.vuolle@qt.io>2023-12-08 15:53:36 +0200
commit8da4156da7ed2eff7b44bdda51eb92870bdfbc57 (patch)
treee98d8d196f8b9b5003794b1de33ed24f35a6b0bb /tests/auto/network
parenta80ed49b1049478957edca1cfbcd90f9f4b83cb3 (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')
-rw-r--r--tests/auto/network/access/qrestaccessmanager/httptestserver.cpp2
-rw-r--r--tests/auto/network/access/qrestaccessmanager/httptestserver_p.h1
-rw-r--r--tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp25
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