From e5d8e11f80152a9b7c09f890fdefee8e520aa873 Mon Sep 17 00:00:00 2001 From: victormoni Date: Mon, 2 Nov 2026 09:50:16 -0300 Subject: [PATCH] fix(clients): accept PATCH in InvokeMethodRequest Signed-off-by: victormoni --- dapr/clients/grpc/_request.py | 2 +- tests/clients/test_dapr_grpc_request.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/dapr/clients/grpc/_request.py b/dapr/clients/grpc/_request.py index 47188c79e..c7b5c55ba 100644 --- a/dapr/clients/grpc/_request.py +++ b/dapr/clients/grpc/_request.py @@ -88,7 +88,7 @@ class InvokeMethodRequest(DaprRequest): only for bytes array data. """ - HTTP_METHODS = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE'] + HTTP_METHODS = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'] def __init__( self, diff --git a/tests/clients/test_dapr_grpc_request.py b/tests/clients/test_dapr_grpc_request.py index 396a8ec95..3a84869cf 100644 --- a/tests/clients/test_dapr_grpc_request.py +++ b/tests/clients/test_dapr_grpc_request.py @@ -27,6 +27,29 @@ class InvokeMethodRequestTests(unittest.TestCase): + def test_patch_http_verb(self): + req = InvokeMethodRequest(data=b'{"name": "updated"}') + + req.http_verb = 'PATCH' + + self.assertEqual('PATCH', req.http_verb) + self.assertTrue(req.is_http()) + + def test_invalid_http_verb(self): + req = InvokeMethodRequest() + + with self.assertRaises(ValueError): + req.http_verb = 'INVALID' + + def test_clear_http_verb(self): + req = InvokeMethodRequest() + req.http_verb = 'POST' + + req.http_verb = None + + self.assertIsNone(req.http_verb) + self.assertFalse(req.is_http()) + def test_bytes_data(self): # act req = InvokeMethodRequest(data=b'hello dapr')