github.com/alexissmirnov/terraform@v0.4.3-0.20150423153700-1ef9731a2f14/builtin/providers/aws/network_acl_entry_test.go (about)

     1  package aws
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/awslabs/aws-sdk-go/aws"
     8  	"github.com/awslabs/aws-sdk-go/service/ec2"
     9  )
    10  
    11  func Test_expandNetworkACLEntry(t *testing.T) {
    12  	input := []interface{}{
    13  		map[string]interface{}{
    14  			"protocol":   "tcp",
    15  			"from_port":  22,
    16  			"to_port":    22,
    17  			"cidr_block": "0.0.0.0/0",
    18  			"action":     "deny",
    19  			"rule_no":    1,
    20  		},
    21  		map[string]interface{}{
    22  			"protocol":   "tcp",
    23  			"from_port":  443,
    24  			"to_port":    443,
    25  			"cidr_block": "0.0.0.0/0",
    26  			"action":     "deny",
    27  			"rule_no":    2,
    28  		},
    29  		map[string]interface{}{
    30  			"protocol":   "-1",
    31  			"from_port":  443,
    32  			"to_port":    443,
    33  			"cidr_block": "0.0.0.0/0",
    34  			"action":     "deny",
    35  			"rule_no":    2,
    36  		},
    37  	}
    38  	expanded, _ := expandNetworkAclEntries(input, "egress")
    39  
    40  	expected := []*ec2.NetworkACLEntry{
    41  		&ec2.NetworkACLEntry{
    42  			Protocol: aws.String("6"),
    43  			PortRange: &ec2.PortRange{
    44  				From: aws.Long(22),
    45  				To:   aws.Long(22),
    46  			},
    47  			RuleAction: aws.String("deny"),
    48  			RuleNumber: aws.Long(1),
    49  			CIDRBlock:  aws.String("0.0.0.0/0"),
    50  			Egress:     aws.Boolean(true),
    51  		},
    52  		&ec2.NetworkACLEntry{
    53  			Protocol: aws.String("6"),
    54  			PortRange: &ec2.PortRange{
    55  				From: aws.Long(443),
    56  				To:   aws.Long(443),
    57  			},
    58  			RuleAction: aws.String("deny"),
    59  			RuleNumber: aws.Long(2),
    60  			CIDRBlock:  aws.String("0.0.0.0/0"),
    61  			Egress:     aws.Boolean(true),
    62  		},
    63  		&ec2.NetworkACLEntry{
    64  			Protocol: aws.String("-1"),
    65  			PortRange: &ec2.PortRange{
    66  				From: aws.Long(443),
    67  				To:   aws.Long(443),
    68  			},
    69  			RuleAction: aws.String("deny"),
    70  			RuleNumber: aws.Long(2),
    71  			CIDRBlock:  aws.String("0.0.0.0/0"),
    72  			Egress:     aws.Boolean(true),
    73  		},
    74  	}
    75  
    76  	if !reflect.DeepEqual(expanded, expected) {
    77  		t.Fatalf(
    78  			"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
    79  			expanded,
    80  			expected)
    81  	}
    82  
    83  }
    84  
    85  func Test_flattenNetworkACLEntry(t *testing.T) {
    86  
    87  	apiInput := []*ec2.NetworkACLEntry{
    88  		&ec2.NetworkACLEntry{
    89  			Protocol: aws.String("tcp"),
    90  			PortRange: &ec2.PortRange{
    91  				From: aws.Long(22),
    92  				To:   aws.Long(22),
    93  			},
    94  			RuleAction: aws.String("deny"),
    95  			RuleNumber: aws.Long(1),
    96  			CIDRBlock:  aws.String("0.0.0.0/0"),
    97  		},
    98  		&ec2.NetworkACLEntry{
    99  			Protocol: aws.String("tcp"),
   100  			PortRange: &ec2.PortRange{
   101  				From: aws.Long(443),
   102  				To:   aws.Long(443),
   103  			},
   104  			RuleAction: aws.String("deny"),
   105  			RuleNumber: aws.Long(2),
   106  			CIDRBlock:  aws.String("0.0.0.0/0"),
   107  		},
   108  	}
   109  	flattened := flattenNetworkAclEntries(apiInput)
   110  
   111  	expected := []map[string]interface{}{
   112  		map[string]interface{}{
   113  			"protocol":   "tcp",
   114  			"from_port":  int64(22),
   115  			"to_port":    int64(22),
   116  			"cidr_block": "0.0.0.0/0",
   117  			"action":     "deny",
   118  			"rule_no":    int64(1),
   119  		},
   120  		map[string]interface{}{
   121  			"protocol":   "tcp",
   122  			"from_port":  int64(443),
   123  			"to_port":    int64(443),
   124  			"cidr_block": "0.0.0.0/0",
   125  			"action":     "deny",
   126  			"rule_no":    int64(2),
   127  		},
   128  	}
   129  
   130  	if !reflect.DeepEqual(flattened, expected) {
   131  		t.Fatalf(
   132  			"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
   133  			flattened,
   134  			expected)
   135  	}
   136  
   137  }