Add unit test for xmlns version matching request version.
This commit is contained in:
		@@ -36,6 +36,7 @@ from nova.auth import manager
 | 
			
		||||
class FakeHttplibSocket(object):
 | 
			
		||||
    """a fake socket implementation for httplib.HTTPResponse, trivial"""
 | 
			
		||||
    def __init__(self, response_string):
 | 
			
		||||
        self.response_string = response_string
 | 
			
		||||
        self._buffer = StringIO.StringIO(response_string)
 | 
			
		||||
 | 
			
		||||
    def makefile(self, _mode, _other):
 | 
			
		||||
@@ -66,13 +67,16 @@ class FakeHttplibConnection(object):
 | 
			
		||||
        # For some reason, the response doesn't have "HTTP/1.0 " prepended; I
 | 
			
		||||
        # guess that's a function the web server usually provides.
 | 
			
		||||
        resp = "HTTP/1.0 %s" % resp
 | 
			
		||||
        sock = FakeHttplibSocket(resp)
 | 
			
		||||
        self.http_response = httplib.HTTPResponse(sock)
 | 
			
		||||
        self.sock = FakeHttplibSocket(resp)
 | 
			
		||||
        self.http_response = httplib.HTTPResponse(self.sock)
 | 
			
		||||
        self.http_response.begin()
 | 
			
		||||
 | 
			
		||||
    def getresponse(self):
 | 
			
		||||
        return self.http_response
 | 
			
		||||
 | 
			
		||||
    def getresponsebody(self):
 | 
			
		||||
        return self.sock.response_string
 | 
			
		||||
 | 
			
		||||
    def close(self):
 | 
			
		||||
        """Required for compatibility with boto/tornado"""
 | 
			
		||||
        pass
 | 
			
		||||
@@ -104,7 +108,7 @@ class ApiEc2TestCase(test.TestCase):
 | 
			
		||||
        self.app = ec2.Authenticate(ec2.Requestify(ec2.Executor(),
 | 
			
		||||
                       'nova.api.ec2.cloud.CloudController'))
 | 
			
		||||
 | 
			
		||||
    def expect_http(self, host=None, is_secure=False):
 | 
			
		||||
    def expect_http(self, host=None, is_secure=False, api_version=None):
 | 
			
		||||
        """Returns a new EC2 connection"""
 | 
			
		||||
        self.ec2 = boto.connect_ec2(
 | 
			
		||||
                aws_access_key_id='fake',
 | 
			
		||||
@@ -113,13 +117,31 @@ class ApiEc2TestCase(test.TestCase):
 | 
			
		||||
                region=regioninfo.RegionInfo(None, 'test', self.host),
 | 
			
		||||
                port=8773,
 | 
			
		||||
                path='/services/Cloud')
 | 
			
		||||
        if api_version:
 | 
			
		||||
            self.ec2.APIVersion = api_version
 | 
			
		||||
 | 
			
		||||
        self.mox.StubOutWithMock(self.ec2, 'new_http_connection')
 | 
			
		||||
        http = FakeHttplibConnection(
 | 
			
		||||
        self.http = FakeHttplibConnection(
 | 
			
		||||
                self.app, '%s:8773' % (self.host), False)
 | 
			
		||||
        # pylint: disable-msg=E1103
 | 
			
		||||
        self.ec2.new_http_connection(host, is_secure).AndReturn(http)
 | 
			
		||||
        return http
 | 
			
		||||
        self.ec2.new_http_connection(host, is_secure).AndReturn(self.http)
 | 
			
		||||
        return self.http
 | 
			
		||||
 | 
			
		||||
    def test_xmlns_version_matches_request_version(self):
 | 
			
		||||
        self.expect_http(api_version='2010-10-30')
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        user = self.manager.create_user('fake', 'fake', 'fake')
 | 
			
		||||
        project = self.manager.create_project('fake', 'fake', 'fake')
 | 
			
		||||
 | 
			
		||||
        # Any request should be fine
 | 
			
		||||
        self.ec2.get_all_instances()
 | 
			
		||||
        self.assertTrue(self.ec2.APIVersion in self.http.getresponsebody(),
 | 
			
		||||
                       'The version in the xmlns of the response does '
 | 
			
		||||
                       'not match the API version given in the request.')
 | 
			
		||||
 | 
			
		||||
        self.manager.delete_project(project)
 | 
			
		||||
        self.manager.delete_user(user)
 | 
			
		||||
 | 
			
		||||
    def test_describe_instances(self):
 | 
			
		||||
        """Test that, after creating a user and a project, the describe
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user