2023-08-13 10:14:27 +00:00
|
|
|
"""Test the different server responses."""
|
2013-03-05 13:14:43 +00:00
|
|
|
import re
|
2023-11-30 15:55:51 +00:00
|
|
|
|
2021-08-26 17:53:26 +00:00
|
|
|
import xmltodict
|
2013-03-05 13:14:43 +00:00
|
|
|
|
|
|
|
import moto.server as server
|
2021-01-13 09:02:11 +00:00
|
|
|
from tests import EXAMPLE_AMI_ID
|
2013-03-05 13:14:43 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_ec2_server_get():
|
2013-12-29 01:15:37 +00:00
|
|
|
backend = server.create_backend_app("ec2")
|
|
|
|
test_client = backend.test_client()
|
|
|
|
|
2014-08-26 20:42:08 +00:00
|
|
|
res = test_client.get(
|
2021-01-13 09:02:11 +00:00
|
|
|
"/?Action=RunInstances&ImageId=" + EXAMPLE_AMI_ID,
|
2019-10-31 15:44:26 +00:00
|
|
|
headers={"Host": "ec2.us-east-1.amazonaws.com"},
|
2014-08-26 20:42:08 +00:00
|
|
|
)
|
2013-03-05 13:14:43 +00:00
|
|
|
|
2019-10-31 15:44:26 +00:00
|
|
|
groups = re.search("<instanceId>(.*)</instanceId>", res.data.decode("utf-8"))
|
2013-03-05 13:14:43 +00:00
|
|
|
instance_id = groups.groups()[0]
|
|
|
|
|
2019-10-31 15:44:26 +00:00
|
|
|
res = test_client.get("/?Action=DescribeInstances")
|
2023-07-17 09:31:05 +00:00
|
|
|
assert instance_id in res.data.decode("utf-8")
|
2021-08-26 17:53:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_ec2_get_unknown_vpc():
|
|
|
|
"""
|
|
|
|
Ensure that this call returns the error format in the right format
|
|
|
|
Terraform will throw errors when destroying a VPC otherwise
|
|
|
|
:return:
|
|
|
|
"""
|
|
|
|
backend = server.create_backend_app("ec2")
|
|
|
|
test_client = backend.test_client()
|
|
|
|
|
|
|
|
res = test_client.get(
|
|
|
|
"/?Action=DescribeVpcs&VpcId.1=vpc-unknown",
|
|
|
|
headers={"Host": "ec2.us-east-1.amazonaws.com"},
|
|
|
|
)
|
|
|
|
|
2023-07-17 09:31:05 +00:00
|
|
|
assert res.status_code == 400
|
2021-08-26 17:53:26 +00:00
|
|
|
body = xmltodict.parse(res.data.decode("utf-8"), dict_constructor=dict)
|
2023-07-17 09:31:05 +00:00
|
|
|
assert "Response" in body
|
|
|
|
assert "Errors" in body["Response"]
|
|
|
|
assert "Error" in body["Response"]["Errors"]
|
2021-08-26 17:53:26 +00:00
|
|
|
error = body["Response"]["Errors"]["Error"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert error["Code"] == "InvalidVpcID.NotFound"
|
|
|
|
assert error["Message"] == "VpcID {'vpc-unknown'} does not exist."
|
2021-08-26 17:53:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_ec2_get_unknown_route_table():
|
|
|
|
"""
|
|
|
|
Ensure that this call returns the error format in the right format
|
|
|
|
Terraform will throw errors when destroying a RouteTable otherwise
|
|
|
|
:return:
|
|
|
|
"""
|
|
|
|
backend = server.create_backend_app("ec2")
|
|
|
|
test_client = backend.test_client()
|
|
|
|
|
|
|
|
res = test_client.get(
|
|
|
|
"/?Action=DescribeRouteTables&RouteTableId.1=rtb-unknown",
|
|
|
|
headers={"Host": "ec2.us-east-1.amazonaws.com"},
|
|
|
|
)
|
|
|
|
|
2023-07-17 09:31:05 +00:00
|
|
|
assert res.status_code == 400
|
2021-08-26 17:53:26 +00:00
|
|
|
body = xmltodict.parse(res.data.decode("utf-8"), dict_constructor=dict)
|
2023-07-17 09:31:05 +00:00
|
|
|
assert "Error" in body["Response"]["Errors"]
|
2021-08-26 17:53:26 +00:00
|
|
|
error = body["Response"]["Errors"]["Error"]
|
2023-07-17 09:31:05 +00:00
|
|
|
assert error["Code"] == "InvalidRouteTableID.NotFound"
|
|
|
|
assert error["Message"] == "The routeTable ID 'rtb-unknown' does not exist"
|