Fix: EMR ReleaseLabel validation does not respect semantic versioning (#3489)

Fixes #3474
This commit is contained in:
Brian Pandola 2020-11-22 10:54:59 -08:00 committed by GitHub
commit 53a3e52c67
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 129 additions and 3 deletions

View file

@ -636,7 +636,7 @@ def test_run_job_flow_with_custom_ami():
args = deepcopy(run_job_flow_args)
args["CustomAmiId"] = "MyEmrCustomAmi"
args["ReleaseLabel"] = "emr-5.7.0"
args["ReleaseLabel"] = "emr-5.31.0"
cluster_id = client.run_job_flow(**args)["JobFlowId"]
resp = client.describe_cluster(ClusterId=cluster_id)
resp["Cluster"]["CustomAmiId"].should.equal("MyEmrCustomAmi")

View file

@ -0,0 +1,49 @@
import pytest
from moto.emr.utils import ReleaseLabel
def test_invalid_release_labels_raise_exception():
invalid_releases = [
"",
"0",
"1.0",
"emr-2.0",
]
for invalid_release in invalid_releases:
with pytest.raises(ValueError):
ReleaseLabel(invalid_release)
def test_release_label_comparisons():
assert str(ReleaseLabel("emr-5.1.2")) == "emr-5.1.2"
assert ReleaseLabel("emr-5.0.0") != ReleaseLabel("emr-5.0.1")
assert ReleaseLabel("emr-5.0.0") == ReleaseLabel("emr-5.0.0")
assert ReleaseLabel("emr-5.31.0") > ReleaseLabel("emr-5.7.0")
assert ReleaseLabel("emr-6.0.0") > ReleaseLabel("emr-5.7.0")
assert ReleaseLabel("emr-5.7.0") < ReleaseLabel("emr-5.10.0")
assert ReleaseLabel("emr-5.10.0") < ReleaseLabel("emr-5.10.1")
assert ReleaseLabel("emr-5.60.0") >= ReleaseLabel("emr-5.7.0")
assert ReleaseLabel("emr-6.0.0") >= ReleaseLabel("emr-6.0.0")
assert ReleaseLabel("emr-5.7.0") <= ReleaseLabel("emr-5.17.0")
assert ReleaseLabel("emr-5.7.0") <= ReleaseLabel("emr-5.7.0")
releases_unsorted = [
ReleaseLabel("emr-5.60.2"),
ReleaseLabel("emr-4.0.1"),
ReleaseLabel("emr-4.0.0"),
ReleaseLabel("emr-5.7.3"),
]
releases_sorted = [str(label) for label in sorted(releases_unsorted)]
expected = [
"emr-4.0.0",
"emr-4.0.1",
"emr-5.7.3",
"emr-5.60.2",
]
assert releases_sorted == expected