1from tests.unit import unittest
2from tests.unit import AWSMockServiceTestCase
3
4from boto.vpc import VPCConnection, InternetGateway
5
6
7class TestDescribeInternetGateway(AWSMockServiceTestCase):
8
9    connection_class = VPCConnection
10
11    def default_body(self):
12        return b"""
13            <DescribeInternetGatewaysResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/">
14               <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
15               <internetGatewaySet>
16                  <item>
17                     <internetGatewayId>igw-eaad4883EXAMPLE</internetGatewayId>
18                     <attachmentSet>
19                        <item>
20                           <vpcId>vpc-11ad4878</vpcId>
21                           <state>available</state>
22                        </item>
23                     </attachmentSet>
24                     <tagSet/>
25                  </item>
26               </internetGatewaySet>
27            </DescribeInternetGatewaysResponse>
28        """
29
30    def test_describe_internet_gateway(self):
31        self.set_http_response(status_code=200)
32        api_response = self.service_connection.get_all_internet_gateways(
33            'igw-eaad4883EXAMPLE', filters=[('attachment.state', ['available', 'pending'])])
34        self.assert_request_parameters({
35            'Action': 'DescribeInternetGateways',
36            'InternetGatewayId.1': 'igw-eaad4883EXAMPLE',
37            'Filter.1.Name': 'attachment.state',
38            'Filter.1.Value.1': 'available',
39            'Filter.1.Value.2': 'pending'},
40            ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
41                                  'SignatureVersion', 'Timestamp',
42                                  'Version'])
43        self.assertEquals(len(api_response), 1)
44        self.assertIsInstance(api_response[0], InternetGateway)
45        self.assertEqual(api_response[0].id, 'igw-eaad4883EXAMPLE')
46
47
48class TestCreateInternetGateway(AWSMockServiceTestCase):
49
50    connection_class = VPCConnection
51
52    def default_body(self):
53        return b"""
54            <CreateInternetGatewayResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/">
55               <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
56               <internetGateway>
57                  <internetGatewayId>igw-eaad4883</internetGatewayId>
58                  <attachmentSet/>
59                  <tagSet/>
60               </internetGateway>
61            </CreateInternetGatewayResponse>
62        """
63
64    def test_create_internet_gateway(self):
65        self.set_http_response(status_code=200)
66        api_response = self.service_connection.create_internet_gateway()
67        self.assert_request_parameters({
68            'Action': 'CreateInternetGateway'},
69            ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
70                                  'SignatureVersion', 'Timestamp',
71                                  'Version'])
72        self.assertIsInstance(api_response, InternetGateway)
73        self.assertEqual(api_response.id, 'igw-eaad4883')
74
75
76class TestDeleteInternetGateway(AWSMockServiceTestCase):
77
78    connection_class = VPCConnection
79
80    def default_body(self):
81        return b"""
82            <DeleteInternetGatewayResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/">
83               <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
84               <return>true</return>
85            </DeleteInternetGatewayResponse>
86        """
87
88    def test_delete_internet_gateway(self):
89        self.set_http_response(status_code=200)
90        api_response = self.service_connection.delete_internet_gateway('igw-eaad4883')
91        self.assert_request_parameters({
92            'Action': 'DeleteInternetGateway',
93            'InternetGatewayId': 'igw-eaad4883'},
94            ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
95                                  'SignatureVersion', 'Timestamp',
96                                  'Version'])
97        self.assertEquals(api_response, True)
98
99
100class TestAttachInternetGateway(AWSMockServiceTestCase):
101
102    connection_class = VPCConnection
103
104    def default_body(self):
105        return b"""
106            <AttachInternetGatewayResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/">
107               <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
108               <return>true</return>
109            </AttachInternetGatewayResponse>
110        """
111
112    def test_attach_internet_gateway(self):
113        self.set_http_response(status_code=200)
114        api_response = self.service_connection.attach_internet_gateway(
115            'igw-eaad4883', 'vpc-11ad4878')
116        self.assert_request_parameters({
117            'Action': 'AttachInternetGateway',
118            'InternetGatewayId': 'igw-eaad4883',
119            'VpcId': 'vpc-11ad4878'},
120            ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
121                                  'SignatureVersion', 'Timestamp',
122                                  'Version'])
123        self.assertEquals(api_response, True)
124
125
126class TestDetachInternetGateway(AWSMockServiceTestCase):
127
128    connection_class = VPCConnection
129
130    def default_body(self):
131        return b"""
132            <DetachInternetGatewayResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/">
133               <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
134               <return>true</return>
135            </DetachInternetGatewayResponse>
136        """
137
138    def test_detach_internet_gateway(self):
139        self.set_http_response(status_code=200)
140        api_response = self.service_connection.detach_internet_gateway(
141            'igw-eaad4883', 'vpc-11ad4878')
142        self.assert_request_parameters({
143            'Action': 'DetachInternetGateway',
144            'InternetGatewayId': 'igw-eaad4883',
145            'VpcId': 'vpc-11ad4878'},
146            ignore_params_values=['AWSAccessKeyId', 'SignatureMethod',
147                                  'SignatureVersion', 'Timestamp',
148                                  'Version'])
149        self.assertEquals(api_response, True)
150
151if __name__ == '__main__':
152    unittest.main()
153