102 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import sure  # noqa # pylint: disable=unused-import
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from moto.ssm.utils import convert_to_tree, convert_to_params
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SOURCE_PARAMS = [
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        "ARN": "arn:aws:ssm:us-west-1::parameter/aws/service/global-infrastructure/regions/af-south-1",
							 | 
						||
| 
								 | 
							
								        "DataType": "text",
							 | 
						||
| 
								 | 
							
								        "Name": "/aws/service/global-infrastructure/regions/af-south-1",
							 | 
						||
| 
								 | 
							
								        "Type": "String",
							 | 
						||
| 
								 | 
							
								        "Value": "af-south-1",
							 | 
						||
| 
								 | 
							
								        "Version": 1,
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        "ARN": "arn:aws:ssm:us-west-1::parameter/aws/service/global-infrastructure/regions/ap-northeast-2",
							 | 
						||
| 
								 | 
							
								        "DataType": "text",
							 | 
						||
| 
								 | 
							
								        "Name": "/aws/service/global-infrastructure/regions/ap-northeast-2",
							 | 
						||
| 
								 | 
							
								        "Type": "String",
							 | 
						||
| 
								 | 
							
								        "Value": "ap-northeast-2",
							 | 
						||
| 
								 | 
							
								        "Version": 1,
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        "ARN": "arn:aws:ssm:us-west-1::parameter/aws/service/global-infrastructure/regions/cn-north-1",
							 | 
						||
| 
								 | 
							
								        "DataType": "text",
							 | 
						||
| 
								 | 
							
								        "Name": "/aws/service/global-infrastructure/regions/cn-north-1",
							 | 
						||
| 
								 | 
							
								        "Type": "String",
							 | 
						||
| 
								 | 
							
								        "Value": "cn-north-1",
							 | 
						||
| 
								 | 
							
								        "Version": 1,
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        "ARN": "arn:aws:ssm:us-west-1::parameter/aws/service/global-infrastructure/regions/ap-northeast-2/services/codestar-notifications",
							 | 
						||
| 
								 | 
							
								        "DataType": "text",
							 | 
						||
| 
								 | 
							
								        "Name": "/aws/service/global-infrastructure/regions/ap-northeast-2/services/codestar-notifications",
							 | 
						||
| 
								 | 
							
								        "Type": "String",
							 | 
						||
| 
								 | 
							
								        "Value": "codestar-notifications",
							 | 
						||
| 
								 | 
							
								        "Version": 1,
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EXPECTED_TREE = {
							 | 
						||
| 
								 | 
							
								    "aws": {
							 | 
						||
| 
								 | 
							
								        "service": {
							 | 
						||
| 
								 | 
							
								            "global-infrastructure": {
							 | 
						||
| 
								 | 
							
								                "regions": {
							 | 
						||
| 
								 | 
							
								                    "af-south-1": {"Value": "af-south-1"},
							 | 
						||
| 
								 | 
							
								                    "cn-north-1": {"Value": "cn-north-1"},
							 | 
						||
| 
								 | 
							
								                    "ap-northeast-2": {
							 | 
						||
| 
								 | 
							
								                        "Value": "ap-northeast-2",
							 | 
						||
| 
								 | 
							
								                        "services": {
							 | 
						||
| 
								 | 
							
								                            "codestar-notifications": {
							 | 
						||
| 
								 | 
							
								                                "Value": "codestar-notifications"
							 | 
						||
| 
								 | 
							
								                            }
							 | 
						||
| 
								 | 
							
								                        },
							 | 
						||
| 
								 | 
							
								                    },
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CONVERTED_PARAMS = [
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        "Name": "/aws/service/global-infrastructure/regions/af-south-1",
							 | 
						||
| 
								 | 
							
								        "Value": "af-south-1",
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        "Name": "/aws/service/global-infrastructure/regions/cn-north-1",
							 | 
						||
| 
								 | 
							
								        "Value": "cn-north-1",
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        "Name": "/aws/service/global-infrastructure/regions/ap-northeast-2",
							 | 
						||
| 
								 | 
							
								        "Value": "ap-northeast-2",
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        "Name": "/aws/service/global-infrastructure/regions/ap-northeast-2/services/codestar-notifications",
							 | 
						||
| 
								 | 
							
								        "Value": "codestar-notifications",
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_convert_to_tree():
							 | 
						||
| 
								 | 
							
								    tree = convert_to_tree(SOURCE_PARAMS)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    tree.should.equal(EXPECTED_TREE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_convert_to_params():
							 | 
						||
| 
								 | 
							
								    actual = convert_to_params(EXPECTED_TREE)
							 | 
						||
| 
								 | 
							
								    actual.should.have.length_of(len(CONVERTED_PARAMS))
							 | 
						||
| 
								 | 
							
								    for param in CONVERTED_PARAMS:
							 | 
						||
| 
								 | 
							
								        actual.should.contain(param)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_input_is_correct():
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Test input should match
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    for src in SOURCE_PARAMS:
							 | 
						||
| 
								 | 
							
								        minimized_src = {"Name": src["Name"], "Value": src["Value"]}
							 | 
						||
| 
								 | 
							
								        CONVERTED_PARAMS.should.contain(minimized_src)
							 |