97 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			97 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import boto3
							 | 
						||
| 
								 | 
							
								import sure  # noqa # pylint: disable=unused-import
							 | 
						||
| 
								 | 
							
								import pytest
							 | 
						||
| 
								 | 
							
								import botocore.exceptions
							 | 
						||
| 
								 | 
							
								from moto import mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_create_domain_name():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    domain_name = "dev"
							 | 
						||
| 
								 | 
							
								    tags = {"tag": "it"}
							 | 
						||
| 
								 | 
							
								    expected_keys = [
							 | 
						||
| 
								 | 
							
								        "DomainName",
							 | 
						||
| 
								 | 
							
								        "ApiMappingSelectionExpression",
							 | 
						||
| 
								 | 
							
								        "DomainNameConfigurations",
							 | 
						||
| 
								 | 
							
								        "MutualTlsAuthentication",
							 | 
						||
| 
								 | 
							
								        "Tags",
							 | 
						||
| 
								 | 
							
								    ]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    post_resp = client.create_domain_name(DomainName=domain_name, Tags=tags)
							 | 
						||
| 
								 | 
							
								    get_resp = client.get_domain_name(DomainName=domain_name)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # check post response has all keys
							 | 
						||
| 
								 | 
							
								    for key in expected_keys:
							 | 
						||
| 
								 | 
							
								        post_resp.should.have.key(key)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # check get response has all keys
							 | 
						||
| 
								 | 
							
								    for key in expected_keys:
							 | 
						||
| 
								 | 
							
								        get_resp.should.have.key(key)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # check that values are equal for post and get of same resource
							 | 
						||
| 
								 | 
							
								    for key in expected_keys:
							 | 
						||
| 
								 | 
							
								        post_resp.get(key).should.equal(get_resp.get(key))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # ensure known values are set correct in post response
							 | 
						||
| 
								 | 
							
								    post_resp.get("DomainName").should.equal(domain_name)
							 | 
						||
| 
								 | 
							
								    post_resp.get("Tags").should.equal(tags)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_create_domain_name_already_exists():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    client.create_domain_name(DomainName="exists.io")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with pytest.raises(botocore.exceptions.ClientError) as exc:
							 | 
						||
| 
								 | 
							
								        client.create_domain_name(DomainName="exists.io")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("ConflictException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal("The domain name resource already exists.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_get_domain_names():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    dev_domain = client.create_domain_name(DomainName="dev.service.io")
							 | 
						||
| 
								 | 
							
								    prod_domain = client.create_domain_name(DomainName="prod.service.io")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # sanity check responses
							 | 
						||
| 
								 | 
							
								    dev_domain.should.have.key("DomainName").equals("dev.service.io")
							 | 
						||
| 
								 | 
							
								    prod_domain.should.have.key("DomainName").equals("prod.service.io")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # make comparable
							 | 
						||
| 
								 | 
							
								    del dev_domain["ResponseMetadata"]
							 | 
						||
| 
								 | 
							
								    del prod_domain["ResponseMetadata"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    get_resp = client.get_domain_names()
							 | 
						||
| 
								 | 
							
								    get_resp.should.have.key("Items")
							 | 
						||
| 
								 | 
							
								    get_resp.get("Items").should.contain(dev_domain)
							 | 
						||
| 
								 | 
							
								    get_resp.get("Items").should.contain(prod_domain)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_delete_domain_name():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="ap-southeast-1")
							 | 
						||
| 
								 | 
							
								    post_resp = client.create_domain_name(DomainName="dev.service.io")
							 | 
						||
| 
								 | 
							
								    client.delete_domain_name(DomainName="dev.service.io")
							 | 
						||
| 
								 | 
							
								    get_resp = client.get_domain_names()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    del post_resp["ResponseMetadata"]
							 | 
						||
| 
								 | 
							
								    get_resp.should.have.key("Items")
							 | 
						||
| 
								 | 
							
								    get_resp.get("Items").should_not.contain(post_resp)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_apigatewayv2
							 | 
						||
| 
								 | 
							
								def test_delete_domain_name_dne():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("apigatewayv2", region_name="ap-southeast-1")
							 | 
						||
| 
								 | 
							
								    with pytest.raises(botocore.exceptions.ClientError) as exc:
							 | 
						||
| 
								 | 
							
								        client.delete_domain_name(DomainName="dne.io")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("NotFoundException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal(
							 | 
						||
| 
								 | 
							
								        "The domain name resource specified in the request was not found."
							 | 
						||
| 
								 | 
							
								    )
							 |