manila/manila/tests/api/v2/test_security_services.py

88 lines
3.0 KiB
Python

# Copyright 2018 SAP SE
#
# 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
import datetime
import ddt
from manila.api.v1 import security_service
from manila.common import constants
from manila import context
from manila import test
from manila.tests.api import fakes
def stub_security_service(self, version, id):
ss_dict = dict(
id=id,
name='security_service_%s' % str(id),
type=constants.SECURITY_SERVICES_ALLOWED_TYPES[0],
description='Fake Security Service Desc',
dns_ip='1.1.1.1',
server='fake-server',
domain='fake-domain',
user='fake-user',
password='fake-password',
status=constants.STATUS_NEW,
share_networks=[],
created_at=datetime.datetime(2017, 8, 24, 1, 1, 1, 1),
updated_at=datetime.datetime(2017, 8, 24, 1, 1, 1, 1),
project_id='fake-project'
)
if self.is_microversion_ge(version, '2.44'):
ss_dict['ou'] = 'fake-ou'
return ss_dict
@ddt.ddt
class SecurityServicesAPITest(test.TestCase):
@ddt.data(
('2.0'),
('2.43'),
('2.44'),
)
def test_index(self, version):
ss = [
stub_security_service(self, version, 1),
stub_security_service(self, version, 2),
]
ctxt = context.RequestContext('admin', 'fake', True)
request = fakes.HTTPRequest.blank('/security-services?all_tenants=1',
version=version)
request.headers['X-Openstack-Manila-Api-Version'] = version
request.environ['manila.context'] = ctxt
self.mock_object(security_service.db, 'security_service_get_all',
mock.Mock(return_value=ss))
self.mock_object(security_service.db,
'share_network_get_all_by_security_service',
mock.Mock(return_value=[]))
ss_controller = security_service.SecurityServiceController()
result = ss_controller.detail(request)
self.assertIsInstance(result, dict)
self.assertEqual(['security_services'], list(result.keys()))
self.assertIsInstance(result['security_services'], list)
self.assertEqual(2, len(result['security_services']))
self.assertIn(ss[0], result['security_services'])
ss_keys = list(result['security_services'][0].keys())
if self.is_microversion_ge(version, '2.44'):
self.assertIn('ou', ss_keys)
else:
self.assertNotIn('ou', ss_keys)