2020-05-03 08:31:46 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  json  
						 
					
						
							
								
									
										
										
										
											2016-09-13 12:44:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  boto3  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  freezegun  import  freeze_time  
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  sure   # noqa # pylint: disable=unused-import  
						 
					
						
							
								
									
										
										
										
											2016-09-13 12:44:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  botocore . exceptions  import  ClientError  
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-18 22:31:33 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  moto  import  mock_apigateway ,  mock_cognitoidp  
						 
					
						
							
								
									
										
										
										
											2022-08-13 09:49:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  moto . core  import  DEFAULT_ACCOUNT_ID  as  ACCOUNT_ID  
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  pytest  
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-21 21:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  tests  import  DEFAULT_ACCOUNT_ID  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@freeze_time ( " 2015-01-01 " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_and_get_rest_api ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-21 21:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = " my_api " ,  description = " this is my api " ,  disableExecuteApiEndpoint = True 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . get_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . pop ( " ResponseMetadata " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . pop ( " createdDate " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " id " :  api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " name " :  " my_api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " description " :  " this is my api " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-23 09:09:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " version " :  " V1 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " binaryMediaTypes " :  [ ] , 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " apiKeySource " :  " HEADER " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " endpointConfiguration " :  { " types " :  [ " EDGE " ] } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " tags " :  { } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-21 21:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " disableExecuteApiEndpoint " :  True , 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-23 09:09:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
									
										
										
										
											2021-09-18 13:17:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  test_update_rest_api ( ) :  
						 
					
						
							
								
									
										
										
										
											2021-05-23 09:09:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patchOperations  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /name " ,  " value " :  " new-name " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /description " ,  " value " :  " new-description " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /apiKeySource " ,  " value " :  " AUTHORIZER " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /binaryMediaTypes " ,  " value " :  " image/jpeg " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /disableExecuteApiEndpoint " ,  " value " :  " True " } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-22 17:42:13 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " op " :  " replace " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " path " :  " /policy " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " value " :  ' { " Version " :  " 2012-10-17 " ,  " Statement " : [ { " Effect " :  " Allow " ,  " Principal " :  " * " ,  " Action " :  ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' " execute-api:Invoke " ,  " Resource " : [ " execute-api:/* " ]}]} ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-23 09:09:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . update_rest_api ( restApiId = api_id ,  patchOperations = patchOperations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . pop ( " ResponseMetadata " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . pop ( " createdDate " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . pop ( " binaryMediaTypes " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " id " :  api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " name " :  " new-name " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " version " :  " V1 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " description " :  " new-description " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " apiKeySource " :  " AUTHORIZER " , 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-22 17:42:13 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " policy " :  ' { " Version " :  " 2012-10-17 " ,  " Statement " : [ { " Effect " :  " Allow " ,  " Principal " :  " * " ,  " Action " :  ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' " execute-api:Invoke " ,  " Resource " : [ " execute-api:/* " ]}]} ' , 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-23 09:09:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " endpointConfiguration " :  { " types " :  [ " EDGE " ] } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " tags " :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " disableExecuteApiEndpoint " :  True , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # should fail with wrong apikeysoruce 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patchOperations  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /apiKeySource " ,  " value " :  " Wrong-value-AUTHORIZER " } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        response  =  client . update_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id ,  patchOperations = patchOperations 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " 1 validation error detected: Value  ' Wrong-value-AUTHORIZER '  at  ' createRestApiInput.apiKeySource '  failed to satisfy constraint: Member must satisfy enum value set: [AUTHORIZER, HEADER] " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " ValidationException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
									
										
										
										
											2021-09-18 13:17:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  test_update_rest_api_invalid_api_id ( ) :  
						 
					
						
							
								
									
										
										
										
											2021-05-23 09:09:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patchOperations  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /apiKeySource " ,  " value " :  " AUTHORIZER " } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . update_rest_api ( restApiId = " api_id " ,  patchOperations = patchOperations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-18 13:17:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_rest_api_operation_add_remove ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patchOperations  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " add " ,  " path " :  " /binaryMediaTypes " ,  " value " :  " image/png " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " add " ,  " path " :  " /binaryMediaTypes " ,  " value " :  " image/jpeg " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . update_rest_api ( restApiId = api_id ,  patchOperations = patchOperations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " binaryMediaTypes " ] . should . equal ( [ " image/png " ,  " image/jpeg " ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " description " ] . should . equal ( " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patchOperations  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " remove " ,  " path " :  " /binaryMediaTypes " ,  " value " :  " image/png " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " remove " ,  " path " :  " /description " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . update_rest_api ( restApiId = api_id ,  patchOperations = patchOperations ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " binaryMediaTypes " ] . should . equal ( [ " image/jpeg " ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " description " ] . should . equal ( " " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_list_and_delete_apis ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_rest_api ( name = " my_api2 " ,  description = " this is my api2 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_apis ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client . delete_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 12:03:59 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_apis ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_rest_api_with_tags ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = " my_api " ,  description = " this is my api " ,  tags = { " MY_TAG1 " :  " MY_VALUE1 " } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  " tags "  in  response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " tags " ] . should . equal ( { " MY_TAG1 " :  " MY_VALUE1 " } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-25 03:27:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_rest_api_with_policy ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-25 11:24:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    policy  =  ' { " Version " :  " 2012-10-17 " , " Statement " : []} ' 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-25 03:27:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-25 11:24:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        name = " my_api " ,  description = " this is my api " ,  policy = policy 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-25 03:27:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  " policy "  in  response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " policy " ] . should . equal ( policy ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_rest_api_invalid_apikeysource ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . create_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            name = " my_api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            description = " this is my api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            apiKeySource = " not a valid api key source " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " ValidationException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_rest_api_valid_apikeysources ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # 1. test creating rest api with HEADER apiKeySource 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 13:39:59 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        name = " my_api " ,  description = " this is my api " ,  apiKeySource = " HEADER " 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " apiKeySource " ] . should . equal ( " HEADER " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # 2. test creating rest api with AUTHORIZER apiKeySource 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 13:39:59 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        name = " my_api2 " ,  description = " this is my api " ,  apiKeySource = " AUTHORIZER " 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " apiKeySource " ] . should . equal ( " AUTHORIZER " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_rest_api_invalid_endpointconfiguration ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . create_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            name = " my_api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            description = " this is my api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            endpointConfiguration = { " types " :  [ " INVALID " ] } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " ValidationException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_rest_api_valid_endpointconfigurations ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # 1. test creating rest api with PRIVATE endpointConfiguration 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = " my_api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description = " this is my api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endpointConfiguration = { " types " :  [ " PRIVATE " ] } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 13:39:59 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " endpointConfiguration " ] . should . equal ( { " types " :  [ " PRIVATE " ] } ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # 2. test creating rest api with REGIONAL endpointConfiguration 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = " my_api2 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description = " this is my api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endpointConfiguration = { " types " :  [ " REGIONAL " ] } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 13:39:59 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " endpointConfiguration " ] . should . equal ( { " types " :  [ " REGIONAL " ] } ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # 3. test creating rest api with EDGE endpointConfiguration 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = " my_api3 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description = " this is my api " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endpointConfiguration = { " types " :  [ " EDGE " ] } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_rest_api ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 13:39:59 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " endpointConfiguration " ] . should . equal ( { " types " :  [ " EDGE " ] } ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-03 10:21:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_resource__validate_name ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-01-29 16:28:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    invalid_names  =  [ " /users " ,  " users/ " ,  " users/ {user_id} " ,  " us { er " ,  " us+er " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    valid_names  =  [ " users " ,  " {user_id} " ,  " { proxy+} " ,  " user_09 " ,  " good-dog " ] 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # All invalid names should throw an exception 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  name  in  invalid_names : 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            client . create_resource ( restApiId = api_id ,  parentId = root_id ,  pathPart = name ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-29 16:28:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " Resource ' s path part only allow a-zA-Z0-9._- and curly braces at the beginning and the end and an optional plus sign before the closing brace. " 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # All valid names  should go through 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  name  in  valid_names : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . create_resource ( restApiId = api_id ,  parentId = root_id ,  pathPart = name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_resource ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    root_resource  =  client . get_resource ( restApiId = api_id ,  resourceId = root_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    root_resource [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_resource [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_resource . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 13:39:59 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { " path " :  " / " ,  " id " :  root_id ,  " ResponseMetadata " :  { " HTTPStatusCode " :  200 } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client . create_resource ( restApiId = api_id ,  parentId = root_id ,  pathPart = " users " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) [ " items " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( resources ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    non_root_resource  =  [ resource  for  resource  in  resources  if  resource [ " path " ]  !=  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client . delete_resource ( restApiId = api_id ,  resourceId = non_root_resource [ " id " ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( client . get_resources ( restApiId = api_id ) [ " items " ] ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 10:54:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_child_resource ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 10:54:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 10:54:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_resource ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  parentId = root_id ,  pathPart = " users " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 10:54:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    users_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 10:54:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_resource ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  parentId = users_id ,  pathPart = " tags " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 10:54:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    tags_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 10:54:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    child_resource  =  client . get_resource ( restApiId = api_id ,  resourceId = tags_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    child_resource [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    child_resource [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    child_resource . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " path " :  " /users/tags " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " pathPart " :  " tags " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " parentId " :  users_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " id " :  tags_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 10:54:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_method ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 14:10:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        authorizationType = " none " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestParameters = { " method.request.header.InvocationType " :  True } , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . get_method ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " httpMethod " :  " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " authorizationType " :  " none " , 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 12:26:27 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " apiKeyRequired " :  False , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-16 15:13:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " methodResponses " :  { } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 14:10:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " requestParameters " :  { " method.request.header.InvocationType " :  True } , 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 12:26:27 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_method_apikeyrequired ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        authorizationType = " none " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        apiKeyRequired = True , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_method ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " httpMethod " :  " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " authorizationType " :  " none " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " apiKeyRequired " :  True , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-16 15:13:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " methodResponses " :  { } , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_method_response ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  authorizationType = " none " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . get_method ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . put_method_response ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-23 23:46:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { " ResponseMetadata " :  { " HTTPStatusCode " :  201 } ,  " statusCode " :  " 200 " } 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_method_response ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " ResponseMetadata " :  { " HTTPStatusCode " :  200 } ,  " statusCode " :  " 200 " } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . delete_method_response ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-01 18:50:06 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-23 23:46:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . should . equal ( { " ResponseMetadata " :  { " HTTPStatusCode " :  204 } } ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 15:18:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-16 15:13:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_method_unknown_resource_id ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_method ( restApiId = api_id ,  resourceId = " sth " ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err  =  ex . value . response [ " Error " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err [ " Message " ] . should . equal ( " Invalid resource identifier specified " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-21 15:20:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_delete_method ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  authorizationType = " none " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . get_method ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . delete_method ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_method ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err  =  ex . value . response [ " Error " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err [ " Message " ] . should . equal ( " Invalid Method identifier specified " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 15:18:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_integrations ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 15:18:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 15:18:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  authorizationType = " none " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 15:18:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method_response ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 15:18:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        httpMethod = " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " HTTP " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-19 11:16:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        passthroughBehavior = " WHEN_NO_TEMPLATES " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        uri = " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-14 11:07:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        requestParameters = { " integration.request.header.X-Custom " :  " ' Custom ' " } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-21 21:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        contentHandling = " CONVERT_TO_TEXT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        credentials = f " arn:aws:iam:: { DEFAULT_ACCOUNT_ID } :role/apigateway-invoke-lambda-exec-role " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tlsConfig = { " insecureSkipVerification " :  True } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-23 10:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        connectionType = " INTERNET " , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-02 15:18:11 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-21 21:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-23 23:46:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  201 } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-26 16:21:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " httpMethod " :  " POST " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " type " :  " HTTP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " uri " :  " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-19 11:16:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " passthroughBehavior " :  " WHEN_NO_TEMPLATES " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " cacheKeyParameters " :  [ ] , 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-14 11:07:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " requestParameters " :  { " integration.request.header.X-Custom " :  " ' Custom ' " } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-21 21:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " contentHandling " :  " CONVERT_TO_TEXT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " credentials " :  f " arn:aws:iam:: { DEFAULT_ACCOUNT_ID } :role/apigateway-invoke-lambda-exec-role " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " tlsConfig " :  { " insecureSkipVerification " :  True } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-23 10:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " connectionType " :  " INTERNET " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-04 18:02:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_integration ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-04 18:02:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-26 16:21:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " httpMethod " :  " POST " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " type " :  " HTTP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " uri " :  " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-19 11:16:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " passthroughBehavior " :  " WHEN_NO_TEMPLATES " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " cacheKeyParameters " :  [ ] , 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-14 11:07:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " requestParameters " :  { " integration.request.header.X-Custom " :  " ' Custom ' " } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-21 21:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " contentHandling " :  " CONVERT_TO_TEXT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " credentials " :  f " arn:aws:iam:: { DEFAULT_ACCOUNT_ID } :role/apigateway-invoke-lambda-exec-role " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " tlsConfig " :  { " insecureSkipVerification " :  True } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-23 10:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " connectionType " :  " INTERNET " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-04 18:02:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . get_resource ( restApiId = api_id ,  resourceId = root_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-26 16:21:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " resourceMethods " ] [ " GET " ] [ " httpMethod " ] . should . equal ( " GET " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " resourceMethods " ] [ " GET " ] [ " authorizationType " ] . should . equal ( " none " ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " resourceMethods " ] [ " GET " ] [ " methodIntegration " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-19 11:16:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " httpMethod " :  " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " type " :  " HTTP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " uri " :  " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " cacheKeyParameters " :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " passthroughBehavior " :  " WHEN_NO_TEMPLATES " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-14 11:07:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " requestParameters " :  { " integration.request.header.X-Custom " :  " ' Custom ' " } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-21 21:46:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " contentHandling " :  " CONVERT_TO_TEXT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " credentials " :  f " arn:aws:iam:: { DEFAULT_ACCOUNT_ID } :role/apigateway-invoke-lambda-exec-role " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " tlsConfig " :  { " insecureSkipVerification " :  True } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-23 10:48:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " connectionType " :  " INTERNET " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-19 11:16:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-04 18:02:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client . delete_integration ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_resource ( restApiId = api_id ,  resourceId = root_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " resourceMethods " ] [ " GET " ] . shouldnt . contain ( " methodIntegration " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-04 18:35:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-10 13:55:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Create a new integration with a requestTemplates config 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        httpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        authorizationType = " none " , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-10 13:55:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    templates  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # example based on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # http://docs.aws.amazon.com/apigateway/latest/developerguide/api-as-kinesis-proxy-export-swagger-with-extensions.html 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " application/json " :  ' { \n      " StreamName " :  " $input.params( \' stream-name \' ) " , \n      " Records " : [] \n } ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-10 13:55:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    test_uri  =  " http://example.com/foobar.txt " 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-10 13:55:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        httpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " HTTP " , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-10 13:55:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        uri = test_uri , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        requestTemplates = templates , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-19 11:16:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        passthroughBehavior = " WHEN_NO_MATCH " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-18 22:31:33 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        timeoutInMillis = 29000 , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-10 13:55:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_integration ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " POST " 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-10 13:55:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " uri " ] . should . equal ( test_uri ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " requestTemplates " ] . should . equal ( templates ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-19 11:16:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " passthroughBehavior " ] . should . equal ( " WHEN_NO_MATCH " ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-18 22:31:33 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . should . have . key ( " timeoutInMillis " ) . equals ( 29000 ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-10 13:55:59 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-04 18:35:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_integration_response ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  authorizationType = " none " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method_response ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client . put_integration ( 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        httpMethod = " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " HTTP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        uri = " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . put_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        httpMethod = " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        statusCode = " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        selectionPattern = " foobar " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-16 23:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        responseParameters = { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " method.response.header.Location " :  " integration.response.body.redirect.url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " method.response.header.x-user-id " :  " integration.response.header.x-userid " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        responseTemplates = { } , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-10 12:28:40 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " statusCode " :  " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " selectionPattern " :  " foobar " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-23 23:46:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  201 } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-26 16:21:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " responseTemplates " :  { } ,   # Note: TF compatibility 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-16 23:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " responseParameters " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " method.response.header.Location " :  " integration.response.body.redirect.url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " method.response.header.x-user-id " :  " integration.response.header.x-userid " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_integration_response ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " statusCode " :  " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " selectionPattern " :  " foobar " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-26 16:21:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " responseTemplates " :  { } ,   # Note: TF compatibility 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-16 23:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " responseParameters " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " method.response.header.Location " :  " integration.response.body.redirect.url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " method.response.header.x-user-id " :  " integration.response.header.x-userid " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_method ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-23 21:37:43 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " methodIntegration " ] [ " integrationResponses " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " 200 " :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-26 16:21:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                " responseTemplates " :  { } ,   # Note: TF compatibility 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                " selectionPattern " :  " foobar " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " statusCode " :  " 200 " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-16 23:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                " responseParameters " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " method.response.header.Location " :  " integration.response.body.redirect.url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    " method.response.header.x-user-id " :  " integration.response.header.x-userid " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . delete_integration_response ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . get_method ( restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " methodIntegration " ] [ " integrationResponses " ] . should . equal ( { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-06-10 12:28:40 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # adding a new method and perfomring put intergration with contentHandling as CONVERT_TO_BINARY 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " PUT " ,  authorizationType = " none " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " PUT " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = " PUT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " HTTP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        uri = " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . put_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = " PUT " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        statusCode = " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        selectionPattern = " foobar " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        responseTemplates = { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        contentHandling = " CONVERT_TO_BINARY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " statusCode " :  " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " selectionPattern " :  " foobar " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-23 23:46:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  201 } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-26 16:21:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " responseTemplates " :  { } ,   # Note: TF compatibility 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-10 12:28:40 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " contentHandling " :  " CONVERT_TO_BINARY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " PUT " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " statusCode " :  " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " selectionPattern " :  " foobar " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-26 16:21:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " responseTemplates " :  { } ,   # Note: TF compatibility 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-10 12:28:40 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " contentHandling " :  " CONVERT_TO_BINARY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 09:48:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 10:49:35 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_cognitoidp  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_authorizer_configuration ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_name  =  " my_authorizer " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cognito_client  =  boto3 . client ( " cognito-idp " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    user_pool_arn  =  cognito_client . create_user_pool ( PoolName = " my_cognito_pool " ) [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " UserPool " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " Arn " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = authorizer_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        providerARNs = [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        identitySource = " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_authorizer ( restApiId = api_id ,  authorizerId = authorizer_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # createdDate is hard to match against, remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . pop ( " createdDate " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " id " :  authorizer_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " name " :  authorizer_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " type " :  " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " providerARNs " :  [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " identitySource " :  " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " authorizerResultTtlInSeconds " :  300 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . update_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        authorizerId = authorizer_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        patchOperations = [ { " op " :  " replace " ,  " path " :  " /type " ,  " value " :  " TOKEN " } ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer  =  client . get_authorizer ( restApiId = api_id ,  authorizerId = authorizer_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer . should . have . key ( " type " ) . which . should . equal ( " TOKEN " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . update_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        authorizerId = authorizer_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        patchOperations = [ { " op " :  " replace " ,  " path " :  " /type " ,  " value " :  " REQUEST " } ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer  =  client . get_authorizer ( restApiId = api_id ,  authorizerId = authorizer_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer . should . have . key ( " type " ) . which . should . equal ( " REQUEST " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # TODO: implement mult-update tests 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . update_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            authorizerId = authorizer_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            patchOperations = [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                { " op " :  " add " ,  " path " :  " /notasetting " ,  " value " :  " eu-west-1 " } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  False . should . be . ok   # Fail, should not be here 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    except  Exception : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  True . should . be . ok 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_non_existent_authorizer ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-11 13:16:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  exc : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_authorizer ( restApiId = api_id ,  authorizerId = " xxx " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err  =  exc . value . response [ " Error " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err [ " Message " ] . should . equal ( " Invalid Authorizer identifier specified " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  exc : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . update_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            authorizerId = " xxx " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            patchOperations = [ { " op " :  " add " ,  " path " :  " /type " ,  " value " :  " sth " } ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err  =  exc . value . response [ " Error " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err [ " Message " ] . should . equal ( " Invalid Authorizer identifier specified " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 10:49:35 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_cognitoidp  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_authorizer ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_name  =  " my_authorizer " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cognito_client  =  boto3 . client ( " cognito-idp " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    user_pool_arn  =  cognito_client . create_user_pool ( PoolName = " my_cognito_pool " ) [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " UserPool " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " Arn " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = authorizer_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        providerARNs = [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        identitySource = " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_authorizer ( restApiId = api_id ,  authorizerId = authorizer_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # createdDate is hard to match against, remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . pop ( " createdDate " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " id " :  authorizer_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " name " :  authorizer_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " type " :  " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " providerARNs " :  [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " identitySource " :  " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " authorizerResultTtlInSeconds " :  300 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_name2  =  " my_authorizer2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = authorizer_name2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        providerARNs = [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        identitySource = " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_id2  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_authorizers ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-17 21:41:08 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " items " ] [ 0 ] [ " id " ] . should . match ( rf " { authorizer_id2 } | { authorizer_id } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " items " ] [ 1 ] [ " id " ] . should . match ( rf " { authorizer_id2 } | { authorizer_id } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 10:49:35 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    new_authorizer_name_with_vars  =  " authorizer_with_vars " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = new_authorizer_name_with_vars , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        providerARNs = [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        identitySource = " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_id3  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " name " :  new_authorizer_name_with_vars , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " id " :  authorizer_id3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " type " :  " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " providerARNs " :  [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " identitySource " :  " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " authorizerResultTtlInSeconds " :  300 , 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-23 23:46:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  201 } , 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 10:49:35 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage  =  client . get_authorizer ( restApiId = api_id ,  authorizerId = authorizer_id3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage [ " name " ] . should . equal ( new_authorizer_name_with_vars ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage [ " id " ] . should . equal ( authorizer_id3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage [ " type " ] . should . equal ( " COGNITO_USER_POOLS " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage [ " providerARNs " ] . should . equal ( [ user_pool_arn ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage [ " identitySource " ] . should . equal ( " method.request.header.Authorization " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage [ " authorizerResultTtlInSeconds " ] . should . equal ( 300 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_cognitoidp  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_delete_authorizer ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_name  =  " my_authorizer " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cognito_client  =  boto3 . client ( " cognito-idp " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    user_pool_arn  =  cognito_client . create_user_pool ( PoolName = " my_cognito_pool " ) [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " UserPool " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " Arn " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = authorizer_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        providerARNs = [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        identitySource = " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_authorizer ( restApiId = api_id ,  authorizerId = authorizer_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # createdDate is hard to match against, remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . pop ( " createdDate " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " id " :  authorizer_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " name " :  authorizer_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " type " :  " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " providerARNs " :  [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " identitySource " :  " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " authorizerResultTtlInSeconds " :  300 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_name2  =  " my_authorizer2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_authorizer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = authorizer_name2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " COGNITO_USER_POOLS " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        providerARNs = [ user_pool_arn ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        identitySource = " method.request.header.Authorization " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizer_id2  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizers  =  client . get_authorizers ( restApiId = api_id ) [ " items " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sorted ( [ authorizer [ " name " ]  for  authorizer  in  authorizers ] ) . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sorted ( [ authorizer_name2 ,  authorizer_name ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # delete stage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . delete_authorizer ( restApiId = api_id ,  authorizerId = authorizer_id2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 202 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # verify other stage still exists 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    authorizers  =  client . get_authorizers ( restApiId = api_id ) [ " items " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sorted ( [ authorizer [ " name " ]  for  authorizer  in  authorizers ] ) . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sorted ( [ authorizer_name ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-03 08:31:46 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_put_integration_response_with_response_template ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  authorizationType = " NONE " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " HTTP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        uri = " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        statusCode = " 200 " , 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 09:27:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        selectionPattern = " foobar " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-16 23:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        responseParameters = { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " method.response.header.Location " :  " integration.response.body.redirect.url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " method.response.header.x-user-id " :  " integration.response.header.x-userid " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 09:27:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        responseTemplates = { " application/json " :  json . dumps ( { " data " :  " test " } ) } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-03 08:31:46 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # this is hard to match against, so remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " HTTPHeaders " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] . pop ( " RetryAttempts " ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " statusCode " :  " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " selectionPattern " :  " foobar " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " ResponseMetadata " :  { " HTTPStatusCode " :  200 } , 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 09:27:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " responseTemplates " :  { " application/json " :  json . dumps ( { " data " :  " test " } ) } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-16 23:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " responseParameters " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " method.response.header.Location " :  " integration.response.body.redirect.url " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " method.response.header.x-user-id " :  " integration.response.header.x-userid " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-03 08:31:46 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-04 09:27:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-24 16:38:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_put_integration_response_but_integration_not_found ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  authorizationType = " NONE " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . put_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            httpMethod = " GET " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            statusCode = " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            selectionPattern = " foobar " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            responseTemplates = { " application/json " :  json . dumps ( { " data " :  " test " } ) } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_put_integration_validation ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  authorizationType = " NONE " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    http_types  =  [ " HTTP " ,  " HTTP_PROXY " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    aws_types  =  [ " AWS " ,  " AWS_PROXY " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    types_requiring_integration_method  =  http_types  +  aws_types 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    types_not_requiring_integration_method  =  [ " MOCK " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  types_requiring_integration_method : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that integrations of these types fail if no integrationHttpMethod is provided 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                uri = " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " Enumeration value for HttpMethod must be non-empty " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  types_not_requiring_integration_method : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that integrations of these types do not need the integrationHttpMethod 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            uri = " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  http_types : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that it works fine when providing the integrationHttpMethod-argument 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            uri = " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  [ " AWS " ] : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that it works fine when providing the integrationHttpMethod + credentials 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resourceId = root_id , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-17 21:41:08 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            credentials = f " arn:aws:iam:: { ACCOUNT_ID } :role/service-role/testfunction-role-oe783psq " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            uri = " arn:aws:apigateway:us-west-2:s3:path/b/k " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  aws_types : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that credentials are not required when URI points to a Lambda stream 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            uri = " arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:012345678901:function:MyLambda/invocations " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  [ " AWS_PROXY " ] : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that aws_proxy does not support S3 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resourceId = root_id , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-17 21:41:08 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                credentials = f " arn:aws:iam:: { ACCOUNT_ID } :role/service-role/testfunction-role-oe783psq " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                uri = " arn:aws:apigateway:us-west-2:s3:path/b/k " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " Integrations of type  ' AWS_PROXY '  currently only supports Lambda function and Firehose stream invocations. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  aws_types : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that the Role ARN is for the current account 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                credentials = " arn:aws:iam::000000000000:role/service-role/testrole " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                uri = " arn:aws:apigateway:us-west-2:s3:path/b/k " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " AccessDeniedException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " Cross-account pass role is not allowed. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  [ " AWS " ] : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that the Role ARN is specified for aws integrations 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                uri = " arn:aws:apigateway:us-west-2:s3:path/b/k " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " Role ARN must be specified for AWS integrations " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  http_types : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that the URI is valid HTTP 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                uri = " non-valid-http " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " Invalid HTTP endpoint specified for URI " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  aws_types : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that the URI is an ARN 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                uri = " non-valid-arn " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " Invalid ARN specified in the request " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  _type  in  aws_types : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Ensure that the URI is a valid ARN 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                httpMethod = " GET " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                type = _type , 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                uri = " arn:aws:iam::0000000000:role/service-role/asdf " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " AWS ARN for integration must contain path or action " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 03:18:42 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_domain_names ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_private_key  =  " testPrivateKey " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 21:54:26 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # success case with valid params 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 11:06:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificateName = test_certificate_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificatePrivateKey = test_certificate_private_key , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 03:18:42 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " domainName " ] . should . equal ( domain_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " certificateName " ] . should . equal ( test_certificate_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 21:54:26 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # without domain name it should throw BadRequestException 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 21:54:26 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . create_domain_name ( domainName = " " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( " No Domain Name specified " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 21:54:26 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_domain_names ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # without any domain names already present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result  =  client . get_domain_names ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ " items " ] . should . equal ( [ ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-09 08:12:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 21:54:26 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " domainName " ] . should . equal ( domain_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " certificateName " ] . should . equal ( test_certificate_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " domainNameStatus " ] . should . equal ( " AVAILABLE " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # after adding a new domain name 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 03:18:42 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result  =  client . get_domain_names ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ " items " ] [ 0 ] [ " domainName " ] . should . equal ( domain_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 21:54:26 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result [ " items " ] [ 0 ] [ " certificateName " ] . should . equal ( test_certificate_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ " items " ] [ 0 ] [ " domainNameStatus " ] . should . equal ( " AVAILABLE " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_domain_name ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # adding a domain name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( domainName = domain_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # retrieving the data of added domain name. 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 03:18:42 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result  =  client . get_domain_name ( domainName = domain_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ " domainName " ] . should . equal ( domain_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 21:54:26 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result [ " domainNameStatus " ] . should . equal ( " AVAILABLE " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-08 03:18:42 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_model ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rest_api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dummy_rest_api_id  =  " a12b3c4d " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    model_name  =  " testModel " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    description  =  " test model " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    content_type  =  " application/json " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # success case with valid params 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_model ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = rest_api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = model_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description = description , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        contentType = content_type , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " name " ] . should . equal ( model_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " description " ] . should . equal ( description ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # with an invalid rest_api_id it should throw NotFoundException 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . create_model ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            restApiId = dummy_rest_api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            name = model_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            description = description , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            contentType = content_type , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:46:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( " Invalid Rest API Id specified " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . create_model ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            restApiId = rest_api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            name = " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            description = description , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            contentType = content_type , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( " No Model Name specified " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_api_models ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rest_api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    model_name  =  " testModel " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    description  =  " test model " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    content_type  =  " application/json " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # when no models are present 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result  =  client . get_models ( restApiId = rest_api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result [ " items " ] . should . equal ( [ ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # add a model 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_model ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = rest_api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = model_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description = description , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        contentType = content_type , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # get models after adding 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result  =  client . get_models ( restApiId = rest_api_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result [ " items " ] [ 0 ] [ " name " ]  =  model_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ " items " ] [ 0 ] [ " description " ]  =  description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_model_by_name ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rest_api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dummy_rest_api_id  =  " a12b3c4d " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    model_name  =  " testModel " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    description  =  " test model " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    content_type  =  " application/json " 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # add a model 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_model ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = rest_api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = model_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description = description , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        contentType = content_type , 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # get models after adding 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result  =  client . get_model ( restApiId = rest_api_id ,  modelName = model_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    result [ " name " ]  =  model_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ " description " ]  =  description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . get_model ( restApiId = dummy_rest_api_id ,  modelName = model_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:46:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( " Invalid Rest API Id specified " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_model_with_invalid_name ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rest_api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # test with an invalid model name 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-14 08:06:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . get_model ( restApiId = rest_api_id ,  modelName = " fake " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:46:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( " Invalid Model Name specified " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-12 17:49:22 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-02-15 09:39:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_api_key_value_min_length ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    region_name  =  " us-east-1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey_value  =  " 12345 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey_name  =  " TESTKEY1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { " value " :  apikey_value ,  " name " :  apikey_name } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  e : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . create_api_key ( * * payload ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex  =  e . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . operation_name . should . equal ( " CreateApiKey " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 400 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . response [ " Error " ] [ " Code " ] . should . contain ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " API Key value should be at least 20 characters " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_api_key_include_value ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey_value  =  " 01234567890123456789 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey_name  =  " TESTKEY1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { " value " :  apikey_value ,  " name " :  apikey_name } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_api_key ( * * payload ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_key_id_one  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_key ( apiKey = api_key_id_one ,  includeValue = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . have . key ( " value " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_key ( apiKey = api_key_id_one ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should_not . have . key ( " value " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_key ( apiKey = api_key_id_one ,  includeValue = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . have . key ( " value " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_key ( apiKey = api_key_id_one ,  includeValue = False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should_not . have . key ( " value " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_key ( apiKey = api_key_id_one ,  includeValue = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should . have . key ( " value " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_api_keys_include_values ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey_value  =  " 01234567890123456789 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey_name  =  " TESTKEY1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { " value " :  apikey_value ,  " name " :  apikey_name } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey_value2  =  " 01234567890123456789123 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey_name2  =  " TESTKEY1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload2  =  { " value " :  apikey_value2 ,  " name " :  apikey_name2 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_api_key ( * * payload ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_api_key ( * * payload2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_keys ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  api_key  in  response [ " items " ] : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        api_key . should_not . have . key ( " value " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_keys ( includeValues = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  api_key  in  response [ " items " ] : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        api_key . should . have . key ( " value " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_keys ( includeValues = False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  api_key  in  response [ " items " ] : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        api_key . should_not . have . key ( " value " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 15:49:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_api_key ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-02-15 09:39:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey_value  =  " 01234567890123456789 " 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 15:49:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey_name  =  " TESTKEY1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { " value " :  apikey_value ,  " name " :  apikey_name } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-15 15:00:44 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_api_key ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-15 20:21:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 201 ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-15 15:00:44 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " name " ] . should . equal ( apikey_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " value " ] . should . equal ( apikey_value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " enabled " ] . should . equal ( False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " stageKeys " ] . should . equal ( [ ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 15:49:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_keys ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-01 12:55:59 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
									
										
										
										
											2022-02-18 22:31:33 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  test_create_api_key_twice ( ) :  
						 
					
						
							
								
									
										
										
										
											2020-09-01 12:55:59 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-02-15 09:39:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey_value  =  " 01234567890123456789 " 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-01 12:55:59 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey_name  =  " TESTKEY1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { " value " :  apikey_value ,  " name " :  apikey_name } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_api_key ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-01 12:55:59 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . create_api_key ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " ConflictException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-01 12:55:59 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 17:11:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_api_keys ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 17:11:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . get_api_keys ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 17:11:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-02-15 09:39:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey_value  =  " 01234567890123456789 " 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey_name  =  " TESTKEY1 " 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 16:12:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    payload  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " value " :  apikey_value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " name " :  apikey_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " tags " :  { " tag1 " :  " test_tag1 " ,  " tag2 " :  " 1 " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 17:11:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_api_key ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 15:49:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-15 09:39:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey  =  client . get_api_key ( apiKey = response [ " id " ] ,  includeValue = True ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    apikey [ " name " ] . should . equal ( apikey_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey [ " value " ] . should . equal ( apikey_value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey [ " tags " ] [ " tag1 " ] . should . equal ( " test_tag1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    apikey [ " tags " ] [ " tag2 " ] . should . equal ( " 1 " ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 01:28:47 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patch_operations  =  [ 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /name " ,  " value " :  " TESTKEY3_CHANGE " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /customerId " ,  " value " :  " 12345 " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /description " ,  " value " :  " APIKEY UPDATE TEST " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /enabled " ,  " value " :  " false " } , 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 01:28:47 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . update_api_key ( apiKey = apikey_id ,  patchOperations = patch_operations ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " name " ] . should . equal ( " TESTKEY3_CHANGE " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " customerId " ] . should . equal ( " 12345 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " description " ] . should . equal ( " APIKEY UPDATE TEST " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " enabled " ] . should . equal ( False ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 01:28:47 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 15:49:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    updated_api_key  =  client . get_api_key ( apiKey = apikey_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    updated_api_key [ " name " ] . should . equal ( " TESTKEY3_CHANGE " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    updated_api_key [ " customerId " ] . should . equal ( " 12345 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    updated_api_key [ " description " ] . should . equal ( " APIKEY UPDATE TEST " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    updated_api_key [ " enabled " ] . should . equal ( False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 17:11:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . get_api_keys ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 15:49:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 17:11:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 15:49:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    payload  =  { " name " :  apikey_name } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_api_key ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-21 17:11:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_keys ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-15 17:41:41 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . delete_api_key ( apiKey = apikey_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 202 ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-27 15:49:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_api_keys ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_usage_plans ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . get_usage_plans ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # # Try to get info about a non existing usage 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . get_usage_plan ( usagePlanId = " not_existing " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " Invalid Usage Plan ID specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan_name  =  " TEST-PLAN " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { " name " :  usage_plan_name } 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_usage_plan ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan  =  client . get_usage_plan ( usagePlanId = response [ " id " ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    usage_plan [ " name " ] . should . equal ( usage_plan_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    usage_plan [ " apiStages " ] . should . equal ( [ ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-08 12:45:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    payload  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " name " :  " TEST-PLAN-2 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " description " :  " Description " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " quota " :  { " limit " :  10 ,  " period " :  " DAY " ,  " offset " :  0 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " throttle " :  { " rateLimit " :  2 ,  " burstLimit " :  1 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " apiStages " :  [ { " apiId " :  " foo " ,  " stage " :  " bar " } ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " tags " :  { " tag_key " :  " tag_value " } , 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-08 12:45:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_usage_plan ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan_id  =  response [ " id " ] 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan  =  client . get_usage_plan ( usagePlanId = usage_plan_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-08 12:45:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # The payload should remain unchanged 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  key ,  value  in  payload . items ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        usage_plan . should . have . key ( key ) . which . should . equal ( value ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Status code should be 200 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan [ " ResponseMetadata " ] . should . have . key ( " HTTPStatusCode " ) . which . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        200 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-08 12:45:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # An Id should've been generated 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan . should . have . key ( " id " ) . which . should_not . be . none 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_usage_plans ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-10 14:58:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . delete_usage_plan ( usagePlanId = usage_plan_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_usage_plans ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-02-24 23:46:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_usage_plan ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " name " :  " TEST-PLAN-2 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " description " :  " Description " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " quota " :  { " limit " :  10 ,  " period " :  " DAY " ,  " offset " :  0 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " throttle " :  { " rateLimit " :  2 ,  " burstLimit " :  1 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " apiStages " :  [ { " apiId " :  " foo " ,  " stage " :  " bar " } ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " tags " :  { " tag_key " :  " tag_value " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_usage_plan ( * * payload ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    usage_plan_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . update_usage_plan ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        usagePlanId = usage_plan_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        patchOperations = [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { " op " :  " replace " ,  " path " :  " /quota/limit " ,  " value " :  " 1000 " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { " op " :  " replace " ,  " path " :  " /quota/period " ,  " value " :  " MONTH " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { " op " :  " replace " ,  " path " :  " /throttle/rateLimit " ,  " value " :  " 500 " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { " op " :  " replace " ,  " path " :  " /throttle/burstLimit " ,  " value " :  " 1500 " } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-19 23:10:08 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            { " op " :  " replace " ,  " path " :  " /name " ,  " value " :  " new-name " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { " op " :  " replace " ,  " path " :  " /description " ,  " value " :  " new-description " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { " op " :  " replace " ,  " path " :  " /productCode " ,  " value " :  " new-productionCode " } , 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-24 23:46:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-14 21:40:48 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " quota " ] [ " limit " ] . should . equal ( 1000 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-24 23:46:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " quota " ] [ " period " ] . should . equal ( " MONTH " ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-19 23:10:08 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " name " ] . should . equal ( " new-name " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " description " ] . should . equal ( " new-description " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " productCode " ] . should . equal ( " new-productionCode " ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-24 23:46:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_usage_plan_keys ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan_id  =  " test " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Create an API key so we can use it 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    key_name  =  " test-api-key " 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_api_key ( name = key_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    key_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    key_value  =  response [ " value " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Get current plan keys (expect none) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_usage_plan_keys ( usagePlanId = usage_plan_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Create usage plan key 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    key_type  =  " API_KEY " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { " usagePlanId " :  usage_plan_id ,  " keyId " :  key_id ,  " keyType " :  key_type } 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_usage_plan_key ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-15 22:01:03 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equals ( 201 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan_key_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Get current plan keys (expect 1) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_usage_plan_keys ( usagePlanId = usage_plan_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Get a single usage plan key and check it matches the created one 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan_key  =  client . get_usage_plan_key ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        usagePlanId = usage_plan_id ,  keyId = usage_plan_key_id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    usage_plan_key [ " name " ] . should . equal ( key_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    usage_plan_key [ " id " ] . should . equal ( key_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    usage_plan_key [ " type " ] . should . equal ( key_type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    usage_plan_key [ " value " ] . should . equal ( key_value ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Delete usage plan key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . delete_usage_plan_key ( usagePlanId = usage_plan_id ,  keyId = key_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Get current plan keys (expect none) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_usage_plan_keys ( usagePlanId = usage_plan_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( response [ " items " ] ) . should . equal ( 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Try to get info about a non existing api key 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . get_usage_plan_key ( usagePlanId = usage_plan_id ,  keyId = " not_existing_key " ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " Invalid API Key identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Try to get info about an existing api key that has not jet added to a valid usage plan 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . get_usage_plan_key ( usagePlanId = usage_plan_id ,  keyId = key_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " Invalid Usage Plan ID specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Try to get info about an existing api key that has not jet added to a valid usage plan 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 07:54:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        client . get_usage_plan_key ( usagePlanId = " not_existing_plan_id " ,  keyId = key_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-06 08:04:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-27 19:39:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " Invalid Usage Plan ID specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_usage_plan_key_non_existent_api_key ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    usage_plan_id  =  " test " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Attempt to create a usage plan key for a API key that doesn't exists 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    payload  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " usagePlanId " :  usage_plan_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " keyId " :  " non-existent " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " keyType " :  " API_KEY " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-11 17:17:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client . create_usage_plan_key . when . called_with ( * * payload ) . should . throw ( ClientError ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-17 13:44:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_usage_plans_using_key_id ( ) :  
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-17 13:44:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Create 2 Usage Plans 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # one will be attached to an API Key, the other will remain unattached 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    attached_plan  =  client . create_usage_plan ( name = " Attached " ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client . create_usage_plan ( name = " Unattached " ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-17 13:44:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Create an API key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # to attach to the usage plan 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    key_name  =  " test-api-key " 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-17 13:44:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response  =  client . create_api_key ( name = key_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    key_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Create a Usage Plan Key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Attached the Usage Plan and API Key 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    key_type  =  " API_KEY " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    payload  =  { " usagePlanId " :  attached_plan [ " id " ] ,  " keyId " :  key_id ,  " keyType " :  key_type } 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-18 19:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    client . create_usage_plan_key ( * * payload ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-17 13:44:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # All usage plans should be returned when keyId is not included 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    all_plans  =  client . get_usage_plans ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( all_plans [ " items " ] ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-17 13:44:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Only the usage plan attached to the given api key are included 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    only_plans_with_key  =  client . get_usage_plans ( keyId = key_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 08:44:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    len ( only_plans_with_key [ " items " ] ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    only_plans_with_key [ " items " ] [ 0 ] [ " name " ] . should . equal ( attached_plan [ " name " ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    only_plans_with_key [ " items " ] [ 0 ] [ " id " ] . should . equal ( attached_plan [ " id " ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 09:12:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  create_method_integration ( client ,  api_id ,  httpMethod = " GET " ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resources  =  client . get_resources ( restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_id  =  [ resource  for  resource  in  resources [ " items " ]  if  resource [ " path " ]  ==  " / " ] [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = httpMethod , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        authorizationType = " NONE " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_method_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = httpMethod ,  statusCode = " 200 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_integration ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = httpMethod , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        type = " HTTP " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        uri = " http://httpbin.org/robots.txt " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        integrationHttpMethod = " POST " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . put_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resourceId = root_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        httpMethod = httpMethod , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        statusCode = " 200 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        responseTemplates = { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-28 11:17:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  root_id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_integration_response_unknown_response ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    region_name  =  " us-west-2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = region_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    root_id  =  create_method_integration ( client ,  api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . get_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 200 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_integration_response ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            restApiId = api_id ,  resourceId = root_id ,  httpMethod = " GET " ,  statusCode = " 300 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid Response status code specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_api_key_unknown_apikey ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-east-1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_api_key ( apiKey = " unknown " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid API Key identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_domain_name_unknown_domainname ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-east-1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_domain_name ( domainName = " www.google.com " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid domain name identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_delete_domain_name_unknown_domainname ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-east-1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . delete_domain_name ( domainName = " www.google.com " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid domain name identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-27 19:48:32 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_base_path_mapping ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificateName = " test.certificate " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificatePrivateKey = " testPrivateKey " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage_name  =  " dev " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    create_method_integration ( client ,  api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_deployment ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  stageName = stage_name ,  description = " 1.0.1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_base_path_mapping ( domainName = domain_name ,  restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 201 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " basePath " ] . should . equal ( " (none) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " restApiId " ] . should . equal ( api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . should_not . have . key ( " stage " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  stage = stage_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 201 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " basePath " ] . should . equal ( " (none) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " restApiId " ] . should . equal ( api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " stage " ] . should . equal ( stage_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  stage = stage_name ,  basePath = " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 201 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " basePath " ] . should . equal ( " v1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " restApiId " ] . should . equal ( api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " stage " ] . should . equal ( stage_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_base_path_mapping_with_unknown_api ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificateName = " test.certificate " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificatePrivateKey = " testPrivateKey " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            domainName = domain_name ,  restApiId = " none-exists-api " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid REST API identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 400 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_base_path_mapping_with_invalid_base_path ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificateName = " test.certificate " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificatePrivateKey = " testPrivateKey " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage_name  =  " dev " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    create_method_integration ( client ,  api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_deployment ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  stageName = stage_name ,  description = " 1.0.1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            domainName = domain_name ,  restApiId = api_id ,  basePath = " /v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " API Gateway V1 doesn ' t support the slash character (/) in base path mappings.  " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " To create a multi-level base path mapping, use API Gateway V2. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 400 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_base_path_mapping_with_unknown_stage ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificateName = " test.certificate " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificatePrivateKey = " testPrivateKey " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage_name  =  " dev " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    create_method_integration ( client ,  api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_deployment ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  stageName = stage_name ,  description = " 1.0.1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            domainName = domain_name ,  restApiId = api_id ,  stage = " unknown-stage " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid stage identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 400 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_create_base_path_mapping_with_duplicate_base_path ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificateName = " test.certificate " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        certificatePrivateKey = " testPrivateKey " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base_path  =  " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = base_path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            domainName = domain_name ,  restApiId = api_id ,  basePath = base_path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Base path already exists for this domain name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " ConflictException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 409 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-29 18:54:12 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_base_path_mappings ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage_name  =  " dev " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    create_method_integration ( client ,  api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_deployment ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  stageName = stage_name ,  description = " 1.0.1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( domainName = domain_name ,  restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = " v2 " ,  stage = stage_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_base_path_mappings ( domainName = domain_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 200 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items  =  response [ " items " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 0 ] [ " basePath " ] . should . equal ( " (none) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 0 ] [ " restApiId " ] . should . equal ( api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 0 ] . should_not . have . key ( " stage " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 1 ] [ " basePath " ] . should . equal ( " v1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 1 ] [ " restApiId " ] . should . equal ( api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 1 ] . should_not . have . key ( " stage " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 2 ] [ " basePath " ] . should . equal ( " v2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 2 ] [ " restApiId " ] . should . equal ( api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 2 ] [ " stage " ] . should . equal ( stage_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_base_path_mappings_with_unknown_domain ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_base_path_mappings ( domainName = " unknown-domain " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid domain name identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-06 19:52:27 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_base_path_mapping ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage_name  =  " dev " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    create_method_integration ( client ,  api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_deployment ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = api_id ,  stageName = stage_name ,  description = " 1.0.1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  stage = stage_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_base_path_mapping ( domainName = domain_name ,  basePath = " (none) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 200 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " basePath " ] . should . equal ( " (none) " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " restApiId " ] . should . equal ( api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " stage " ] . should . equal ( stage_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_base_path_mapping_with_unknown_domain ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_base_path_mapping ( domainName = " unknown-domain " ,  basePath = " v1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid domain name identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_get_base_path_mapping_with_unknown_base_path ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_base_path_mapping ( domainName = domain_name ,  basePath = " unknown " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid base path mapping identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-13 20:41:07 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_delete_base_path_mapping ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base_path  =  " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = base_path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . get_base_path_mapping ( domainName = domain_name ,  basePath = base_path ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . delete_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  basePath = base_path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 202 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . get_base_path_mapping ( domainName = domain_name ,  basePath = base_path ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid base path mapping identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_delete_base_path_mapping_with_unknown_domain ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . delete_base_path_mapping ( domainName = " unknown-domain " ,  basePath = " v1 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid domain name identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_delete_base_path_mapping_with_unknown_base_path ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . delete_base_path_mapping ( domainName = domain_name ,  basePath = " unknown " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid base path mapping identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-30 19:52:57 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_path_mapping ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stage_name  =  " dev " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( domainName = domain_name ,  restApiId = api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name = " new_my_api " ,  description = " this is new my api " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    new_api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    create_method_integration ( client ,  new_api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_deployment ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        restApiId = new_api_id ,  stageName = stage_name ,  description = " 1.0.1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base_path  =  " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patch_operations  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /stage " ,  " value " :  stage_name } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /basePath " ,  " value " :  base_path } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /restapiId " ,  " value " :  new_api_id } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . update_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  basePath = " (none) " ,  patchOperations = patch_operations 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 200 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " basePath " ] . should . equal ( base_path ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " restApiId " ] . should . equal ( new_api_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " stage " ] . should . equal ( stage_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_path_mapping_with_unknown_domain ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . update_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            domainName = " unknown-domain " ,  basePath = " (none) " ,  patchOperations = [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid domain name identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_path_mapping_with_unknown_base_path ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . update_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            domainName = domain_name ,  basePath = " unknown " ,  patchOperations = [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid base path mapping identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " NotFoundException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 404 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_path_mapping_to_same_base_path ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id_1  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id_2  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id_1 ,  basePath = " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id_2 ,  basePath = " v2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_base_path_mappings ( domainName = domain_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items  =  response [ " items " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    len ( items ) . should . equal ( 2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patch_operations  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { " op " :  " replace " ,  " path " :  " /basePath " ,  " value " :  " v2 " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . update_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  basePath = " v1 " ,  patchOperations = patch_operations 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 200 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " basePath " ] . should . equal ( " v2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response [ " restApiId " ] . should . equal ( api_id_1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . get_base_path_mappings ( domainName = domain_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items  =  response [ " items " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    len ( items ) . should . equal ( 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 0 ] [ " basePath " ] . should . equal ( " v2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 0 ] [ " restApiId " ] . should . equal ( api_id_1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    items [ 0 ] . should_not . have . key ( " stage " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_path_mapping_with_unknown_api ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base_path  =  " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = base_path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . update_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            domainName = domain_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            basePath = base_path , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            patchOperations = [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                { " op " :  " replace " ,  " path " :  " /restapiId " ,  " value " :  " unknown " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid REST API identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 400 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@mock_apigateway  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  test_update_path_mapping_with_unknown_stage ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client  =  boto3 . client ( " apigateway " ,  region_name = " us-west-2 " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    domain_name  =  " testDomain " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_certificate_name  =  " test.certificate " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_domain_name ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  certificateName = test_certificate_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response  =  client . create_rest_api ( name = " my_api " ,  description = " this is my api " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    api_id  =  response [ " id " ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base_path  =  " v1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    client . create_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        domainName = domain_name ,  restApiId = api_id ,  basePath = base_path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  pytest . raises ( ClientError )  as  ex : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        client . update_base_path_mapping ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            domainName = domain_name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            basePath = base_path , 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-10 13:39:59 -01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            patchOperations = [ { " op " :  " replace " ,  " path " :  " /stage " ,  " value " :  " unknown " } ] , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-30 19:52:57 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Message " ] . should . equal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " Invalid stage identifier specified " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " Error " ] [ " Code " ] . should . equal ( " BadRequestException " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ex . value . response [ " ResponseMetadata " ] [ " HTTPStatusCode " ] . should . equal ( 400 )