116 lines
3.9 KiB
Python
116 lines
3.9 KiB
Python
|
# 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.
|
||
|
|
||
|
from unittest import mock
|
||
|
|
||
|
from openstack import exceptions
|
||
|
from openstack import proxy
|
||
|
from openstack import resource
|
||
|
from openstack.tests.unit import base
|
||
|
|
||
|
|
||
|
class TestSearch(base.TestCase):
|
||
|
class FakeResource(resource.Resource):
|
||
|
allow_fetch = True
|
||
|
allow_list = True
|
||
|
|
||
|
foo = resource.Body("foo")
|
||
|
|
||
|
def setUp(self):
|
||
|
super(TestSearch, self).setUp()
|
||
|
|
||
|
self.session = proxy.Proxy(self.cloud)
|
||
|
self.session._sdk_connection = self.cloud
|
||
|
self.session._get = mock.Mock()
|
||
|
self.session._list = mock.Mock()
|
||
|
self.session._resource_registry = dict(fake=self.FakeResource)
|
||
|
# Set the mock into the cloud connection
|
||
|
setattr(self.cloud, "mock_session", self.session)
|
||
|
|
||
|
def test_raises_unknown_service(self):
|
||
|
self.assertRaises(
|
||
|
exceptions.SDKException,
|
||
|
self.cloud.search_resources,
|
||
|
"wrong_service.wrong_resource",
|
||
|
"name",
|
||
|
)
|
||
|
|
||
|
def test_raises_unknown_resource(self):
|
||
|
self.assertRaises(
|
||
|
exceptions.SDKException,
|
||
|
self.cloud.search_resources,
|
||
|
"mock_session.wrong_resource",
|
||
|
"name",
|
||
|
)
|
||
|
|
||
|
def test_search_resources_get_finds(self):
|
||
|
self.session._get.return_value = self.FakeResource(foo="bar")
|
||
|
|
||
|
ret = self.cloud.search_resources("mock_session.fake", "fake_name")
|
||
|
self.session._get.assert_called_with(self.FakeResource, "fake_name")
|
||
|
|
||
|
self.assertEqual(1, len(ret))
|
||
|
self.assertEqual(
|
||
|
self.FakeResource(foo="bar").to_dict(), ret[0].to_dict()
|
||
|
)
|
||
|
|
||
|
def test_search_resources_list(self):
|
||
|
self.session._get.side_effect = exceptions.ResourceNotFound
|
||
|
self.session._list.return_value = [self.FakeResource(foo="bar")]
|
||
|
|
||
|
ret = self.cloud.search_resources("mock_session.fake", "fake_name")
|
||
|
self.session._get.assert_called_with(self.FakeResource, "fake_name")
|
||
|
self.session._list.assert_called_with(
|
||
|
self.FakeResource, name="fake_name"
|
||
|
)
|
||
|
|
||
|
self.assertEqual(1, len(ret))
|
||
|
self.assertEqual(
|
||
|
self.FakeResource(foo="bar").to_dict(), ret[0].to_dict()
|
||
|
)
|
||
|
|
||
|
def test_search_resources_args(self):
|
||
|
self.session._get.side_effect = exceptions.ResourceNotFound
|
||
|
self.session._list.return_value = []
|
||
|
|
||
|
self.cloud.search_resources(
|
||
|
"mock_session.fake",
|
||
|
"fake_name",
|
||
|
get_args=["getarg1"],
|
||
|
get_kwargs={"getkwarg1": "1"},
|
||
|
list_args=["listarg1"],
|
||
|
list_kwargs={"listkwarg1": "1"},
|
||
|
filter1="foo",
|
||
|
)
|
||
|
self.session._get.assert_called_with(
|
||
|
self.FakeResource, "fake_name", "getarg1", getkwarg1="1"
|
||
|
)
|
||
|
self.session._list.assert_called_with(
|
||
|
self.FakeResource,
|
||
|
"listarg1",
|
||
|
listkwarg1="1",
|
||
|
name="fake_name",
|
||
|
filter1="foo",
|
||
|
)
|
||
|
|
||
|
def test_search_resources_name_empty(self):
|
||
|
self.session._list.return_value = [self.FakeResource(foo="bar")]
|
||
|
|
||
|
ret = self.cloud.search_resources("mock_session.fake", None, foo="bar")
|
||
|
self.session._get.assert_not_called()
|
||
|
self.session._list.assert_called_with(self.FakeResource, foo="bar")
|
||
|
|
||
|
self.assertEqual(1, len(ret))
|
||
|
self.assertEqual(
|
||
|
self.FakeResource(foo="bar").to_dict(), ret[0].to_dict()
|
||
|
)
|