| 
									
										
										
										
											2022-02-08 20:12:51 -01:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | import pytest | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from botocore.exceptions import ClientError | 
					
						
							|  |  |  | from moto import mock_apigatewayv2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_apigatewayv2 | 
					
						
							|  |  |  | def test_get_integration_responses_empty(): | 
					
						
							|  |  |  |     client = boto3.client("apigatewayv2", region_name="eu-west-1") | 
					
						
							|  |  |  |     api_id = client.create_api(Name="test-api", ProtocolType="HTTP")["ApiId"] | 
					
						
							|  |  |  |     int_id = client.create_integration(ApiId=api_id, IntegrationType="HTTP")[ | 
					
						
							|  |  |  |         "IntegrationId" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     resp = client.get_integration_responses(ApiId=api_id, IntegrationId=int_id) | 
					
						
							|  |  |  |     resp.should.have.key("Items").equals([]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_apigatewayv2 | 
					
						
							|  |  |  | def test_create_integration_response(): | 
					
						
							|  |  |  |     client = boto3.client("apigatewayv2", region_name="eu-west-1") | 
					
						
							|  |  |  |     api_id = client.create_api(Name="test-api", ProtocolType="HTTP")["ApiId"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_id = client.create_integration(ApiId=api_id, IntegrationType="HTTP")[ | 
					
						
							|  |  |  |         "IntegrationId" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_res = client.create_integration_response( | 
					
						
							|  |  |  |         ApiId=api_id, | 
					
						
							|  |  |  |         ContentHandlingStrategy="CONVERT_TO_BINARY", | 
					
						
							|  |  |  |         IntegrationId=int_id, | 
					
						
							|  |  |  |         IntegrationResponseKey="int_res_key", | 
					
						
							|  |  |  |         ResponseParameters={"x-header": "header-value"}, | 
					
						
							|  |  |  |         ResponseTemplates={"t": "template"}, | 
					
						
							|  |  |  |         TemplateSelectionExpression="tse", | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_res.should.have.key("ContentHandlingStrategy").equals("CONVERT_TO_BINARY") | 
					
						
							|  |  |  |     int_res.should.have.key("IntegrationResponseId") | 
					
						
							|  |  |  |     int_res.should.have.key("IntegrationResponseKey").equals("int_res_key") | 
					
						
							| 
									
										
										
										
											2022-03-10 13:39:59 -01:00
										 |  |  |     int_res.should.have.key("ResponseParameters").equals({"x-header": "header-value"}) | 
					
						
							| 
									
										
										
										
											2022-02-08 20:12:51 -01:00
										 |  |  |     int_res.should.have.key("ResponseTemplates").equals({"t": "template"}) | 
					
						
							|  |  |  |     int_res.should.have.key("TemplateSelectionExpression").equals("tse") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_apigatewayv2 | 
					
						
							|  |  |  | def test_get_integration_response(): | 
					
						
							|  |  |  |     client = boto3.client("apigatewayv2", region_name="eu-west-1") | 
					
						
							|  |  |  |     api_id = client.create_api(Name="test-api", ProtocolType="HTTP")["ApiId"] | 
					
						
							|  |  |  |     int_id = client.create_integration(ApiId=api_id, IntegrationType="HTTP")[ | 
					
						
							|  |  |  |         "IntegrationId" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_res_id = client.create_integration_response( | 
					
						
							|  |  |  |         ApiId=api_id, | 
					
						
							|  |  |  |         ContentHandlingStrategy="CONVERT_TO_BINARY", | 
					
						
							|  |  |  |         IntegrationId=int_id, | 
					
						
							|  |  |  |         IntegrationResponseKey="int_res_key", | 
					
						
							|  |  |  |         ResponseParameters={"x-header": "header-value"}, | 
					
						
							|  |  |  |         ResponseTemplates={"t": "template"}, | 
					
						
							|  |  |  |         TemplateSelectionExpression="tse", | 
					
						
							|  |  |  |     )["IntegrationResponseId"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_res = client.get_integration_response( | 
					
						
							|  |  |  |         ApiId=api_id, IntegrationId=int_id, IntegrationResponseId=int_res_id | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_res.should.have.key("ContentHandlingStrategy").equals("CONVERT_TO_BINARY") | 
					
						
							|  |  |  |     int_res.should.have.key("IntegrationResponseId") | 
					
						
							|  |  |  |     int_res.should.have.key("IntegrationResponseKey").equals("int_res_key") | 
					
						
							| 
									
										
										
										
											2022-03-10 13:39:59 -01:00
										 |  |  |     int_res.should.have.key("ResponseParameters").equals({"x-header": "header-value"}) | 
					
						
							| 
									
										
										
										
											2022-02-08 20:12:51 -01:00
										 |  |  |     int_res.should.have.key("ResponseTemplates").equals({"t": "template"}) | 
					
						
							|  |  |  |     int_res.should.have.key("TemplateSelectionExpression").equals("tse") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_apigatewayv2 | 
					
						
							|  |  |  | def test_get_integration_response_unknown(): | 
					
						
							|  |  |  |     client = boto3.client("apigatewayv2", region_name="ap-southeast-1") | 
					
						
							|  |  |  |     api_id = client.create_api(Name="test-api", ProtocolType="HTTP")["ApiId"] | 
					
						
							|  |  |  |     int_id = client.create_integration(ApiId=api_id, IntegrationType="HTTP")[ | 
					
						
							|  |  |  |         "IntegrationId" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as exc: | 
					
						
							|  |  |  |         client.get_integration_response( | 
					
						
							|  |  |  |             ApiId=api_id, IntegrationId=int_id, IntegrationResponseId="unknown" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     err = exc.value.response["Error"] | 
					
						
							|  |  |  |     err["Code"].should.equal("NotFoundException") | 
					
						
							|  |  |  |     err["Message"].should.equal( | 
					
						
							|  |  |  |         "Invalid IntegrationResponse identifier specified unknown" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_apigatewayv2 | 
					
						
							|  |  |  | def test_delete_integration_response(): | 
					
						
							|  |  |  |     client = boto3.client("apigatewayv2", region_name="ap-southeast-1") | 
					
						
							|  |  |  |     api_id = client.create_api(Name="test-api", ProtocolType="HTTP")["ApiId"] | 
					
						
							|  |  |  |     int_id = client.create_integration(ApiId=api_id, IntegrationType="HTTP")[ | 
					
						
							|  |  |  |         "IntegrationId" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_res_id = client.create_integration_response( | 
					
						
							| 
									
										
										
										
											2022-03-10 13:39:59 -01:00
										 |  |  |         ApiId=api_id, IntegrationId=int_id, IntegrationResponseKey="int_res_key" | 
					
						
							| 
									
										
										
										
											2022-02-08 20:12:51 -01:00
										 |  |  |     )["IntegrationResponseId"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.delete_integration_response( | 
					
						
							|  |  |  |         ApiId=api_id, IntegrationId=int_id, IntegrationResponseId=int_res_id | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as exc: | 
					
						
							|  |  |  |         client.get_integration_response( | 
					
						
							|  |  |  |             ApiId=api_id, IntegrationId=int_id, IntegrationResponseId=int_res_id | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     err = exc.value.response["Error"] | 
					
						
							|  |  |  |     err["Code"].should.equal("NotFoundException") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_apigatewayv2 | 
					
						
							|  |  |  | def test_update_integration_response_single_attr(): | 
					
						
							|  |  |  |     client = boto3.client("apigatewayv2", region_name="ap-southeast-1") | 
					
						
							|  |  |  |     api_id = client.create_api(Name="test-api", ProtocolType="HTTP")["ApiId"] | 
					
						
							|  |  |  |     int_id = client.create_integration(ApiId=api_id, IntegrationType="HTTP")[ | 
					
						
							|  |  |  |         "IntegrationId" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_res_id = client.create_integration_response( | 
					
						
							| 
									
										
										
										
											2022-03-10 13:39:59 -01:00
										 |  |  |         ApiId=api_id, IntegrationId=int_id, IntegrationResponseKey="int_res_key" | 
					
						
							| 
									
										
										
										
											2022-02-08 20:12:51 -01:00
										 |  |  |     )["IntegrationResponseId"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     res = client.update_integration_response( | 
					
						
							|  |  |  |         ApiId=api_id, | 
					
						
							|  |  |  |         IntegrationId=int_id, | 
					
						
							|  |  |  |         IntegrationResponseId=int_res_id, | 
					
						
							|  |  |  |         ContentHandlingStrategy="CONVERT_TO_BINARY", | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     res.should.have.key("ContentHandlingStrategy").equals("CONVERT_TO_BINARY") | 
					
						
							|  |  |  |     res.should.have.key("IntegrationResponseId") | 
					
						
							|  |  |  |     res.should.have.key("IntegrationResponseKey").equals("int_res_key") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_apigatewayv2 | 
					
						
							|  |  |  | def test_update_integration_response_multiple_attrs(): | 
					
						
							|  |  |  |     client = boto3.client("apigatewayv2", region_name="ap-southeast-1") | 
					
						
							|  |  |  |     api_id = client.create_api(Name="test-api", ProtocolType="HTTP")["ApiId"] | 
					
						
							|  |  |  |     int_id = client.create_integration(ApiId=api_id, IntegrationType="HTTP")[ | 
					
						
							|  |  |  |         "IntegrationId" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int_res_id = client.create_integration_response( | 
					
						
							|  |  |  |         ApiId=api_id, | 
					
						
							|  |  |  |         IntegrationId=int_id, | 
					
						
							|  |  |  |         IntegrationResponseKey="int_res_key", | 
					
						
							|  |  |  |         ContentHandlingStrategy="CONVERT_TO_BINARY", | 
					
						
							|  |  |  |     )["IntegrationResponseId"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     res = client.update_integration_response( | 
					
						
							|  |  |  |         ApiId=api_id, | 
					
						
							|  |  |  |         IntegrationId=int_id, | 
					
						
							|  |  |  |         IntegrationResponseId=int_res_id, | 
					
						
							|  |  |  |         IntegrationResponseKey="int_res_key2", | 
					
						
							|  |  |  |         ResponseParameters={"x-header": "header-value"}, | 
					
						
							|  |  |  |         ResponseTemplates={"t": "template"}, | 
					
						
							|  |  |  |         TemplateSelectionExpression="tse", | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     res.should.have.key("ContentHandlingStrategy").equals("CONVERT_TO_BINARY") | 
					
						
							|  |  |  |     res.should.have.key("IntegrationResponseId") | 
					
						
							|  |  |  |     res.should.have.key("IntegrationResponseKey").equals("int_res_key2") | 
					
						
							| 
									
										
										
										
											2022-03-10 13:39:59 -01:00
										 |  |  |     res.should.have.key("ResponseParameters").equals({"x-header": "header-value"}) | 
					
						
							| 
									
										
										
										
											2022-02-08 20:12:51 -01:00
										 |  |  |     res.should.have.key("ResponseTemplates").equals({"t": "template"}) | 
					
						
							|  |  |  |     res.should.have.key("TemplateSelectionExpression").equals("tse") |