senlin/senlin/tests/unit/api/openstack/v1/test_version.py

109 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.
import mock
from senlin.api.common import version_request as vr
from senlin.api.common import wsgi
from senlin.api.openstack.v1 import version
from senlin.tests.unit.api import shared
from senlin.tests.unit.common import base
class FakeRequest(wsgi.Request):
@staticmethod
def blank(*args, **kwargs):
kwargs['base_url'] = 'http://localhost/v1'
version = kwargs.pop('version', wsgi.DEFAULT_API_VERSION)
out = wsgi.Request.blank(*args, **kwargs)
out.version_request = vr.APIVersionRequest(version)
return out
class VersionControllerTest(shared.ControllerTest, base.SenlinTestCase):
def setUp(self):
super(VersionControllerTest, self).setUp()
self.controller = version.VersionController({})
def test_version(self):
req = self._get('/')
result = self.controller.version(req)
response = result['version']
self.assertEqual('1.0', response['id'])
self.assertEqual('CURRENT', response['status'])
self.assertEqual('2016-01-18T00:00:00Z', response['updated'])
expected = [{
'base': 'application/json',
'type': 'application/vnd.openstack.clustering-v1+json'
}]
self.assertEqual(expected, response['media-types'])
expected = [{
'href': '/v1',
'rel': 'self'}, {
'href': 'https://developer.openstack.org/api-ref/clustering',
'rel': 'help',
}]
self.assertEqual(expected, response['links'])
class APIVersionTest(base.SenlinTestCase):
def setUp(self):
super(APIVersionTest, self).setUp()
self.vc = version.VersionController
def test_min_api_version(self):
res = self.vc.min_api_version()
expected = vr.APIVersionRequest(self.vc._MIN_API_VERSION)
self.assertEqual(expected, res)
def test_max_api_version(self):
res = self.vc.max_api_version()
expected = vr.APIVersionRequest(self.vc._MAX_API_VERSION)
self.assertEqual(expected, res)
def test_is_supported(self):
req = mock.Mock()
req.version_request = vr.APIVersionRequest(self.vc._MIN_API_VERSION)
res = self.vc.is_supported(req)
self.assertTrue(res)
def test_is_supported_min_version(self):
req = FakeRequest.blank('/fake', version='1.1')
self.assertTrue(self.vc.is_supported(req, '1.0', '1.1'))
self.assertTrue(self.vc.is_supported(req, '1.1', '1.1'))
self.assertFalse(self.vc.is_supported(req, '1.2'))
self.assertFalse(self.vc.is_supported(req, '1.3'))
def test_is_supported_max_version(self):
req = FakeRequest.blank('/fake', version='2.5')
self.assertFalse(self.vc.is_supported(req, max_ver='2.4'))
self.assertTrue(self.vc.is_supported(req, max_ver='2.5'))
self.assertTrue(self.vc.is_supported(req, max_ver='2.6'))
def test_is_supported_min_and_max_version(self):
req = FakeRequest.blank('/fake', version='2.5')
self.assertFalse(self.vc.is_supported(req, '2.3', '2.4'))
self.assertTrue(self.vc.is_supported(req, '2.3', '2.5'))
self.assertTrue(self.vc.is_supported(req, '2.3', '2.7'))
self.assertTrue(self.vc.is_supported(req, '2.5', '2.7'))
self.assertFalse(self.vc.is_supported(req, '2.6', '2.7'))
self.assertTrue(self.vc.is_supported(req, '2.5', '2.5'))
self.assertFalse(self.vc.is_supported(req, '2.10', '2.1'))