Add backend tests from glance
Moves some unit tests that were part of glance but should have belonged to glance_store. These tests are ported from glance/tests/unit/test_store_image.py Change-Id: I688629d37e9146aef33fbc9bb6fd8780521e06ab
This commit is contained in:
parent
9683e3bede
commit
5faadde2d6
|
@ -0,0 +1,115 @@
|
|||
# Copyright 2016 OpenStack, LLC
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""Tests the backend store API's"""
|
||||
|
||||
import mock
|
||||
|
||||
from glance_store import backend
|
||||
from glance_store import exceptions
|
||||
from glance_store.tests import base
|
||||
|
||||
|
||||
class TestStoreAddToBackend(base.StoreBaseTest):
|
||||
|
||||
def setUp(self):
|
||||
super(TestStoreAddToBackend, self).setUp()
|
||||
self.image_id = "animage"
|
||||
self.data = "dataandstuff"
|
||||
self.size = len(self.data)
|
||||
self.location = "file:///ab/cde/fgh"
|
||||
self.checksum = "md5"
|
||||
|
||||
def _bad_metadata(self, in_metadata):
|
||||
mstore = mock.Mock()
|
||||
mstore.add.return_value = (self.location, self.size,
|
||||
self.checksum, in_metadata)
|
||||
mstore.__str__ = lambda self: "hello"
|
||||
mstore.__unicode__ = lambda self: "hello"
|
||||
|
||||
self.assertRaises(exceptions.BackendException,
|
||||
backend.store_add_to_backend,
|
||||
self.image_id,
|
||||
self.data,
|
||||
self.size,
|
||||
mstore)
|
||||
|
||||
mstore.add.assert_called_once_with(self.image_id, mock.ANY,
|
||||
self.size, context=None,
|
||||
verifier=None)
|
||||
|
||||
def _good_metadata(self, in_metadata):
|
||||
mstore = mock.Mock()
|
||||
mstore.add.return_value = (self.location, self.size,
|
||||
self.checksum, in_metadata)
|
||||
|
||||
(location,
|
||||
size,
|
||||
checksum,
|
||||
metadata) = backend.store_add_to_backend(self.image_id,
|
||||
self.data,
|
||||
self.size,
|
||||
mstore)
|
||||
|
||||
mstore.add.assert_called_once_with(self.image_id, mock.ANY,
|
||||
self.size, context=None,
|
||||
verifier=None)
|
||||
|
||||
self.assertEqual(self.location, location)
|
||||
self.assertEqual(self.size, size)
|
||||
self.assertEqual(self.checksum, checksum)
|
||||
self.assertEqual(in_metadata, metadata)
|
||||
|
||||
def test_empty(self):
|
||||
metadata = {}
|
||||
self._good_metadata(metadata)
|
||||
|
||||
def test_string(self):
|
||||
metadata = {'key': u'somevalue'}
|
||||
self._good_metadata(metadata)
|
||||
|
||||
def test_list(self):
|
||||
m = {'key': [u'somevalue', u'2']}
|
||||
self._good_metadata(m)
|
||||
|
||||
def test_unicode_dict(self):
|
||||
inner = {'key1': u'somevalue', 'key2': u'somevalue'}
|
||||
m = {'topkey': inner}
|
||||
self._good_metadata(m)
|
||||
|
||||
def test_unicode_dict_list(self):
|
||||
inner = {'key1': u'somevalue', 'key2': u'somevalue'}
|
||||
m = {'topkey': inner, 'list': [u'somevalue', u'2'], 'u': u'2'}
|
||||
self._good_metadata(m)
|
||||
|
||||
def test_nested_dict(self):
|
||||
inner = {'key1': u'somevalue', 'key2': u'somevalue'}
|
||||
inner = {'newkey': inner}
|
||||
inner = {'anotherkey': inner}
|
||||
m = {'topkey': inner}
|
||||
self._good_metadata(m)
|
||||
|
||||
def test_bad_top_level_nonunicode(self):
|
||||
metadata = {'key': b'a string'}
|
||||
self._bad_metadata(metadata)
|
||||
|
||||
def test_bad_nonunicode_dict_list(self):
|
||||
inner = {'key1': u'somevalue', 'key2': u'somevalue',
|
||||
'k3': [1, object()]}
|
||||
m = {'topkey': inner, 'list': [u'somevalue', u'2'], 'u': u'2'}
|
||||
self._bad_metadata(m)
|
||||
|
||||
def test_bad_metadata_not_dict(self):
|
||||
self._bad_metadata([])
|
Loading…
Reference in New Issue