100 lines
3.6 KiB
Python
100 lines
3.6 KiB
Python
# Copyright (c) 2016 Red Hat, Inc.
|
|
# 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.
|
|
|
|
from unittest import mock
|
|
|
|
import ddt
|
|
|
|
from manila.api.openstack import api_version_request as api_version
|
|
from manila.api.views import share_accesses
|
|
from manila.share import api
|
|
from manila import test
|
|
from manila.tests.api import fakes
|
|
|
|
|
|
@ddt.ddt
|
|
class ViewBuilderTestCase(test.TestCase):
|
|
|
|
def setUp(self):
|
|
super(ViewBuilderTestCase, self).setUp()
|
|
self.builder = share_accesses.ViewBuilder()
|
|
self.fake_access = {
|
|
'id': 'fakeaccessid',
|
|
'share_id': 'fakeshareid',
|
|
'access_level': 'fakeaccesslevel',
|
|
'access_to': 'fakeacccessto',
|
|
'access_type': 'fakeaccesstype',
|
|
'state': 'fakeaccessstate',
|
|
'access_key': 'fakeaccesskey',
|
|
'created_at': 'fakecreated_at',
|
|
'updated_at': 'fakeupdated_at',
|
|
'metadata': {},
|
|
}
|
|
self.fake_share = {
|
|
'access_rules_status': self.fake_access['state'],
|
|
}
|
|
|
|
def test_collection_name(self):
|
|
self.assertEqual('share_accesses', self.builder._collection_name)
|
|
|
|
@ddt.data("2.20", "2.21", "2.33", "2.45")
|
|
def test_view(self, version):
|
|
req = fakes.HTTPRequest.blank('/shares', version=version)
|
|
self.mock_object(api.API, 'get',
|
|
mock.Mock(return_value=self.fake_share))
|
|
|
|
result = self.builder.view(req, self.fake_access)
|
|
self._delete_unsupport_key(version, True)
|
|
|
|
self.assertEqual({'access': self.fake_access}, result)
|
|
|
|
@ddt.data("2.20", "2.21", "2.33", "2.45")
|
|
def test_summary_view(self, version):
|
|
req = fakes.HTTPRequest.blank('/shares', version=version)
|
|
self.mock_object(api.API, 'get',
|
|
mock.Mock(return_value=self.fake_share))
|
|
|
|
result = self.builder.summary_view(req, self.fake_access)
|
|
self._delete_unsupport_key(version)
|
|
|
|
self.assertEqual({'access': self.fake_access}, result)
|
|
|
|
@ddt.data("2.20", "2.21", "2.33", "2.45")
|
|
def test_list_view(self, version):
|
|
req = fakes.HTTPRequest.blank('/shares', version=version)
|
|
self.mock_object(api.API, 'get',
|
|
mock.Mock(return_value=self.fake_share))
|
|
accesses = [self.fake_access, ]
|
|
|
|
result = self.builder.list_view(req, accesses)
|
|
self._delete_unsupport_key(version)
|
|
|
|
self.assertEqual({'access_list': accesses}, result)
|
|
|
|
def _delete_unsupport_key(self, version, support_share_id=False):
|
|
if (api_version.APIVersionRequest(version) <
|
|
api_version.APIVersionRequest("2.21")):
|
|
del self.fake_access['access_key']
|
|
|
|
if (api_version.APIVersionRequest(version) <
|
|
api_version.APIVersionRequest("2.33")):
|
|
del self.fake_access['created_at']
|
|
del self.fake_access['updated_at']
|
|
if (api_version.APIVersionRequest(version) <
|
|
api_version.APIVersionRequest("2.45")):
|
|
del self.fake_access['metadata']
|
|
if not support_share_id:
|
|
del self.fake_access['share_id']
|