From d0a4a10e8cd25ff1d174124e336bd35f0f39abb8 Mon Sep 17 00:00:00 2001 From: Viren Nadkarni Date: Wed, 5 Jul 2023 19:54:14 +0530 Subject: [PATCH 1/3] Fix invalid state caused by bad PutParameter request --- moto/ssm/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moto/ssm/models.py b/moto/ssm/models.py index d88deb808e1e..41b16c088fca 100644 --- a/moto/ssm/models.py +++ b/moto/ssm/models.py @@ -2062,7 +2062,7 @@ def put_parameter( "formed as a mix of letters, numbers and the following 3 symbols .-_" ) raise ValidationException(invalid_prefix_error) - if not parameter_type and not overwrite and not self._parameters[name]: + if not parameter_type and not overwrite and not (name in self._parameters and self._parameters[name]): raise ValidationException( "A parameter type is required when you create a parameter." ) From 7404fd7aa12eb68b962011f93ffa04591dae4a9b Mon Sep 17 00:00:00 2001 From: Viren Nadkarni Date: Thu, 6 Jul 2023 09:06:10 +0530 Subject: [PATCH 2/3] Blacken --- moto/ssm/models.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/moto/ssm/models.py b/moto/ssm/models.py index 41b16c088fca..1ffc1a9d5f81 100644 --- a/moto/ssm/models.py +++ b/moto/ssm/models.py @@ -2062,7 +2062,11 @@ def put_parameter( "formed as a mix of letters, numbers and the following 3 symbols .-_" ) raise ValidationException(invalid_prefix_error) - if not parameter_type and not overwrite and not (name in self._parameters and self._parameters[name]): + if ( + not parameter_type + and not overwrite + and not (name in self._parameters and self._parameters[name]) + ): raise ValidationException( "A parameter type is required when you create a parameter." ) From 73bf110ede799391556ed17b9c787dc8f9b4ffe1 Mon Sep 17 00:00:00 2001 From: Viren Nadkarni Date: Fri, 7 Jul 2023 16:04:49 +0530 Subject: [PATCH 3/3] Update tests --- tests/test_ssm/test_ssm_boto3.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_ssm/test_ssm_boto3.py b/tests/test_ssm/test_ssm_boto3.py index 29aa73adec02..9a97573bf502 100644 --- a/tests/test_ssm/test_ssm_boto3.py +++ b/tests/test_ssm/test_ssm_boto3.py @@ -448,6 +448,9 @@ def test_put_parameter_no_type(): == "A parameter type is required when you create a parameter." ) + # Ensure backend state is consistent + assert client.describe_parameters() + @mock_ssm def test_update_parameter():