326 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			326 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								"""Unit tests for apigatewayv2-supported APIs."""
							 | 
						||
| 
								 | 
							
								import boto3
							 | 
						||
| 
								 | 
							
								import pytest
							 | 
						||
| 
								 | 
							
								import sure  # noqa # pylint: disable=unused-import
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from botocore.exceptions import ClientError
							 | 
						||
| 
								 | 
							
								from moto import mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# See our Development Tips on writing tests for hints on how to write good tests:
							 | 
						||
| 
								 | 
							
								# http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_create_api_with_unknown_protocol_type():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with pytest.raises(ClientError) as exc:
							 | 
						||
| 
								 | 
							
								        client.create_api(Name="test-api", ProtocolType="?")
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("BadRequestException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal(
							 | 
						||
| 
								 | 
							
								        "Invalid protocol specified. Must be one of [HTTP, WEBSOCKET]"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_create_api_minimal():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    resp = client.create_api(Name="test-api", ProtocolType="HTTP")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiId")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiEndpoint").equals(
							 | 
						||
| 
								 | 
							
								        f"https://{resp['ApiId']}.execute-api.eu-west-1.amazonaws.com"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiKeySelectionExpression").equals(
							 | 
						||
| 
								 | 
							
								        "$request.header.x-api-key"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("CreatedDate")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableExecuteApiEndpoint").equals(False)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Name").equals("test-api")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ProtocolType").equals("HTTP")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("RouteSelectionExpression").equals(
							 | 
						||
| 
								 | 
							
								        "$request.method $request.path"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_create_api():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    resp = client.create_api(
							 | 
						||
| 
								 | 
							
								        ApiKeySelectionExpression="s3l3ction",
							 | 
						||
| 
								 | 
							
								        CorsConfiguration={
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": True,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET", "PUT"],
							 | 
						||
| 
								 | 
							
								            "AllowOrigins": ["google.com"],
							 | 
						||
| 
								 | 
							
								            "ExposeHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "MaxAge": 2,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        Description="my first api",
							 | 
						||
| 
								 | 
							
								        DisableSchemaValidation=True,
							 | 
						||
| 
								 | 
							
								        DisableExecuteApiEndpoint=True,
							 | 
						||
| 
								 | 
							
								        Name="test-api",
							 | 
						||
| 
								 | 
							
								        ProtocolType="HTTP",
							 | 
						||
| 
								 | 
							
								        RouteSelectionExpression="route_s3l3ction",
							 | 
						||
| 
								 | 
							
								        Version="1.0",
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiId")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiEndpoint").equals(
							 | 
						||
| 
								 | 
							
								        f"https://{resp['ApiId']}.execute-api.eu-west-1.amazonaws.com"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiKeySelectionExpression").equals("s3l3ction")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("CreatedDate")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("CorsConfiguration").equals(
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": True,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET", "PUT"],
							 | 
						||
| 
								 | 
							
								            "AllowOrigins": ["google.com"],
							 | 
						||
| 
								 | 
							
								            "ExposeHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "MaxAge": 2,
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Description").equals("my first api")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableExecuteApiEndpoint").equals(True)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableSchemaValidation").equals(True)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Name").equals("test-api")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ProtocolType").equals("HTTP")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("RouteSelectionExpression").equals("route_s3l3ction")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Version").equals("1.0")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_delete_api():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="us-east-2")
							 | 
						||
| 
								 | 
							
								    api_id = client.create_api(Name="t", ProtocolType="HTTP")["ApiId"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    client.delete_api(ApiId=api_id)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with pytest.raises(ClientError) as exc:
							 | 
						||
| 
								 | 
							
								        client.get_api(ApiId=api_id)
							 | 
						||
| 
								 | 
							
								    exc.value.response["Error"]["Code"].should.equal("NotFoundException")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_delete_cors_configuration():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    api_id = client.create_api(
							 | 
						||
| 
								 | 
							
								        ApiKeySelectionExpression="s3l3ction",
							 | 
						||
| 
								 | 
							
								        CorsConfiguration={
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": True,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET", "PUT"],
							 | 
						||
| 
								 | 
							
								            "AllowOrigins": ["google.com"],
							 | 
						||
| 
								 | 
							
								            "ExposeHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "MaxAge": 2,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        Description="my first api",
							 | 
						||
| 
								 | 
							
								        DisableSchemaValidation=True,
							 | 
						||
| 
								 | 
							
								        DisableExecuteApiEndpoint=True,
							 | 
						||
| 
								 | 
							
								        Name="test-api",
							 | 
						||
| 
								 | 
							
								        ProtocolType="HTTP",
							 | 
						||
| 
								 | 
							
								        RouteSelectionExpression="route_s3l3ction",
							 | 
						||
| 
								 | 
							
								        Version="1.0",
							 | 
						||
| 
								 | 
							
								    )["ApiId"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    client.delete_cors_configuration(ApiId=api_id)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp = client.get_api(ApiId=api_id)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp.shouldnt.have.key("CorsConfiguration")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Description").equals("my first api")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Name").equals("test-api")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_get_api_unknown():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="ap-southeast-1")
							 | 
						||
| 
								 | 
							
								    with pytest.raises(ClientError) as exc:
							 | 
						||
| 
								 | 
							
								        client.get_api(ApiId="unknown")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("NotFoundException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal("Invalid API identifier specified unknown")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_get_api():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="ap-southeast-1")
							 | 
						||
| 
								 | 
							
								    api_id = client.create_api(Name="test-get-api", ProtocolType="WEBSOCKET")["ApiId"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp = client.get_api(ApiId=api_id)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiId").equals(api_id)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiEndpoint").equals(
							 | 
						||
| 
								 | 
							
								        f"https://{resp['ApiId']}.execute-api.ap-southeast-1.amazonaws.com"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiKeySelectionExpression").equals(
							 | 
						||
| 
								 | 
							
								        "$request.header.x-api-key"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("CreatedDate")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableExecuteApiEndpoint").equals(False)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Name").equals("test-get-api")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ProtocolType").equals("WEBSOCKET")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("RouteSelectionExpression").equals(
							 | 
						||
| 
								 | 
							
								        "$request.method $request.path"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_get_apis():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="ap-southeast-1")
							 | 
						||
| 
								 | 
							
								    client.get_apis().should.have.key("Items").length_of(0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    api_id_1 = client.create_api(Name="api1", ProtocolType="HTTP")["ApiId"]
							 | 
						||
| 
								 | 
							
								    api_id_2 = client.create_api(Name="api2", ProtocolType="WEBSOCKET")["ApiId"]
							 | 
						||
| 
								 | 
							
								    client.get_apis().should.have.key("Items").length_of(2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    api_ids = [i["ApiId"] for i in client.get_apis()["Items"]]
							 | 
						||
| 
								 | 
							
								    api_ids.should.contain(api_id_1)
							 | 
						||
| 
								 | 
							
								    api_ids.should.contain(api_id_2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_update_api_minimal():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    api_id = client.create_api(
							 | 
						||
| 
								 | 
							
								        ApiKeySelectionExpression="s3l3ction",
							 | 
						||
| 
								 | 
							
								        CorsConfiguration={
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": True,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET", "PUT"],
							 | 
						||
| 
								 | 
							
								            "AllowOrigins": ["google.com"],
							 | 
						||
| 
								 | 
							
								            "ExposeHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "MaxAge": 2,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        Description="my first api",
							 | 
						||
| 
								 | 
							
								        DisableSchemaValidation=True,
							 | 
						||
| 
								 | 
							
								        DisableExecuteApiEndpoint=True,
							 | 
						||
| 
								 | 
							
								        Name="test-api",
							 | 
						||
| 
								 | 
							
								        ProtocolType="HTTP",
							 | 
						||
| 
								 | 
							
								        RouteSelectionExpression="route_s3l3ction",
							 | 
						||
| 
								 | 
							
								        Version="1.0",
							 | 
						||
| 
								 | 
							
								    )["ApiId"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp = client.update_api(
							 | 
						||
| 
								 | 
							
								        ApiId=api_id,
							 | 
						||
| 
								 | 
							
								        CorsConfiguration={
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": False,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["x-header2"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET", "PUT"],
							 | 
						||
| 
								 | 
							
								            "AllowOrigins": ["google.com"],
							 | 
						||
| 
								 | 
							
								            "ExposeHeaders": ["x-header2"],
							 | 
						||
| 
								 | 
							
								            "MaxAge": 2,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiId")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiEndpoint").equals(
							 | 
						||
| 
								 | 
							
								        f"https://{resp['ApiId']}.execute-api.eu-west-1.amazonaws.com"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiKeySelectionExpression").equals("s3l3ction")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("CreatedDate")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("CorsConfiguration").equals(
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": False,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["x-header2"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET", "PUT"],
							 | 
						||
| 
								 | 
							
								            "AllowOrigins": ["google.com"],
							 | 
						||
| 
								 | 
							
								            "ExposeHeaders": ["x-header2"],
							 | 
						||
| 
								 | 
							
								            "MaxAge": 2,
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Description").equals("my first api")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableExecuteApiEndpoint").equals(True)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableSchemaValidation").equals(True)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Name").equals("test-api")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ProtocolType").equals("HTTP")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("RouteSelectionExpression").equals("route_s3l3ction")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Version").equals("1.0")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_update_api_empty_fields():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="eu-west-1")
							 | 
						||
| 
								 | 
							
								    api_id = client.create_api(
							 | 
						||
| 
								 | 
							
								        ApiKeySelectionExpression="s3l3ction",
							 | 
						||
| 
								 | 
							
								        CorsConfiguration={
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": True,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET", "PUT"],
							 | 
						||
| 
								 | 
							
								            "AllowOrigins": ["google.com"],
							 | 
						||
| 
								 | 
							
								            "ExposeHeaders": ["x-header1"],
							 | 
						||
| 
								 | 
							
								            "MaxAge": 2,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        Description="my first api",
							 | 
						||
| 
								 | 
							
								        DisableSchemaValidation=True,
							 | 
						||
| 
								 | 
							
								        DisableExecuteApiEndpoint=True,
							 | 
						||
| 
								 | 
							
								        Name="test-api",
							 | 
						||
| 
								 | 
							
								        ProtocolType="HTTP",
							 | 
						||
| 
								 | 
							
								        RouteSelectionExpression="route_s3l3ction",
							 | 
						||
| 
								 | 
							
								        Version="1.0",
							 | 
						||
| 
								 | 
							
								    )["ApiId"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp = client.update_api(ApiId=api_id, Description="", Name="updated", Version="")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiId")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiEndpoint").equals(
							 | 
						||
| 
								 | 
							
								        f"https://{resp['ApiId']}.execute-api.eu-west-1.amazonaws.com"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiKeySelectionExpression").equals("s3l3ction")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Description").equals("")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableExecuteApiEndpoint").equals(True)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableSchemaValidation").equals(True)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Name").equals("updated")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ProtocolType").equals("HTTP")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("RouteSelectionExpression").equals("route_s3l3ction")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Version").equals("")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_update_api():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="us-east-2")
							 | 
						||
| 
								 | 
							
								    api_id = client.create_api(Name="test-api", ProtocolType="HTTP")["ApiId"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp = client.update_api(
							 | 
						||
| 
								 | 
							
								        ApiId=api_id,
							 | 
						||
| 
								 | 
							
								        ApiKeySelectionExpression="api_key_s3l3ction",
							 | 
						||
| 
								 | 
							
								        CorsConfiguration={
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": True,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["X-Amz-Target"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET"],
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        CredentialsArn="credentials:arn",
							 | 
						||
| 
								 | 
							
								        Description="updated API",
							 | 
						||
| 
								 | 
							
								        DisableSchemaValidation=True,
							 | 
						||
| 
								 | 
							
								        DisableExecuteApiEndpoint=True,
							 | 
						||
| 
								 | 
							
								        Name="new name",
							 | 
						||
| 
								 | 
							
								        RouteKey="route key",
							 | 
						||
| 
								 | 
							
								        RouteSelectionExpression="route_s3l3ction",
							 | 
						||
| 
								 | 
							
								        Target="updated target",
							 | 
						||
| 
								 | 
							
								        Version="1.1",
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiId")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiEndpoint").equals(
							 | 
						||
| 
								 | 
							
								        f"https://{resp['ApiId']}.execute-api.us-east-2.amazonaws.com"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ApiKeySelectionExpression").equals("api_key_s3l3ction")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("CorsConfiguration").equals(
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            "AllowCredentials": True,
							 | 
						||
| 
								 | 
							
								            "AllowHeaders": ["X-Amz-Target"],
							 | 
						||
| 
								 | 
							
								            "AllowMethods": ["GET"],
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("CreatedDate")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Description").equals("updated API")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableSchemaValidation").equals(True)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("DisableExecuteApiEndpoint").equals(True)
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Name").equals("new name")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("ProtocolType").equals("HTTP")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("RouteSelectionExpression").equals("route_s3l3ction")
							 | 
						||
| 
								 | 
							
								    resp.should.have.key("Version").equals("1.1")
							 |