Fixed/added unit tests...more to come
This commit is contained in:
parent
1dd058eb4c
commit
4cd6aa2515
@ -21,6 +21,8 @@ import falcon
|
|||||||
|
|
||||||
from barbican.api.resources import VersionResource
|
from barbican.api.resources import VersionResource
|
||||||
from barbican.api.resources import TenantsResource, TenantResource
|
from barbican.api.resources import TenantsResource, TenantResource
|
||||||
|
from barbican.api.resources import CSRsResource, CSRResource
|
||||||
|
from barbican.api.resources import CertificatesResource, CertificateResource
|
||||||
# TBD: from barbican.api.resources import SecretsResource, SecretResource
|
# TBD: from barbican.api.resources import SecretsResource, SecretResource
|
||||||
|
|
||||||
# Resources
|
# Resources
|
||||||
@ -31,7 +33,7 @@ TENANT = TenantResource()
|
|||||||
# TBD: SECRET = SecretResource()
|
# TBD: SECRET = SecretResource()
|
||||||
CSRS = CSRsResource()
|
CSRS = CSRsResource()
|
||||||
CSR = CSRResource()
|
CSR = CSRResource()
|
||||||
CERTS = CertifcatesResource()
|
CERTS = CertificatesResource()
|
||||||
CERT = CertificateResource()
|
CERT = CertificateResource()
|
||||||
|
|
||||||
# Routing
|
# Routing
|
||||||
|
@ -4,8 +4,8 @@ import logging
|
|||||||
|
|
||||||
from barbican.version import __version__
|
from barbican.version import __version__
|
||||||
from barbican.api import ApiResource, load_body, abort
|
from barbican.api import ApiResource, load_body, abort
|
||||||
from barbican.model.models import Tenant, States
|
from barbican.model.models import Tenant, States, CSR, Certificate
|
||||||
from barbican.model.repositories import TenantRepo
|
from barbican.model.repositories import TenantRepo, CSRRepo, CertificateRepo
|
||||||
from barbican.queue.resources import QueueResource, StartCSRMessage
|
from barbican.queue.resources import QueueResource, StartCSRMessage
|
||||||
from barbican.common import config
|
from barbican.common import config
|
||||||
|
|
||||||
|
@ -415,3 +415,51 @@ class TenantRepo(BaseRepo):
|
|||||||
def _do_validate(self, values):
|
def _do_validate(self, values):
|
||||||
"""Sub-class hook: validate values."""
|
"""Sub-class hook: validate values."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CSRRepo(BaseRepo):
|
||||||
|
"""Repository for the CSR entity."""
|
||||||
|
|
||||||
|
def _do_entity_name(self):
|
||||||
|
"""Sub-class hook: return entity name, such as for debugging."""
|
||||||
|
return "CSR"
|
||||||
|
|
||||||
|
def _do_create_instance(self):
|
||||||
|
return models.CSR()
|
||||||
|
|
||||||
|
def _do_build_query_by_name(self, name, session):
|
||||||
|
"""Sub-class hook: find entity by name."""
|
||||||
|
raise TypeError(_("No support for retrieving by 'name' a CSR record."))
|
||||||
|
|
||||||
|
def _do_build_get_query(self, entity_id, session):
|
||||||
|
"""Sub-class hook: build a retrieve query."""
|
||||||
|
return session.query(models.CSR)\
|
||||||
|
.filter_by(id=entity_id)
|
||||||
|
|
||||||
|
def _do_validate(self, values):
|
||||||
|
"""Sub-class hook: validate values."""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CertificateRepo(BaseRepo):
|
||||||
|
"""Repository for the Certificate entity."""
|
||||||
|
|
||||||
|
def _do_entity_name(self):
|
||||||
|
"""Sub-class hook: return entity name, such as for debugging."""
|
||||||
|
return "Certificate"
|
||||||
|
|
||||||
|
def _do_create_instance(self):
|
||||||
|
return models.Certificate()
|
||||||
|
|
||||||
|
def _do_build_query_by_name(self, name, session):
|
||||||
|
"""Sub-class hook: find entity by name."""
|
||||||
|
raise TypeError(_("No support for retrieving by 'name' a Certificate record."))
|
||||||
|
|
||||||
|
def _do_build_get_query(self, entity_id, session):
|
||||||
|
"""Sub-class hook: build a retrieve query."""
|
||||||
|
return session.query(models.Certificate)\
|
||||||
|
.filter_by(id=entity_id)
|
||||||
|
|
||||||
|
def _do_validate(self, values):
|
||||||
|
"""Sub-class hook: validate values."""
|
||||||
|
pass
|
||||||
|
@ -19,6 +19,7 @@ Queue objects for Cloudkeep's Barbican
|
|||||||
|
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
from barbican.common import config
|
from barbican.common import config
|
||||||
|
from barbican.openstack.common.gettextutils import _
|
||||||
|
|
||||||
queue_opts = [
|
queue_opts = [
|
||||||
cfg.StrOpt('queue_api', default='barbican.queue.simple',
|
cfg.StrOpt('queue_api', default='barbican.queue.simple',
|
||||||
@ -26,4 +27,4 @@ queue_opts = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
CONF.register_opts(queue_opts, group='queue')
|
CONF.register_opts(queue_opts, group='queue')
|
@ -17,12 +17,13 @@
|
|||||||
Queue Resources related objects and functions.
|
Queue Resources related objects and functions.
|
||||||
"""
|
"""
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
|
from barbican.openstack.common import importutils
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
def get_queue_api():
|
def get_queue_api():
|
||||||
return importutils.import_module(CONF.queue_api)
|
return importutils.import_module(CONF.queue.queue_api)
|
||||||
|
|
||||||
|
|
||||||
class StartCSRMessage(object):
|
class StartCSRMessage(object):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from barbican.api.resources import *
|
from barbican.api.resources import *
|
||||||
from barbican.model.models import Tenant
|
from barbican.model.models import *
|
||||||
from barbican.common import config
|
from barbican.common import config
|
||||||
|
|
||||||
from mock import MagicMock
|
from mock import MagicMock
|
||||||
@ -59,7 +59,8 @@ class WhenCreatingTenantsUsingTenantsResource(unittest.TestCase):
|
|||||||
self.resource.on_post(self.req, self.resp)
|
self.resource.on_post(self.req, self.resp)
|
||||||
|
|
||||||
self.tenant_repo.find_by_name.assert_called_once_with(name=self.username, suppress_exception=True)
|
self.tenant_repo.find_by_name.assert_called_once_with(name=self.username, suppress_exception=True)
|
||||||
# TBD: Make this work: self.tenant_repo.create_from.assert_called_once_with(unittest.mock.ANY)
|
args, kwargs = self.tenant_repo.create_from.call_args
|
||||||
|
assert isinstance(args[0], Tenant)
|
||||||
|
|
||||||
def test_should_throw_exception_for_tenants_that_exist(self):
|
def test_should_throw_exception_for_tenants_that_exist(self):
|
||||||
self.tenant_repo.find_by_name.return_value = Tenant()
|
self.tenant_repo.find_by_name.return_value = Tenant()
|
||||||
@ -110,5 +111,74 @@ class WhenGettingOrDeletingTenantUsingTenantResource(unittest.TestCase):
|
|||||||
self.resource.on_delete(self.req, self.resp, self.tenant.id)
|
self.resource.on_delete(self.req, self.resp, self.tenant.id)
|
||||||
|
|
||||||
|
|
||||||
|
class WhenCreatingCSRsUsingTenantsResource(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.requestor = 'requestor1234'
|
||||||
|
self.tenant_id = 'tenant1234'
|
||||||
|
|
||||||
|
self.csr_repo = MagicMock()
|
||||||
|
self.csr_repo.create_from.return_value = None
|
||||||
|
|
||||||
|
self.queue_resource = MagicMock()
|
||||||
|
self.queue_resource.send.return_value = None
|
||||||
|
|
||||||
|
self.stream = MagicMock()
|
||||||
|
self.stream.read.return_value = u'{ "requestor" : "%s" }' % self.requestor
|
||||||
|
|
||||||
|
self.req = MagicMock()
|
||||||
|
self.req.stream = self.stream
|
||||||
|
|
||||||
|
self.resp = MagicMock()
|
||||||
|
self.resource = CSRsResource(self.csr_repo, self.queue_resource)
|
||||||
|
|
||||||
|
def test_should_add_new_csr(self):
|
||||||
|
self.resource.on_post(self.req, self.resp, self.tenant_id)
|
||||||
|
|
||||||
|
args, kwargs = self.csr_repo.create_from.call_args
|
||||||
|
assert isinstance(args[0], CSR)
|
||||||
|
|
||||||
|
|
||||||
|
class WhenGettingOrDeletingCSRUsingCSRResource(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.tenant_id = 'tenant1234'
|
||||||
|
self.requestor = 'requestor1234'
|
||||||
|
self.csr = CSR()
|
||||||
|
self.csr.id = "id1"
|
||||||
|
self.csr.requestor = self.requestor
|
||||||
|
|
||||||
|
self.csr_repo = MagicMock()
|
||||||
|
self.csr_repo.get.return_value = self.csr
|
||||||
|
self.csr_repo.delete_entity.return_value = None
|
||||||
|
|
||||||
|
self.req = MagicMock()
|
||||||
|
self.resp = MagicMock()
|
||||||
|
self.resource = CSRResource(self.csr_repo)
|
||||||
|
|
||||||
|
def test_should_get_csr(self):
|
||||||
|
self.resource.on_get(self.req, self.resp, self.tenant_id, self.csr.id)
|
||||||
|
|
||||||
|
self.csr_repo.get.assert_called_once_with(entity_id=self.csr.id)
|
||||||
|
|
||||||
|
def test_should_delete_csr(self):
|
||||||
|
self.resource.on_delete(self.req, self.resp, self.tenant_id, self.csr.id)
|
||||||
|
|
||||||
|
self.csr_repo.get.assert_called_once_with(entity_id=self.csr.id)
|
||||||
|
self.csr_repo.delete_entity.assert_called_once_with(self.csr)
|
||||||
|
|
||||||
|
def test_should_throw_exception_for_get_when_csr_not_found(self):
|
||||||
|
self.csr_repo.get.side_effect = exception.NotFound("Test not found exception")
|
||||||
|
|
||||||
|
with self.assertRaises(exception.NotFound):
|
||||||
|
self.resource.on_get(self.req, self.resp, self.tenant_id, self.csr.id)
|
||||||
|
|
||||||
|
def test_should_throw_exception_for_delete_when_csr_not_found(self):
|
||||||
|
self.csr_repo.get.side_effect = exception.NotFound("Test not found exception")
|
||||||
|
|
||||||
|
with self.assertRaises(exception.NotFound):
|
||||||
|
self.resource.on_delete(self.req, self.resp, self.tenant_id, self.csr.id)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
@ -19,6 +19,7 @@ Worker objects for Cloudkeep's Barbican
|
|||||||
|
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
from barbican.common import config
|
from barbican.common import config
|
||||||
|
from barbican.openstack.common.gettextutils import _
|
||||||
|
|
||||||
worker_opts = [
|
worker_opts = [
|
||||||
cfg.StrOpt('worker_api', default='barbican.worker.simple',
|
cfg.StrOpt('worker_api', default='barbican.worker.simple',
|
||||||
|
@ -17,12 +17,13 @@
|
|||||||
Queue Resources related objects and functions.
|
Queue Resources related objects and functions.
|
||||||
"""
|
"""
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
|
from barbican.openstack.common import importutils
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
def get_worker_api():
|
def get_worker_api():
|
||||||
return importutils.import_module(CONF.worker_api)
|
return importutils.import_module(CONF.worker.worker_api)
|
||||||
|
|
||||||
class WorkerResource(object):
|
class WorkerResource(object):
|
||||||
"""Handles Queue related requests"""
|
"""Handles Queue related requests"""
|
||||||
|
@ -18,8 +18,13 @@ Simple Worker API implementation.
|
|||||||
"""
|
"""
|
||||||
from barbican.queue.resources import StartCSRMessage
|
from barbican.queue.resources import StartCSRMessage
|
||||||
|
|
||||||
|
|
||||||
class StartCSRProcessor(object):
|
class StartCSRProcessor(object):
|
||||||
print "Processing CSR with ID = ", csr_id
|
"""Process the start of CSR processing."""
|
||||||
|
|
||||||
|
def process(self, message):
|
||||||
|
print "Processing CSR with ID = ", message.csr_id
|
||||||
|
|
||||||
|
|
||||||
PROCESSES = {StartCSRMessage : StartCSRProcessor()}
|
PROCESSES = {StartCSRMessage : StartCSRProcessor()}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
|
|
||||||
# The list of modules to copy from openstack-common
|
# The list of modules to copy from openstack-common
|
||||||
modules=gettextutils,jsonutils,log,local,notifier,timeutils,uuidutils
|
modules=gettextutils,jsonutils,log,local,notifier,timeutils,uuidutils,importutils
|
||||||
|
|
||||||
# The base module to hold the copy of openstack.common
|
# The base module to hold the copy of openstack.common
|
||||||
base=barbican
|
base=barbican
|
||||||
|
Loading…
Reference in New Issue
Block a user