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')