예제 #1
0
 def test_add_size_zero(self, fake_size):
     """
     Test that when specifying size zero for the image to add,
     the actual size of the image is returned.
     """
     expected_image_id = str(uuid.uuid4())
     expected_size = FIVE_KB
     expected_contents = "*" * expected_size
     hash_code = hashlib.md5(expected_contents)
     expected_checksum = hash_code.hexdigest()
     fake_size.__get__ = mock.Mock(return_value=expected_size)
     with mock.patch('hashlib.md5') as md5:
         md5.return_value = hash_code
         expected_location = format_location(
             VMWARE_DS['vmware_server_host'],
             VMWARE_DS['vmware_store_image_dir'], expected_image_id,
             VMWARE_DS['vmware_datacenter_path'],
             VMWARE_DS['vmware_datastore_name'])
         image = six.StringIO(expected_contents)
         with mock.patch('httplib.HTTPConnection') as HttpConn:
             HttpConn.return_value = FakeHTTPConnection()
             location, size, checksum, _ = self.store.add(
                 expected_image_id, image, 0)
     self.assertEqual(utils.sort_url_by_qs_keys(expected_location),
                      utils.sort_url_by_qs_keys(location))
     self.assertEqual(expected_size, size)
     self.assertEqual(expected_checksum, checksum)
예제 #2
0
 def test_add_size_zero(self, mock_api_session, fake_size,
                        fake_select_datastore):
     """
     Test that when specifying size zero for the image to add,
     the actual size of the image is returned.
     """
     fake_select_datastore.return_value = self.store.datastores[0][0]
     expected_image_id = str(uuid.uuid4())
     expected_size = FIVE_KB
     expected_contents = b"*" * expected_size
     hash_code = hashlib.md5(expected_contents)
     expected_checksum = hash_code.hexdigest()
     fake_size.__get__ = mock.Mock(return_value=expected_size)
     with mock.patch('hashlib.md5') as md5:
         md5.return_value = hash_code
         expected_location = format_location(
             VMWARE_DS['vmware_server_host'],
             VMWARE_DS['vmware_store_image_dir'], expected_image_id,
             VMWARE_DS['vmware_datastores'])
         image = six.BytesIO(expected_contents)
         with mock.patch('requests.Session.request') as HttpConn:
             HttpConn.return_value = utils.fake_response()
             location, size, checksum, _ = self.store.add(
                 expected_image_id, image, 0)
     self.assertEqual(utils.sort_url_by_qs_keys(expected_location),
                      utils.sort_url_by_qs_keys(location))
     self.assertEqual(expected_size, size)
     self.assertEqual(expected_checksum, checksum)
예제 #3
0
 def test_add(self, fake_api_session, fake_size, fake_select_datastore):
     """Test that we can add an image via the VMware backend."""
     fake_select_datastore.return_value = self.store.datastores[0][0]
     expected_image_id = str(uuid.uuid4())
     expected_size = FIVE_KB
     expected_contents = "*" * expected_size
     hash_code = hashlib.md5(expected_contents)
     expected_checksum = hash_code.hexdigest()
     fake_size.__get__ = mock.Mock(return_value=expected_size)
     with mock.patch('hashlib.md5') as md5:
         md5.return_value = hash_code
         expected_location = format_location(
             VMWARE_DS['vmware_server_host'],
             VMWARE_DS['vmware_store_image_dir'],
             expected_image_id,
             VMWARE_DS['vmware_datacenter_path'],
             VMWARE_DS['vmware_datastore_name'])
         image = six.StringIO(expected_contents)
         with mock.patch('httplib.HTTPConnection') as HttpConn:
             HttpConn.return_value = FakeHTTPConnection()
             location, size, checksum, _ = self.store.add(expected_image_id,
                                                          image,
                                                          expected_size)
     self.assertEqual(utils.sort_url_by_qs_keys(expected_location),
                      utils.sort_url_by_qs_keys(location))
     self.assertEqual(expected_size, size)
     self.assertEqual(expected_checksum, checksum)
 def test_add_size_zero(self, fake_size):
     """
     Test that when specifying size zero for the image to add,
     the actual size of the image is returned.
     """
     expected_image_id = str(uuid.uuid4())
     expected_size = FIVE_KB
     expected_contents = "*" * expected_size
     hash_code = hashlib.md5(expected_contents)
     expected_checksum = hash_code.hexdigest()
     fake_size.__get__ = mock.Mock(return_value=expected_size)
     with mock.patch('hashlib.md5') as md5:
         md5.return_value = hash_code
         expected_location = format_location(
             VMWARE_DS['vmware_server_host'],
             VMWARE_DS['vmware_store_image_dir'],
             expected_image_id,
             VMWARE_DS['vmware_datacenter_path'],
             VMWARE_DS['vmware_datastore_name'])
         image = six.StringIO(expected_contents)
         with mock.patch('httplib.HTTPConnection') as HttpConn:
             HttpConn.return_value = FakeHTTPConnection()
             location, size, checksum, _ = self.store.add(expected_image_id,
                                                          image, 0)
     self.assertEqual(utils.sort_url_by_qs_keys(expected_location),
                      utils.sort_url_by_qs_keys(location))
     self.assertEqual(expected_size, size)
     self.assertEqual(expected_checksum, checksum)
    def test_add(self, fake_api_session, fake_size, fake_select_datastore,
                 fake_cookie):
        """Test that we can add an image via the VMware backend."""
        fake_select_datastore.return_value = self.store.datastores[0][0]
        expected_image_id = str(uuid.uuid4())
        expected_size = FIVE_KB
        expected_contents = b"*" * expected_size
        hash_code = secretutils.md5(expected_contents, usedforsecurity=False)
        expected_checksum = hash_code.hexdigest()
        fake_size.__get__ = mock.Mock(return_value=expected_size)
        expected_cookie = 'vmware_soap_session=fake-uuid'
        fake_cookie.return_value = expected_cookie
        expected_headers = {
            'Content-Length': six.text_type(expected_size),
            'Cookie': expected_cookie
        }
        with mock.patch('hashlib.md5') as md5:
            md5.return_value = hash_code
            expected_location = format_location(
                VMWARE_DS['vmware_server_host'],
                VMWARE_DS['vmware_store_image_dir'], expected_image_id,
                VMWARE_DS['vmware_datastores'])
            image = six.BytesIO(expected_contents)
            with mock.patch('requests.Session.request') as HttpConn:
                HttpConn.return_value = utils.fake_response()
                location, size, checksum, metadata = self.store.add(
                    expected_image_id, image, expected_size)
                _, kwargs = HttpConn.call_args
                self.assertEqual(expected_headers, kwargs['headers'])
                self.assertEqual("vmware1", metadata["store"])

        self.assertEqual(utils.sort_url_by_qs_keys(expected_location),
                         utils.sort_url_by_qs_keys(location))
        self.assertEqual(expected_size, size)
        self.assertEqual(expected_checksum, checksum)
    def test_add_size_zero(self, mock_api_session, fake_size,
                           fake_select_datastore):
        """
        Test that when specifying size zero for the image to add,
        the actual size of the image is returned.
        """
        fake_select_datastore.return_value = self.store.datastores[0][0]
        expected_image_id = str(uuid.uuid4())
        expected_size = FIVE_KB
        expected_contents = b"*" * expected_size
        hash_code = hashlib.md5(expected_contents)
        expected_checksum = hash_code.hexdigest()
        fake_size.__get__ = mock.Mock(return_value=expected_size)
        with mock.patch('hashlib.md5') as md5:
            md5.return_value = hash_code
            expected_location = format_location(
                VMWARE_DS['vmware_server_host'],
                VMWARE_DS['vmware_store_image_dir'],
                expected_image_id,
                VMWARE_DS['vmware_datastores'])
            image = six.BytesIO(expected_contents)
            with mock.patch('requests.Session.request') as HttpConn:
                HttpConn.return_value = utils.fake_response()
                location, size, checksum, metadata = self.store.add(
                    expected_image_id, image, 0)
                self.assertEqual("vmware1", metadata["backend"])

        self.assertEqual(utils.sort_url_by_qs_keys(expected_location),
                         utils.sort_url_by_qs_keys(location))
        self.assertEqual(expected_size, size)
        self.assertEqual(expected_checksum, checksum)
    def test_add(self, fake_api_session, fake_size, fake_select_datastore,
                 fake_cookie):
        """Test that we can add an image via the VMware backend."""
        fake_select_datastore.return_value = self.store.datastores[0][0]
        expected_image_id = str(uuid.uuid4())
        expected_size = FIVE_KB
        expected_contents = b"*" * expected_size
        hash_code = hashlib.md5(expected_contents)
        expected_checksum = hash_code.hexdigest()
        fake_size.__get__ = mock.Mock(return_value=expected_size)
        expected_cookie = 'vmware_soap_session=fake-uuid'
        fake_cookie.return_value = expected_cookie
        expected_headers = {'Content-Length': six.text_type(expected_size),
                            'Cookie': expected_cookie}
        with mock.patch('hashlib.md5') as md5:
            md5.return_value = hash_code
            expected_location = format_location(
                VMWARE_DS['vmware_server_host'],
                VMWARE_DS['vmware_store_image_dir'],
                expected_image_id,
                VMWARE_DS['vmware_datastores'])
            image = six.BytesIO(expected_contents)
            with mock.patch('requests.Session.request') as HttpConn:
                HttpConn.return_value = utils.fake_response()
                location, size, checksum, metadata = self.store.add(
                    expected_image_id, image, expected_size)
                _, kwargs = HttpConn.call_args
                self.assertEqual(expected_headers, kwargs['headers'])
                self.assertEqual("vmware1", metadata["backend"])

        self.assertEqual(utils.sort_url_by_qs_keys(expected_location),
                         utils.sort_url_by_qs_keys(location))
        self.assertEqual(expected_size, size)
        self.assertEqual(expected_checksum, checksum)
예제 #8
0
 def test_add(self, fake_api_session, fake_size, fake_select_datastore):
     """Test that we can add an image via the VMware backend."""
     fake_select_datastore.return_value = self.store.datastores[0][0]
     expected_image_id = str(uuid.uuid4())
     expected_size = FIVE_KB
     expected_contents = b"*" * expected_size
     hash_code = hashlib.md5(expected_contents)
     expected_checksum = hash_code.hexdigest()
     fake_size.__get__ = mock.Mock(return_value=expected_size)
     with mock.patch('hashlib.md5') as md5:
         md5.return_value = hash_code
         expected_location = format_location(
             VMWARE_DS['vmware_server_host'],
             VMWARE_DS['vmware_store_image_dir'],
             expected_image_id,
             VMWARE_DS['vmware_datacenter_path'],
             VMWARE_DS['vmware_datastore_name'])
         image = six.BytesIO(expected_contents)
         with self._mock_http_connection() as HttpConn:
             HttpConn.return_value = FakeHTTPConnection()
             location, size, checksum, _ = self.store.add(expected_image_id,
                                                          image,
                                                          expected_size)
     self.assertEqual(utils.sort_url_by_qs_keys(expected_location),
                      utils.sort_url_by_qs_keys(location))
     self.assertEqual(expected_size, size)
     self.assertEqual(expected_checksum, checksum)
예제 #9
0
 def test_qs_sort_with_literal_question_mark(self):
     url = 'scheme://example.com/path?key2=val2&key1=val1?sort=true'
     exp_url = 'scheme://example.com/path?key1=val1%3Fsort%3Dtrue&key2=val2'
     self.assertEqual(exp_url, utils.sort_url_by_qs_keys(url))
예제 #10
0
 def test_qs_sort_with_literal_question_mark(self):
     url = 'scheme://example.com/path?key2=val2&key1=val1?sort=true'
     exp_url = 'scheme://example.com/path?key1=val1%3Fsort%3Dtrue&key2=val2'
     self.assertEqual(exp_url,
                      utils.sort_url_by_qs_keys(url))