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." | ||
|  |     ) |