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])