Skip to content

Commit a7fece1

Browse files
authored
Fix Contract test for resources with one createOnly Property (#520)
* Fix Contract test for resources with one createOnly Property * Use failed_event * Check both the error code and message
1 parent e4e8199 commit a7fece1

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

src/rpdk/core/contract/suite/contract_asserts.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
from functools import wraps
22
from inspect import Parameter, signature
3+
from unittest.test.testmock.support import is_instance
34

45
import pytest
56

7+
from rpdk.core.contract.interface import HandlerErrorCode
8+
69

710
def _rebind(decorator, func, *args, **kwargs):
811
"""Helper function to construct decorated arguments
@@ -120,10 +123,12 @@ def failed_event(error_code, msg=""):
120123
def decorator_wrapper(func: object):
121124
@wraps(func)
122125
def wrapper(*args, **kwargs):
123-
response = func(*args, **kwargs)
124-
if response is not None:
125-
assert response == error_code, msg
126-
return response
126+
response_error = func(*args, **kwargs)
127+
if response_error is not None:
128+
if is_instance(error_code, HandlerErrorCode):
129+
error_code_tuple = (error_code,)
130+
assert response_error in error_code_tuple, msg
131+
return response_error
127132

128133
return wrapper
129134

src/rpdk/core/contract/suite/handler_update_invalid.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111

1212
@pytest.mark.update
13+
@failed_event(error_code=(HandlerErrorCode.NotUpdatable, HandlerErrorCode.NotFound))
1314
def contract_update_create_only_property(resource_client):
1415

1516
if resource_client.create_only_paths:
@@ -22,13 +23,10 @@ def contract_update_create_only_property(resource_client):
2223
update_request = resource_client.generate_invalid_update_example(
2324
created_model
2425
)
25-
_status, response, _error = resource_client.call_and_assert(
26+
_status, response, _error_code = resource_client.call_and_assert(
2627
Action.UPDATE, OperationStatus.FAILED, update_request, created_model
2728
)
2829
assert response["message"]
29-
assert (
30-
_error == HandlerErrorCode.NotUpdatable
31-
), "updating readOnly or createOnly properties should not be possible"
3230
finally:
3331
resource_client.call_and_assert(
3432
Action.DELETE, OperationStatus.SUCCESS, created_model

0 commit comments

Comments
 (0)