135 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			135 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import boto3 | ||
|  | import pytest | ||
|  | 
 | ||
|  | from botocore.exceptions import ClientError | ||
|  | from moto import mock_appconfig | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_appconfig | ||
|  | def test_create_configuration_profile(): | ||
|  |     client = boto3.client("appconfig", region_name="eu-north-1") | ||
|  |     app_id = client.create_application(Name="testapp")["Id"] | ||
|  |     resp = client.create_configuration_profile( | ||
|  |         ApplicationId=app_id, | ||
|  |         Name="config_name", | ||
|  |         Description="desc", | ||
|  |         LocationUri="luri", | ||
|  |         RetrievalRoleArn="rrarn:rrarn:rrarn:rrarn", | ||
|  |         Validators=[{"Type": "JSON", "Content": "c"}], | ||
|  |         Type="freeform", | ||
|  |     ) | ||
|  |     del resp["ResponseMetadata"] | ||
|  |     assert "Id" in resp | ||
|  |     config_profile_id = resp.pop("Id") | ||
|  | 
 | ||
|  |     expected_response = { | ||
|  |         "ApplicationId": app_id, | ||
|  |         "Name": "config_name", | ||
|  |         "Description": "desc", | ||
|  |         "LocationUri": "luri", | ||
|  |         "RetrievalRoleArn": "rrarn:rrarn:rrarn:rrarn", | ||
|  |         "Validators": [{"Type": "JSON", "Content": "c"}], | ||
|  |         "Type": "freeform", | ||
|  |     } | ||
|  | 
 | ||
|  |     assert resp == expected_response | ||
|  | 
 | ||
|  |     resp = client.get_configuration_profile( | ||
|  |         ApplicationId=app_id, | ||
|  |         ConfigurationProfileId=config_profile_id, | ||
|  |     ) | ||
|  |     del resp["ResponseMetadata"] | ||
|  |     assert "Id" in resp | ||
|  |     resp.pop("Id") | ||
|  |     assert resp == expected_response | ||
|  | 
 | ||
|  |     profiles = client.list_configuration_profiles(ApplicationId=app_id)["Items"] | ||
|  |     assert profiles == [ | ||
|  |         { | ||
|  |             "ApplicationId": app_id, | ||
|  |             "Id": config_profile_id, | ||
|  |             "Name": "config_name", | ||
|  |             "LocationUri": "luri", | ||
|  |             "Type": "freeform", | ||
|  |         } | ||
|  |     ] | ||
|  | 
 | ||
|  |     update = client.update_configuration_profile( | ||
|  |         ApplicationId=app_id, | ||
|  |         ConfigurationProfileId=config_profile_id, | ||
|  |         Name="name2", | ||
|  |         Description="desc2", | ||
|  |         RetrievalRoleArn="rrarn:rrarn:rrarn:222", | ||
|  |         Validators=[], | ||
|  |     ) | ||
|  |     assert update["Name"] == "name2" | ||
|  |     assert update["RetrievalRoleArn"] == "rrarn:rrarn:rrarn:222" | ||
|  | 
 | ||
|  |     client.delete_configuration_profile( | ||
|  |         ApplicationId=app_id, | ||
|  |         ConfigurationProfileId=config_profile_id, | ||
|  |     ) | ||
|  | 
 | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         client.get_configuration_profile( | ||
|  |             ApplicationId=app_id, | ||
|  |             ConfigurationProfileId=config_profile_id, | ||
|  |         ) | ||
|  |     err = exc.value.response["Error"] | ||
|  |     assert err["Code"] == "ResourceNotFoundException" | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_appconfig | ||
|  | def test_tag_config_profile(): | ||
|  |     client = boto3.client("appconfig", region_name="us-east-2") | ||
|  |     app_id = client.create_application(Name="testapp")["Id"] | ||
|  |     cp_id = client.create_configuration_profile( | ||
|  |         ApplicationId=app_id, | ||
|  |         Name="config_name", | ||
|  |         LocationUri="luri", | ||
|  |     )["Id"] | ||
|  |     cp_arn = f"arn:aws:appconfig:us-east-2:123456789012:application/{app_id}/configurationprofile/{cp_id}" | ||
|  | 
 | ||
|  |     tags = client.list_tags_for_resource(ResourceArn=cp_arn)["Tags"] | ||
|  |     assert tags == {} | ||
|  | 
 | ||
|  |     client.tag_resource( | ||
|  |         ResourceArn=cp_arn, | ||
|  |         Tags={"k1": "v1"}, | ||
|  |     ) | ||
|  | 
 | ||
|  |     tags = client.list_tags_for_resource(ResourceArn=cp_arn)["Tags"] | ||
|  |     assert tags == {"k1": "v1"} | ||
|  | 
 | ||
|  |     #### | ||
|  |     # Check this flow works when creating an app with tags | ||
|  |     app_id = client.create_application(Name="testapp")["Id"] | ||
|  |     cp_id = client.create_configuration_profile( | ||
|  |         ApplicationId=app_id, | ||
|  |         Name="config_name", | ||
|  |         LocationUri="luri", | ||
|  |         Tags={"k1": "v1"}, | ||
|  |     )["Id"] | ||
|  |     cp_arn = f"arn:aws:appconfig:us-east-2:123456789012:application/{app_id}/configurationprofile/{cp_id}" | ||
|  | 
 | ||
|  |     tags = client.list_tags_for_resource(ResourceArn=cp_arn)["Tags"] | ||
|  |     assert tags == {"k1": "v1"} | ||
|  | 
 | ||
|  |     client.tag_resource( | ||
|  |         ResourceArn=cp_arn, | ||
|  |         Tags={"k2": "v2", "k3": "v3"}, | ||
|  |     ) | ||
|  | 
 | ||
|  |     tags = client.list_tags_for_resource(ResourceArn=cp_arn)["Tags"] | ||
|  |     assert tags == {"k1": "v1", "k2": "v2", "k3": "v3"} | ||
|  | 
 | ||
|  |     client.untag_resource(ResourceArn=cp_arn, TagKeys=["k2"]) | ||
|  | 
 | ||
|  |     tags = client.list_tags_for_resource(ResourceArn=cp_arn)["Tags"] | ||
|  |     assert tags == {"k1": "v1", "k3": "v3"} | ||
|  | 
 | ||
|  |     client.untag_resource(ResourceArn=cp_arn, TagKeys=["k1", "k3"]) | ||
|  | 
 | ||
|  |     tags = client.list_tags_for_resource(ResourceArn=cp_arn)["Tags"] | ||
|  |     assert tags == {} |