299 lines
9.8 KiB
Python
299 lines
9.8 KiB
Python
import boto3
|
|
import pytest
|
|
import sure # noqa # pylint: disable=unused-import
|
|
from botocore.exceptions import ClientError
|
|
from moto import mock_route53
|
|
|
|
|
|
@mock_route53
|
|
def test_create_health_check():
|
|
client = boto3.client("route53", region_name="us-east-1")
|
|
|
|
response = client.create_health_check(
|
|
CallerReference="test-route53-health-HealthCheck-asdf",
|
|
HealthCheckConfig={
|
|
"IPAddress": "93.184.216.34",
|
|
"Port": 80,
|
|
"Type": "HTTP",
|
|
"ResourcePath": "/",
|
|
"FullyQualifiedDomainName": "example.com",
|
|
"RequestInterval": 10,
|
|
"FailureThreshold": 2,
|
|
},
|
|
)
|
|
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(201)
|
|
#
|
|
check = response["HealthCheck"]
|
|
check.should.have.key("Id")
|
|
check.should.have.key("CallerReference").being.equal(
|
|
"test-route53-health-HealthCheck-asdf"
|
|
)
|
|
check.should.have.key("HealthCheckConfig")
|
|
#
|
|
config = check["HealthCheckConfig"]
|
|
config.should.have.key("IPAddress").being.equal("93.184.216.34")
|
|
config.should.have.key("Port").being.equal(80)
|
|
config.should.have.key("Type").being.equal("HTTP")
|
|
config.should.have.key("ResourcePath").being.equal("/")
|
|
config.should.have.key("FullyQualifiedDomainName").being.equal("example.com")
|
|
config.should.have.key("RequestInterval").being.equal(10)
|
|
config.should.have.key("FailureThreshold").being.equal(2)
|
|
config.should.have.key("MeasureLatency").being.equal(False)
|
|
config.should.have.key("Inverted").being.equal(False)
|
|
config.should.have.key("Disabled").being.equal(False)
|
|
config.should.have.key("EnableSNI").being.equal(False)
|
|
|
|
config.shouldnt.have.key("ChildHealthChecks")
|
|
config.shouldnt.have.key("HealthThreshold")
|
|
|
|
|
|
@mock_route53
|
|
def test_create_health_check_with_additional_options():
|
|
client = boto3.client("route53", region_name="us-east-1")
|
|
|
|
response = client.create_health_check(
|
|
CallerReference="test-route53-health-HealthCheck-asdf",
|
|
HealthCheckConfig={
|
|
"IPAddress": "93.184.216.34",
|
|
"Port": 80,
|
|
"Type": "HTTP",
|
|
"ResourcePath": "/",
|
|
"FullyQualifiedDomainName": "example.com",
|
|
"SearchString": "a good response",
|
|
"RequestInterval": 10,
|
|
"FailureThreshold": 2,
|
|
"MeasureLatency": True,
|
|
"Inverted": True,
|
|
"Disabled": True,
|
|
"EnableSNI": True,
|
|
},
|
|
)
|
|
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(201)
|
|
#
|
|
check = response["HealthCheck"]
|
|
check.should.have.key("CallerReference").being.equal(
|
|
"test-route53-health-HealthCheck-asdf"
|
|
)
|
|
check.should.have.key("HealthCheckVersion").equal(1)
|
|
check.should.have.key("HealthCheckConfig")
|
|
#
|
|
config = check["HealthCheckConfig"]
|
|
check["HealthCheckConfig"].should.have.key("SearchString").equal("a good response")
|
|
config.should.have.key("MeasureLatency").being.equal(True)
|
|
config.should.have.key("Inverted").being.equal(True)
|
|
config.should.have.key("Disabled").being.equal(True)
|
|
config.should.have.key("EnableSNI").being.equal(True)
|
|
|
|
|
|
@mock_route53
|
|
def test_create_calculated_health_check():
|
|
client = boto3.client("route53", region_name="us-east-1")
|
|
|
|
response = client.create_health_check(
|
|
CallerReference="test-route53-health-HealthCheck-ZHV123",
|
|
HealthCheckConfig={
|
|
"Type": "CALCULATED",
|
|
"Inverted": False,
|
|
"Disabled": False,
|
|
"HealthThreshold": 1,
|
|
},
|
|
)
|
|
|
|
check = response["HealthCheck"]
|
|
check.should.have.key("Id")
|
|
check.should.have.key("CallerReference").being.equal(
|
|
"test-route53-health-HealthCheck-ZHV123"
|
|
)
|
|
#
|
|
config = check["HealthCheckConfig"]
|
|
config.should.have.key("Type").being.equal("CALCULATED")
|
|
config.should.have.key("Inverted").being.equal(False)
|
|
config.should.have.key("Disabled").being.equal(False)
|
|
config.should.have.key("HealthThreshold").being.equal(1)
|
|
#
|
|
config.shouldnt.have.key("IPAddress")
|
|
config.shouldnt.have.key("Port")
|
|
config.shouldnt.have.key("ResourcePath")
|
|
config.shouldnt.have.key("FullyQualifiedDomainName")
|
|
config.shouldnt.have.key("RequestInterval")
|
|
config.shouldnt.have.key("FailureThreshold")
|
|
config.shouldnt.have.key("MeasureLatency")
|
|
|
|
|
|
@mock_route53
|
|
def test_create_calculated_health_check_with_children():
|
|
client = boto3.client("route53", region_name="us-east-1")
|
|
|
|
child1 = client.create_health_check(
|
|
CallerReference="test-route53-health-HealthCheck-child1",
|
|
HealthCheckConfig={
|
|
"Type": "CALCULATED",
|
|
"Inverted": False,
|
|
"Disabled": False,
|
|
"HealthThreshold": 1,
|
|
},
|
|
)
|
|
|
|
child2 = client.create_health_check(
|
|
CallerReference="test-route53-health-HealthCheck-child2",
|
|
HealthCheckConfig={
|
|
"Type": "CALCULATED",
|
|
"Inverted": False,
|
|
"Disabled": False,
|
|
"HealthThreshold": 1,
|
|
},
|
|
)
|
|
|
|
parent = client.create_health_check(
|
|
CallerReference="test-route53-health-HealthCheck-parent",
|
|
HealthCheckConfig={
|
|
"Type": "CALCULATED",
|
|
"Inverted": False,
|
|
"Disabled": False,
|
|
"HealthThreshold": 1,
|
|
"ChildHealthChecks": [
|
|
child1["HealthCheck"]["Id"],
|
|
child2["HealthCheck"]["Id"],
|
|
],
|
|
},
|
|
)
|
|
|
|
check = parent["HealthCheck"]
|
|
check.should.have.key("Id")
|
|
check.should.have.key("CallerReference").being.equal(
|
|
"test-route53-health-HealthCheck-parent"
|
|
)
|
|
#
|
|
config = check["HealthCheckConfig"]
|
|
config.should.have.key("Type").being.equal("CALCULATED")
|
|
config.should.have.key("Inverted").being.equal(False)
|
|
config.should.have.key("Disabled").being.equal(False)
|
|
config.should.have.key("HealthThreshold").being.equal(1)
|
|
config.should.have.key("ChildHealthChecks").being.equal(
|
|
[child1["HealthCheck"]["Id"], child2["HealthCheck"]["Id"]]
|
|
)
|
|
|
|
|
|
@mock_route53
|
|
def test_get_health_check():
|
|
client = boto3.client("route53", region_name="us-east-1")
|
|
|
|
hc_id = client.create_health_check(
|
|
CallerReference="callref",
|
|
HealthCheckConfig={
|
|
"Type": "CALCULATED",
|
|
"Inverted": False,
|
|
"Disabled": False,
|
|
"HealthThreshold": 1,
|
|
},
|
|
)["HealthCheck"]["Id"]
|
|
|
|
resp = client.get_health_check(HealthCheckId=hc_id)["HealthCheck"]
|
|
resp.should.have.key("Id").equals(hc_id)
|
|
resp.should.have.key("CallerReference").equals("callref")
|
|
resp.should.have.key("HealthCheckVersion").equals(1)
|
|
|
|
|
|
@mock_route53
|
|
def test_get_unknown_health_check():
|
|
client = boto3.client("route53", region_name="us-east-1")
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
client.get_health_check(HealthCheckId="unknown")
|
|
err = exc.value.response["Error"]
|
|
err["Code"].should.equal("NoSuchHealthCheck")
|
|
err["Message"].should.equal("A health check with id unknown does not exist.")
|
|
|
|
|
|
@mock_route53
|
|
def test_list_health_checks():
|
|
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)
|
|
|
|
|
|
@mock_route53
|
|
def test_delete_health_checks():
|
|
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)
|
|
|
|
|
|
@mock_route53
|
|
def test_update_health_check():
|
|
client = boto3.client("route53", region_name="us-east-1")
|
|
|
|
hc_id = client.create_health_check(
|
|
CallerReference="callref",
|
|
HealthCheckConfig={
|
|
"Type": "CALCULATED",
|
|
"Inverted": False,
|
|
"Disabled": False,
|
|
"HealthThreshold": 1,
|
|
},
|
|
)["HealthCheck"]["Id"]
|
|
|
|
client.update_health_check(
|
|
HealthCheckId=hc_id,
|
|
IPAddress="0.0.0.0",
|
|
Port=80,
|
|
ResourcePath="rp",
|
|
FullyQualifiedDomainName="example.com",
|
|
SearchString="search",
|
|
FailureThreshold=123,
|
|
Inverted=False,
|
|
Disabled=False,
|
|
HealthThreshold=13,
|
|
ChildHealthChecks=["child"],
|
|
Regions=["us-east-1", "us-east-2", "us-west-1"],
|
|
)
|
|
|
|
config = client.get_health_check(HealthCheckId=hc_id)["HealthCheck"][
|
|
"HealthCheckConfig"
|
|
]
|
|
config.should.have.key("Type").equals("CALCULATED")
|
|
config.should.have.key("ResourcePath").equals("rp")
|
|
config.should.have.key("FullyQualifiedDomainName").equals("example.com")
|
|
config.should.have.key("SearchString").equals("search")
|
|
config.should.have.key("Inverted").equals(False)
|
|
config.should.have.key("Disabled").equals(False)
|
|
config.should.have.key("ChildHealthChecks").equals(["child"])
|
|
config.should.have.key("Regions").equals(["us-east-1", "us-east-2", "us-west-1"])
|