05773402b7
This CR updates the tests to check for existing project quotas and uses that count when validating the project quota paging tests. Change-Id: Ic9e58207207396239280f29b6874fb503fd5195b
189 lines
7.6 KiB
Python
189 lines
7.6 KiB
Python
# Copyright (c) 2015 Cisco Systems
|
|
#
|
|
# 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 testtools import testcase
|
|
|
|
from functionaltests.api import base
|
|
from functionaltests.api.v1.behaviors import quota_behaviors
|
|
from functionaltests.api.v1.models import quota_models
|
|
from functionaltests.common import config
|
|
|
|
|
|
CONF = config.get_config()
|
|
service_admin = CONF.identity.service_admin
|
|
|
|
|
|
def get_set_project_quotas_request():
|
|
return {"project_quotas":
|
|
{"secrets": 50,
|
|
"orders": 10,
|
|
"containers": 20}}
|
|
|
|
|
|
class QuotasTestCase(base.TestCase):
|
|
|
|
def setUp(self):
|
|
super(QuotasTestCase, self).setUp()
|
|
self.behaviors = quota_behaviors.QuotaBehaviors(self.client)
|
|
self.project_id = self.behaviors.get_project_id_from_name(
|
|
CONF.identity.username)
|
|
|
|
def tearDown(self):
|
|
self.behaviors.delete_all_created_quotas()
|
|
super(QuotasTestCase, self).tearDown()
|
|
|
|
def test_get_quotas_with_defaults(self):
|
|
"""Get effective quota information for own project"""
|
|
|
|
resp = self.behaviors.get_quotas()
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
self.assertEqual(CONF.quotas.quota_secrets,
|
|
resp.model.quotas.secrets)
|
|
self.assertEqual(CONF.quotas.quota_orders,
|
|
resp.model.quotas.orders)
|
|
self.assertEqual(CONF.quotas.quota_containers,
|
|
resp.model.quotas.containers)
|
|
self.assertEqual(CONF.quotas.quota_consumers,
|
|
resp.model.quotas.consumers)
|
|
self.assertEqual(CONF.quotas.quota_cas,
|
|
resp.model.quotas.cas)
|
|
|
|
def test_get_project_quotas_by_project_id(self):
|
|
"""Get project quota information for specific project"""
|
|
|
|
request_model = quota_models.ProjectQuotaRequestModel(
|
|
**get_set_project_quotas_request())
|
|
resp = self.behaviors.set_project_quotas('44444',
|
|
request_model,
|
|
user_name=service_admin)
|
|
self.assertEqual(204, resp.status_code)
|
|
|
|
resp = self.behaviors.get_project_quotas('44444',
|
|
user_name=service_admin)
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
self.assertEqual(50, resp.model.project_quotas.secrets)
|
|
self.assertEqual(10, resp.model.project_quotas.orders)
|
|
self.assertEqual(20, resp.model.project_quotas.containers)
|
|
self.assertIsNone(resp.model.project_quotas.consumers)
|
|
self.assertIsNone(resp.model.project_quotas.cas)
|
|
|
|
def test_get_project_quotas_by_project_id_not_found(self):
|
|
"""Get project quota information for specific project"""
|
|
resp = self.behaviors.get_project_quotas('dummy',
|
|
user_name=service_admin)
|
|
self.assertEqual(404, resp.status_code)
|
|
|
|
def test_delete_project_quotas(self):
|
|
"""Delete project quota information"""
|
|
request_model = quota_models.ProjectQuotaRequestModel(
|
|
**get_set_project_quotas_request())
|
|
resp = self.behaviors.set_project_quotas('55555',
|
|
request_model,
|
|
user_name=service_admin)
|
|
self.assertEqual(204, resp.status_code)
|
|
|
|
resp = self.behaviors.delete_project_quotas('55555',
|
|
user_name=service_admin)
|
|
self.assertEqual(204, resp.status_code)
|
|
|
|
def test_delete_project_quotas_not_found(self):
|
|
"""Get project quota information"""
|
|
resp = self.behaviors.delete_project_quotas('dummy',
|
|
user_name=service_admin)
|
|
self.assertEqual(404, resp.status_code)
|
|
|
|
|
|
@testcase.attr('no_parallel')
|
|
class ProjectQuotasPagingTestCase(base.PagingTestCase):
|
|
|
|
def setUp(self):
|
|
super(ProjectQuotasPagingTestCase, self).setUp()
|
|
self.behaviors = quota_behaviors.QuotaBehaviors(self.client)
|
|
resp, project_quotas_list, _, _ =\
|
|
self.behaviors.get_project_quotas_list(user_name=service_admin)
|
|
self.original_project_quota_count = len(project_quotas_list)
|
|
|
|
def tearDown(self):
|
|
self.behaviors.delete_all_created_quotas()
|
|
super(ProjectQuotasPagingTestCase, self).tearDown()
|
|
|
|
def create_model(self):
|
|
request_model = quota_models.ProjectQuotaRequestModel(
|
|
**get_set_project_quotas_request())
|
|
return request_model
|
|
|
|
def create_resources(self, count=0, model=None):
|
|
for x in range(0, count):
|
|
self.behaviors.set_project_quotas(str(x), model,
|
|
user_name=service_admin)
|
|
|
|
def get_resources(self, limit=10, offset=0, filter=None):
|
|
return self.behaviors.get_project_quotas_list(
|
|
limit=limit, offset=offset, user_name=service_admin)
|
|
|
|
def set_filter_field(self, unique_str, model):
|
|
"""ProjectQuotas API does not support filter """
|
|
pass
|
|
|
|
def test_get_project_quota_list_none(self):
|
|
"""Get list of all project quotas, when there are none"""
|
|
|
|
resp, project_quotas_list, _, _ =\
|
|
self.behaviors.get_project_quotas_list(user_name=service_admin)
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
self.assertEqual(self.original_project_quota_count,
|
|
len(project_quotas_list))
|
|
|
|
def test_get_project_quota_list_one(self):
|
|
"""Get list of all project quotas, when there is one"""
|
|
|
|
request_model = quota_models.ProjectQuotaRequestModel(
|
|
**get_set_project_quotas_request())
|
|
resp = self.behaviors.set_project_quotas('11111',
|
|
request_model,
|
|
user_name=service_admin)
|
|
self.assertEqual(204, resp.status_code)
|
|
|
|
resp, project_quotas_list, _, _ =\
|
|
self.behaviors.get_project_quotas_list(user_name=service_admin)
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
self.assertEqual(self.original_project_quota_count + 1,
|
|
len(project_quotas_list))
|
|
|
|
def test_get_project_quota_list_two(self):
|
|
"""Get list of all project quotas, when there is one"""
|
|
|
|
request_model = quota_models.ProjectQuotaRequestModel(
|
|
**get_set_project_quotas_request())
|
|
resp = self.behaviors.set_project_quotas('22222',
|
|
request_model,
|
|
user_name=service_admin)
|
|
self.assertEqual(204, resp.status_code)
|
|
resp = self.behaviors.set_project_quotas('33333',
|
|
request_model,
|
|
user_name=service_admin)
|
|
self.assertEqual(204, resp.status_code)
|
|
|
|
resp, project_quotas_list, _, _ =\
|
|
self.behaviors.get_project_quotas_list(user_name=service_admin)
|
|
|
|
self.assertEqual(200, resp.status_code)
|
|
self.assertEqual(self.original_project_quota_count + 2,
|
|
len(project_quotas_list))
|