You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2013/11/05 12:37:23 UTC

git commit: Add assertUrlContainsQueryParams method to MockHttpTestCase class and modify affected tests to use it.

Updated Branches:
  refs/heads/trunk b232da3e6 -> cd5731c9a


Add assertUrlContainsQueryParams method to MockHttpTestCase class and modify
affected tests to use it.


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/cd5731c9
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/cd5731c9
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/cd5731c9

Branch: refs/heads/trunk
Commit: cd5731c9aee1ba8e06a8f692de0c4be453e8817c
Parents: b232da3
Author: Tomaz Muraus <to...@apache.org>
Authored: Tue Nov 5 11:00:14 2013 +0000
Committer: Tomaz Muraus <to...@apache.org>
Committed: Tue Nov 5 11:01:06 2013 +0000

----------------------------------------------------------------------
 libcloud/test/__init__.py         | 28 +++++++++++++++++++++++++
 libcloud/test/compute/test_ec2.py | 37 +++++++++++-----------------------
 2 files changed, 40 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/cd5731c9/libcloud/test/__init__.py
----------------------------------------------------------------------
diff --git a/libcloud/test/__init__.py b/libcloud/test/__init__.py
index 68fdae2..cd09e42 100644
--- a/libcloud/test/__init__.py
+++ b/libcloud/test/__init__.py
@@ -20,6 +20,7 @@ from libcloud.utils.py3 import httplib
 from libcloud.utils.py3 import StringIO
 from libcloud.utils.py3 import urlparse
 from libcloud.utils.py3 import parse_qs
+from libcloud.utils.py3 import parse_qsl
 from libcloud.utils.py3 import u
 from libcloud.utils.py3 import unittest2_required
 
@@ -222,6 +223,33 @@ class MockHttpTestCase(MockHttp, unittest.TestCase):
     def runTest(self):
         pass
 
+    def assertUrlContainsQueryParams(self, url, expected_params, strict=False):
+        """
+        Assert that provided url contains provided query parameters.
+
+        :param url: URL to assert.
+        :type url: ``str``
+
+        :param expected_params: Dictionary of expected query parameters.
+        :type expected_params: ``dict``
+
+        :param strict: Assert that provided url contains only expected_params.
+                       (defaults to ``False``)
+        :type strict: ``bool``
+        """
+        question_mark_index = url.find('?')
+
+        if question_mark_index != -1:
+            url = url[question_mark_index + 1:]
+
+        params = dict(parse_qsl(url))
+
+        if strict:
+            self.assertDictEqual(params, expected_params)
+        else:
+            for key, value in expected_params.items():
+                self.assertEqual(params[key], value)
+
 
 class StorageMockHttp(MockHttp):
     def putrequest(self, method, action):

http://git-wip-us.apache.org/repos/asf/libcloud/blob/cd5731c9/libcloud/test/compute/test_ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_ec2.py b/libcloud/test/compute/test_ec2.py
index 9bfbfca..0840446 100644
--- a/libcloud/test/compute/test_ec2.py
+++ b/libcloud/test/compute/test_ec2.py
@@ -20,7 +20,6 @@ import sys
 from datetime import datetime
 
 from libcloud.utils.py3 import httplib
-from libcloud.utils.py3 import parse_qsl
 
 from libcloud.compute.drivers.ec2 import EC2NodeDriver
 from libcloud.compute.drivers.ec2 import EC2USWestNodeDriver
@@ -729,32 +728,22 @@ class EC2MockHttp(MockHttpTestCase):
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
     def _ex_security_groups_RunInstances(self, method, url, body, headers):
-        # Need to remove '/?'
-        url = url[2:]
-        params = dict(parse_qsl(url))
-
-        self.assertEqual(params['SecurityGroup.1'], 'group1')
-        self.assertEqual(params['SecurityGroup.1'], 'group1')
+        self.assertUrlContainsQueryParams(url, {'SecurityGroup.1': 'group1'})
+        self.assertUrlContainsQueryParams(url, {'SecurityGroup.2': 'group2'})
 
         body = self.fixtures.load('run_instances.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
     def _create_ex_blockdevicemappings_RunInstances(self, method, url, body, headers):
-        # Need to remove '/?'
-        url = url[2:]
-        parameters = dict(parse_qsl(url))
-        self.assertEqual(parameters['BlockDeviceMapping.1.DeviceName'],
-                         '/dev/sda1')
-        self.assertEqual(parameters['BlockDeviceMapping.1.Ebs.VolumeSize'],
-                         '10')
-        self.assertEqual(parameters['BlockDeviceMapping.2.DeviceName'],
-                         '/dev/sdb')
-        self.assertEqual(parameters['BlockDeviceMapping.2.VirtualName'],
-                         'ephemeral0')
-        self.assertEqual(parameters['BlockDeviceMapping.3.DeviceName'],
-                         '/dev/sdc')
-        self.assertEqual(parameters['BlockDeviceMapping.3.VirtualName'],
-                         'ephemeral1')
+        expected_params = {
+            'BlockDeviceMapping.1.DeviceName': '/dev/sda1',
+            'BlockDeviceMapping.1.Ebs.VolumeSize': '10',
+            'BlockDeviceMapping.2.DeviceName': '/dev/sdb',
+            'BlockDeviceMapping.2.VirtualName': 'ephemeral0',
+            'BlockDeviceMapping.3.DeviceName': '/dev/sdc',
+            'BlockDeviceMapping.3.VirtualName': 'ephemeral1'
+        }
+        self.assertUrlContainsQueryParams(url, expected_params)
 
         body = self.fixtures.load('run_instances.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
@@ -868,9 +857,7 @@ class EC2MockHttp(MockHttpTestCase):
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
     def _DeleteKeypair(self, method, url, body, headers):
-        url = url[2:]
-        params = dict(parse_qsl(url))
-        self.assertEqual(params['KeyPair'], 'testkey')
+        self.assertUrlContainsQueryParams(url, {'KeyPair': 'testkey'})
 
         body = self.fixtures.load('delete_keypair.xml')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])