Skip to content

Commit 78d153e

Browse files
authored
Fix prepare_payload_for_reinvocation in invoke (#1027)
1 parent 0526b80 commit 78d153e

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/rpdk/core/invoke.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ def get_contract_client(args, project):
7676
def prepare_payload_for_reinvocation(payload, response, artifact_type):
7777
if artifact_type == ARTIFACT_TYPE_RESOURCE:
7878
payload["callbackContext"] = response.get("callbackContext")
79+
if ("resourceModel" in response) and ("requestData" in payload):
80+
payload["requestData"]["resourceProperties"] = response.get("resourceModel")
7981

8082
return payload
8183

tests/test_invoke.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from rpdk.core.cli import EXIT_UNHANDLED_EXCEPTION, main
1010
from rpdk.core.contract.interface import Action, HookInvocationPoint
11-
from rpdk.core.invoke import _needs_reinvocation
11+
from rpdk.core.invoke import _needs_reinvocation, prepare_payload_for_reinvocation
1212
from rpdk.core.project import ARTIFACT_TYPE_HOOK, ARTIFACT_TYPE_RESOURCE, Project
1313

1414
ACTIONS = list(Action.__members__)
@@ -351,6 +351,32 @@ def test_needs_reinvocation(max_reinvoke, current_invocation, result):
351351
assert _needs_reinvocation(max_reinvoke, current_invocation) is result
352352

353353

354+
# Test prepare_payload_for_reinvocation directly here
355+
def test_prepare_payload_for_reinvocation():
356+
assert prepare_payload_for_reinvocation(
357+
{}, {"callbackContext": {"foo": "bar"}}, ARTIFACT_TYPE_RESOURCE
358+
) == {"callbackContext": {"foo": "bar"}}
359+
assert prepare_payload_for_reinvocation(
360+
{"requestData": {}}, {"callbackContext": {"foo": "bar"}}, ARTIFACT_TYPE_RESOURCE
361+
) == {"callbackContext": {"foo": "bar"}, "requestData": {}}
362+
assert prepare_payload_for_reinvocation(
363+
{"requestData": {}},
364+
{"callbackContext": {"foo": "bar"}, "resourceModel": {"foz": "baz"}},
365+
ARTIFACT_TYPE_RESOURCE,
366+
) == {
367+
"callbackContext": {"foo": "bar"},
368+
"requestData": {"resourceProperties": {"foz": "baz"}},
369+
}
370+
assert prepare_payload_for_reinvocation(
371+
{"requestData": {"resourceProperties": {}}},
372+
{"callbackContext": {"foo": "bar"}, "resourceModel": {"foz": "baz"}},
373+
ARTIFACT_TYPE_RESOURCE,
374+
) == {
375+
"callbackContext": {"foo": "bar"},
376+
"requestData": {"resourceProperties": {"foz": "baz"}},
377+
}
378+
379+
354380
def _invoke_and_expect_resource(status, resource_payload_path, command, *args):
355381
(
356382
mock_project,

0 commit comments

Comments
 (0)