add some zone unit tests
diff --git a/tests/data/empty_describe_zone.json b/tests/data/empty_describe_zone.json
new file mode 100644
index 0000000..c575b3d
--- /dev/null
+++ b/tests/data/empty_describe_zone.json
@@ -0,0 +1,5 @@
+{
+ "listzonesresponse": {
+ "zone": {}
+ }
+}
diff --git a/tests/data/valid_describe_zone.json b/tests/data/valid_describe_zone.json
new file mode 100644
index 0000000..5a4cf60
--- /dev/null
+++ b/tests/data/valid_describe_zone.json
@@ -0,0 +1,17 @@
+{
+ "listzonesresponse": {
+ "count": 1,
+ "zone": [
+ {
+ "localstorageenabled": true,
+ "name": "CH-GV2",
+ "zonetoken": "ccb0a60c-79c8-3230-ab8b-8bdbe8c45bb7",
+ "securitygroupsenabled": true,
+ "allocationstate": "Enabled",
+ "dhcpprovider": "VirtualRouter",
+ "networktype": "Basic",
+ "id": "1128bd56-b4d9-4ac6-a7b9-c715b187ce11"
+ }
+ ]
+ }
+}
diff --git a/tests/instances_tests.py b/tests/instances_tests.py
index a05d289..127b26e 100644
--- a/tests/instances_tests.py
+++ b/tests/instances_tests.py
@@ -59,7 +59,7 @@
get = mock.Mock()
get.return_value.text = read_file(
- 'tests/data/valid_describe_instance_attribute.json'
+ 'tests/data/valid_describe_instances.json'
)
get.return_value.status_code = 200
diff --git a/tests/zones_tests.py b/tests/zones_tests.py
new file mode 100644
index 0000000..f32e8df
--- /dev/null
+++ b/tests/zones_tests.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# encoding: utf-8
+
+import mock
+
+from ec2stack.helpers import read_file, generate_signature
+from . import Ec2StackAppTestCase
+
+
+class ZonesTestCase(Ec2StackAppTestCase):
+
+ def test_describe_zone(self):
+ data = self.get_example_data()
+ data['Action'] = 'DescribeAvailabilityZones'
+ data['Signature'] = generate_signature(data, 'POST', 'localhost')
+
+ get = mock.Mock()
+ get.return_value.text = read_file(
+ 'tests/data/valid_describe_key_pairs.json'
+ )
+ get.return_value.status_code = 200
+
+ with mock.patch('requests.get', get):
+ response = self.post(
+ '/',
+ data=data
+ )
+
+ self.assert_ok(response)
+ assert 'DescribeAvailabilityZonesResponse' in response.data
+
+ def test_describe_instance_by_name(self):
+ data = self.get_example_data()
+ data['Action'] = 'DescribeAvailabilityZones'
+ data['ZoneName.1'] = 'CH-GV2'
+ data['Signature'] = generate_signature(data, 'POST', 'localhost')
+
+ get = mock.Mock()
+ get.return_value.text = read_file(
+ 'tests/data/valid_describe_zone.json'
+ )
+ get.return_value.status_code = 200
+
+ with mock.patch('requests.get', get):
+ response = self.post(
+ '/',
+ data=data
+ )
+
+ self.assert_ok(response)
+ assert 'DescribeAvailabilityZonesResponse' in response.data
+ assert 'CH-GV2' in response.data
+
+ def test_invalid_describe_instance_by_name(self):
+ data = self.get_example_data()
+ data['Action'] = 'DescribeAvailabilityZones'
+ data['ZoneName.1'] = 'invalid-zone-name'
+ data['Signature'] = generate_signature(data, 'POST', 'localhost')
+
+ get = mock.Mock()
+ get.return_value.text = read_file(
+ 'tests/data/valid_describe_zone.json'
+ )
+ get.return_value.status_code = 200
+
+ with mock.patch('requests.get', get):
+ response = self.post(
+ '/',
+ data=data
+ )
+
+ self.assert_bad_request(response)
+ assert 'InvalidZone.NotFound' in response.data
+
+ def test_empty_response_describe_zone_by_name(self):
+ data = self.get_example_data()
+ data['Action'] = 'DescribeAvailabilityZones'
+ data['ZoneName.1'] = 'invalid-zone-name'
+ data['Signature'] = generate_signature(data, 'POST', 'localhost')
+
+ get = mock.Mock()
+ get.return_value.text = read_file(
+ 'tests/data/empty_describe_zone.json'
+ )
+ get.return_value.status_code = 200
+
+ with mock.patch('requests.get', get):
+ response = self.post(
+ '/',
+ data=data
+ )
+
+ self.assert_bad_request(response)
+ assert 'InvalidZone.NotFound' in response.data