Rewrite deprecated Route53 tests (#4327)

This commit is contained in:
Bert Blommers 2021-09-23 10:27:09 +00:00 committed by GitHub
parent 4c18b36170
commit e88e73aac7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 371 additions and 0 deletions

View File

@ -18,6 +18,7 @@ url_paths = {
r"{0}/(?P<api_version>[\d_-]+)/hostedzone/(?P<zone_id>[^/]+)/rrset/?$": Route53().rrset_response,
r"{0}/(?P<api_version>[\d_-]+)/hostedzonesbyname": Route53().list_hosted_zones_by_name_response,
r"{0}/(?P<api_version>[\d_-]+)/healthcheck": Route53().health_check_response,
r"{0}/(?P<api_version>[\d_-]+)/healthcheck/(?P<health_check_id>[^/]+)$": Route53().health_check_response,
r"{0}/(?P<api_version>[\d_-]+)/tags/healthcheck/(?P<zone_id>[^/]+)$": tag_response1,
r"{0}/(?P<api_version>[\d_-]+)/tags/hostedzone/(?P<zone_id>[^/]+)$": tag_response2,
r"{0}/(?P<api_version>[\d_-]+)/trafficpolicyinstances/*": Route53().not_implemented_response,

View File

@ -4,6 +4,7 @@ import boto
import boto3
from boto.route53.healthcheck import HealthCheck
from boto.route53.record import ResourceRecordSets
from botocore.exceptions import ClientError
import sure # noqa
@ -15,6 +16,7 @@ import pytest
from moto import mock_route53, mock_route53_deprecated
# Has boto3 equivalent
@mock_route53_deprecated
def test_hosted_zone():
conn = boto.connect_route53("the_key", "the_secret")
@ -39,6 +41,71 @@ def test_hosted_zone():
)
@mock_route53
def test_create_hosted_zone_boto3():
conn = boto3.client("route53", region_name="us-east-1")
response = conn.create_hosted_zone(
Name="testdns.aws.com.", CallerReference=str(hash("foo"))
)
firstzone = response["HostedZone"]
firstzone.should.have.key("Id").match(r"/hostedzone/[A-Z0-9]+")
firstzone.should.have.key("Name").equal("testdns.aws.com.")
firstzone.should.have.key("Config").equal({"PrivateZone": False})
firstzone.should.have.key("ResourceRecordSetCount").equal(0)
delegation = response["DelegationSet"]
delegation.should.equal({"NameServers": ["moto.test.com"]})
@mock_route53
def test_list_hosted_zones():
conn = boto3.client("route53", region_name="us-east-1")
res = conn.list_hosted_zones()["HostedZones"]
res.should.have.length_of(0)
zone1 = conn.create_hosted_zone(
Name="testdns1.aws.com.", CallerReference=str(hash("foo"))
)["HostedZone"]
zone2 = conn.create_hosted_zone(
Name="testdns2.aws.com.", CallerReference=str(hash("foo"))
)["HostedZone"]
res = conn.list_hosted_zones()["HostedZones"]
res.should.have.length_of(2)
res.should.contain(zone1)
res.should.contain(zone2)
@mock_route53
def test_delete_hosted_zone():
conn = boto3.client("route53", region_name="us-east-1")
zone1 = conn.create_hosted_zone(
Name="testdns1.aws.com.", CallerReference=str(hash("foo"))
)["HostedZone"]
conn.create_hosted_zone(Name="testdns2.aws.com.", CallerReference=str(hash("foo")))
conn.delete_hosted_zone(Id=zone1["Id"])
res = conn.list_hosted_zones()["HostedZones"]
res.should.have.length_of(1)
@mock_route53
def test_get_unknown_hosted_zone():
conn = boto3.client("route53", region_name="us-east-1")
with pytest.raises(ClientError) as ex:
conn.get_hosted_zone(Id="unknown")
err = ex.value.response["Error"]
err["Code"].should.equal("NoSuchHostedZone")
err["Message"].should.equal("Zone unknown Not Found")
# Has boto3 equivalent
@mock_route53_deprecated
def test_rrset():
conn = boto.connect_route53("the_key", "the_secret")
@ -152,6 +219,34 @@ def test_rrset():
rrsets.should.have.length_of(0)
@mock_route53
def test_list_resource_record_set_unknown_zone():
conn = boto3.client("route53", region_name="us-east-1")
with pytest.raises(ClientError) as ex:
conn.list_resource_record_sets(HostedZoneId="abcd")
err = ex.value.response["Error"]
err["Code"].should.equal("NoSuchHostedZone")
err["Message"].should.equal("Zone abcd Not Found")
@mock_route53
def test_list_resource_record_set_unknown_type():
conn = boto3.client("route53", region_name="us-east-1")
zone = conn.create_hosted_zone(
Name="testdns1.aws.com.", CallerReference=str(hash("foo"))
)["HostedZone"]
with pytest.raises(ClientError) as ex:
conn.list_resource_record_sets(HostedZoneId=zone["Id"], StartRecordType="A")
err = ex.value.response["Error"]
err["Code"].should.equal("400")
err["Message"].should.equal("Bad Request")
# Has boto3 equivalent
@mock_route53_deprecated
def test_rrset_with_multiple_values():
conn = boto.connect_route53("the_key", "the_secret")
@ -169,6 +264,7 @@ def test_rrset_with_multiple_values():
set(rrsets[0].resource_records).should.equal(set(["1.2.3.4", "5.6.7.8"]))
# Has boto3 equivalent
@mock_route53_deprecated
def test_alias_rrset():
conn = boto.connect_route53("the_key", "the_secret")
@ -205,6 +301,7 @@ def test_alias_rrset():
rrsets[0].resource_records.should.have.length_of(0)
# Has boto3 equivalent
@mock_route53_deprecated
def test_create_health_check():
conn = boto.connect_route53("the_key", "the_secret")
@ -235,6 +332,65 @@ def test_create_health_check():
config["FailureThreshold"].should.equal("2")
@mock_route53
def test_create_health_check_boto3():
conn = boto3.client("route53", region_name="us-east-1")
check = conn.create_health_check(
CallerReference="?",
HealthCheckConfig={
"IPAddress": "10.0.0.25",
"Port": 80,
"Type": "HTTP",
"ResourcePath": "/",
"FullyQualifiedDomainName": "example.com",
"SearchString": "a good response",
"RequestInterval": 10,
"FailureThreshold": 2,
},
)["HealthCheck"]
check.should.have.key("Id").match("[a-z0-9-]+")
check.should.have.key("CallerReference")
check.should.have.key("HealthCheckConfig")
check["HealthCheckConfig"].should.have.key("IPAddress").equal("10.0.0.25")
check["HealthCheckConfig"].should.have.key("Port").equal(80)
check["HealthCheckConfig"].should.have.key("Type").equal("HTTP")
check["HealthCheckConfig"].should.have.key("ResourcePath").equal("/")
check["HealthCheckConfig"].should.have.key("FullyQualifiedDomainName").equal(
"example.com"
)
check["HealthCheckConfig"].should.have.key("SearchString").equal("a good response")
check["HealthCheckConfig"].should.have.key("RequestInterval").equal(10)
check["HealthCheckConfig"].should.have.key("FailureThreshold").equal(2)
check.should.have.key("HealthCheckVersion").equal(1)
@mock_route53
def test_list_health_checks_boto3():
conn = boto3.client("route53", region_name="us-east-1")
conn.list_health_checks()["HealthChecks"].should.have.length_of(0)
check = conn.create_health_check(
CallerReference="?",
HealthCheckConfig={
"IPAddress": "10.0.0.25",
"Port": 80,
"Type": "HTTP",
"ResourcePath": "/",
"FullyQualifiedDomainName": "example.com",
"SearchString": "a good response",
"RequestInterval": 10,
"FailureThreshold": 2,
},
)["HealthCheck"]
checks = conn.list_health_checks()["HealthChecks"]
checks.should.have.length_of(1)
checks.should.contain(check)
# Has boto3 equivalent
@mock_route53_deprecated
def test_delete_health_check():
conn = boto.connect_route53("the_key", "the_secret")
@ -251,6 +407,33 @@ def test_delete_health_check():
list(checks).should.have.length_of(0)
@mock_route53
def test_delete_health_checks_boto3():
conn = boto3.client("route53", region_name="us-east-1")
conn.list_health_checks()["HealthChecks"].should.have.length_of(0)
check = conn.create_health_check(
CallerReference="?",
HealthCheckConfig={
"IPAddress": "10.0.0.25",
"Port": 80,
"Type": "HTTP",
"ResourcePath": "/",
"FullyQualifiedDomainName": "example.com",
"SearchString": "a good response",
"RequestInterval": 10,
"FailureThreshold": 2,
},
)["HealthCheck"]
conn.delete_health_check(HealthCheckId=check["Id"])
checks = conn.list_health_checks()["HealthChecks"]
checks.should.have.length_of(0)
# Has boto3 equivalent
@mock_route53_deprecated
def test_use_health_check_in_resource_record_set():
conn = boto.connect_route53("the_key", "the_secret")
@ -273,6 +456,53 @@ def test_use_health_check_in_resource_record_set():
record_sets[0].health_check.should.equal(check_id)
@mock_route53
def test_use_health_check_in_resource_record_set_boto3():
conn = boto3.client("route53", region_name="us-east-1")
check = conn.create_health_check(
CallerReference="?",
HealthCheckConfig={
"IPAddress": "10.0.0.25",
"Port": 80,
"Type": "HTTP",
"ResourcePath": "/",
"RequestInterval": 10,
"FailureThreshold": 2,
},
)["HealthCheck"]
check_id = check["Id"]
zone = conn.create_hosted_zone(
Name="testdns.aws.com", CallerReference=str(hash("foo"))
)
zone_id = zone["HostedZone"]["Id"]
conn.change_resource_record_sets(
HostedZoneId=zone_id,
ChangeBatch={
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "foo.bar.testdns.aws.com",
"Type": "A",
"HealthCheckId": check_id,
"ResourceRecords": [{"Value": "1.2.3.4"}],
},
}
]
},
)
record_sets = conn.list_resource_record_sets(HostedZoneId=zone_id)[
"ResourceRecordSets"
]
record_sets[0]["Name"].should.equal("foo.bar.testdns.aws.com.")
record_sets[0]["HealthCheckId"].should.equal(check_id)
# Has boto3 equivalent
@mock_route53_deprecated
def test_hosted_zone_comment_preserved():
conn = boto.connect_route53("the_key", "the_secret")
@ -294,6 +524,25 @@ def test_hosted_zone_comment_preserved():
zone.config["Comment"].should.equal("test comment")
@mock_route53
def test_hosted_zone_comment_preserved_boto3():
conn = boto3.client("route53", region_name="us-east-1")
firstzone = conn.create_hosted_zone(
Name="testdns.aws.com",
CallerReference=str(hash("foo")),
HostedZoneConfig={"Comment": "test comment"},
)
zone_id = firstzone["HostedZone"]["Id"]
hosted_zone = conn.get_hosted_zone(Id=zone_id)
hosted_zone["HostedZone"]["Config"]["Comment"].should.equal("test comment")
hosted_zones = conn.list_hosted_zones()
hosted_zones["HostedZones"][0]["Config"]["Comment"].should.equal("test comment")
# Has boto3 equivalent
@mock_route53_deprecated
def test_deleting_weighted_route():
conn = boto.connect_route53()
@ -319,6 +568,63 @@ def test_deleting_weighted_route():
cname.identifier.should.equal("success-test-bar")
@mock_route53
def test_deleting_weighted_route_boto3():
conn = boto3.client("route53", region_name="us-east-1")
zone = conn.create_hosted_zone(
Name="testdns.aws.com", CallerReference=str(hash("foo"))
)
zone_id = zone["HostedZone"]["Id"]
for identifier in ["success-test-foo", "success-test-bar"]:
conn.change_resource_record_sets(
HostedZoneId=zone_id,
ChangeBatch={
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "cname.testdns.aws.com",
"Type": "CNAME",
"SetIdentifier": identifier,
"Weight": 50,
},
}
]
},
)
cnames = conn.list_resource_record_sets(
HostedZoneId=zone_id, StartRecordName="cname", StartRecordType="CNAME"
)["ResourceRecordSets"]
cnames.should.have.length_of(2)
conn.change_resource_record_sets(
HostedZoneId=zone_id,
ChangeBatch={
"Changes": [
{
"Action": "DELETE",
"ResourceRecordSet": {
"Name": "cname.testdns.aws.com",
"Type": "CNAME",
"SetIdentifier": "success-test-foo",
},
}
]
},
)
cnames = conn.list_resource_record_sets(
HostedZoneId=zone_id, StartRecordName="cname", StartRecordType="CNAME"
)["ResourceRecordSets"]
cnames.should.have.length_of(1)
cnames[0]["Name"].should.equal("cname.testdns.aws.com.")
cnames[0]["SetIdentifier"].should.equal("success-test-bar")
# Has boto3 equivalent
@mock_route53_deprecated
def test_deleting_latency_route():
conn = boto.connect_route53()
@ -350,6 +656,70 @@ def test_deleting_latency_route():
cname.region.should.equal("us-west-1")
@mock_route53
def test_deleting_latency_route_boto3():
conn = boto3.client("route53", region_name="us-east-1")
zone = conn.create_hosted_zone(
Name="testdns.aws.com", CallerReference=str(hash("foo"))
)
zone_id = zone["HostedZone"]["Id"]
for _id, region in [
("success-test-foo", "us-west-2"),
("success-test-bar", "us-west-1"),
]:
conn.change_resource_record_sets(
HostedZoneId=zone_id,
ChangeBatch={
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "cname.testdns.aws.com",
"Type": "CNAME",
"SetIdentifier": _id,
"Region": region,
"ResourceRecords": [{"Value": "example.com"}],
},
}
]
},
)
cnames = conn.list_resource_record_sets(
HostedZoneId=zone_id, StartRecordName="cname", StartRecordType="CNAME"
)["ResourceRecordSets"]
cnames.should.have.length_of(2)
foo_cname = [
cname for cname in cnames if cname["SetIdentifier"] == "success-test-foo"
][0]
foo_cname["Region"].should.equal("us-west-2")
conn.change_resource_record_sets(
HostedZoneId=zone_id,
ChangeBatch={
"Changes": [
{
"Action": "DELETE",
"ResourceRecordSet": {
"Name": "cname.testdns.aws.com",
"Type": "CNAME",
"SetIdentifier": "success-test-foo",
},
}
]
},
)
cnames = conn.list_resource_record_sets(
HostedZoneId=zone_id, StartRecordName="cname", StartRecordType="CNAME"
)["ResourceRecordSets"]
cnames.should.have.length_of(1)
cnames[0]["SetIdentifier"].should.equal("success-test-bar")
cnames[0]["Region"].should.equal("us-west-1")
# Has boto3 equivalent
@mock_route53_deprecated
def test_hosted_zone_private_zone_preserved():
conn = boto.connect_route53("the_key", "the_secret")