def test__parse_request_fail_without_platform_creds(): resource = Resource(TYPE_NAME, Mock()) payload = ENTRYPOINT_PAYLOAD.copy() payload["requestData"] = payload["requestData"].copy() payload["requestData"]["platformCredentials"] = None with pytest.raises(InvalidRequest) as excinfo: resource._parse_request(payload) assert "ValueError" in str(excinfo.value)
def test__parse_request_valid_request_and__cast_resource_request(): mock_model = Mock(spec_set=["_deserialize"]) mock_model._deserialize.side_effect = [ sentinel.state_out1, sentinel.state_out2 ] mock_type_configuration_model = Mock(spec_set=["_deserialize"]) mock_type_configuration_model._deserialize.side_effect = [ sentinel.type_configuration ] resource = Resource(TYPE_NAME, mock_model, mock_type_configuration_model) with patch("cloudformation_cli_python_lib.resource._get_boto_session" ) as mock_session: ret = resource._parse_request(ENTRYPOINT_PAYLOAD) sessions, action, callback_context, request = ret mock_session.assert_has_calls( [ call( Credentials( **ENTRYPOINT_PAYLOAD["requestData"]["callerCredentials"])), call( Credentials(**ENTRYPOINT_PAYLOAD["requestData"] ["providerCredentials"])), ], any_order=True, ) # credentials are used when rescheduling, so can't zero them out (for now) assert request.requestData.callerCredentials is not None assert request.requestData.providerCredentials is not None assert request.requestData.typeConfiguration is sentinel.type_configuration caller_sess, provider_sess = sessions assert caller_sess is mock_session.return_value assert provider_sess is mock_session.return_value assert action == Action.CREATE assert callback_context == {} modeled_request = resource._cast_resource_request(request) mock_model._deserialize.assert_has_calls( [call(sentinel.state_in1), call(sentinel.state_in2)]) assert modeled_request.clientRequestToken == request.bearerToken assert modeled_request.desiredResourceState is sentinel.state_out1 assert modeled_request.previousResourceState is sentinel.state_out2 assert modeled_request.typeConfiguration is sentinel.type_configuration assert modeled_request.logicalResourceIdentifier == "myBucket" assert modeled_request.nextToken is None