Skip to content

Commit

Permalink
improves bootstrap config file errors
Browse files Browse the repository at this point in the history
  • Loading branch information
advornic committed Jan 8, 2015
1 parent 926cbf3 commit c7296c1
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 6 deletions.
94 changes: 91 additions & 3 deletions test/server/test_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ def test_success(self, m_repository):
self.assertEqual(resp['content_type'], constants.CONTENT_TYPE_JSON)


class BootstrapControllerUnitTests(unittest.TestCase):
class BootstrapConfigUnitTests(unittest.TestCase):

@patch('ztpserver.controller.create_repository')
@patch('string.Template.substitute')
Expand Down Expand Up @@ -273,8 +273,96 @@ def test_config_failure(self, m_repository):
self.assertEqual(resp['body'], '')
self.assertEqual(resp['status'], constants.HTTP_STATUS_BAD_REQUEST)

@patch('ztpserver.controller.create_repository')
def test_no_config(self, m_repository):
cfg = {'return_value.read.return_value': {}}
m_repository.return_value.get_file.configure_mock(**cfg)

controller = ztpserver.controller.BootstrapController()

request = Request.blank('')
request.remote_addr = ''
resp = controller.config(request)

self.assertEqual(resp['body'], controller.DEFAULT_CONFIG)
self.assertEqual(resp['content_type'], constants.CONTENT_TYPE_JSON)

@patch('ztpserver.controller.create_repository')
def test_no_xmpp(self, m_repository):
cfg = {'return_value.read.return_value': {'logging': []}}
m_repository.return_value.get_file.configure_mock(**cfg)

controller = ztpserver.controller.BootstrapController()

request = Request.blank('')
request.remote_addr = ''
resp = controller.config(request)

self.assertEqual(resp['body'], controller.DEFAULT_CONFIG)
self.assertEqual(resp['content_type'], constants.CONTENT_TYPE_JSON)

@patch('ztpserver.controller.create_repository')
def test_no_logging(self, m_repository):
cfg = {'return_value.read.return_value': {'xmpp': {}}}
m_repository.return_value.get_file.configure_mock(**cfg)

controller = ztpserver.controller.BootstrapController()

request = Request.blank('')
request.remote_addr = ''
resp = controller.config(request)

self.assertEqual(resp['body'], controller.DEFAULT_CONFIG)
self.assertEqual(resp['content_type'], constants.CONTENT_TYPE_JSON)


@patch('ztpserver.controller.create_repository')
def test_empty_xmpp(self, m_repository):
cfg = {'return_value.read.return_value': {'logging': [],
'xmpp': None}}
m_repository.return_value.get_file.configure_mock(**cfg)

controller = ztpserver.controller.BootstrapController()

request = Request.blank('')
request.remote_addr = ''
resp = controller.config(request)

class BootstrapControllerIntegrationTests(unittest.TestCase):
self.assertEqual(resp['body'], controller.DEFAULT_CONFIG)
self.assertEqual(resp['content_type'], constants.CONTENT_TYPE_JSON)

@patch('ztpserver.controller.create_repository')
def test_empty_logging(self, m_repository):
cfg = {'return_value.read.return_value': {'logging': None,
'xmpp': {}}}
m_repository.return_value.get_file.configure_mock(**cfg)

controller = ztpserver.controller.BootstrapController()

request = Request.blank('')
request.remote_addr = ''
resp = controller.config(request)

self.assertEqual(resp['body'], controller.DEFAULT_CONFIG)
self.assertEqual(resp['content_type'], constants.CONTENT_TYPE_JSON)

@patch('ztpserver.controller.create_repository')
def test_empty_xmpp_logging(self, m_repository):
cfg = {'return_value.read.return_value': {'logging': None,
'xmpp': None}}
m_repository.return_value.get_file.configure_mock(**cfg)

controller = ztpserver.controller.BootstrapController()

request = Request.blank('')
request.remote_addr = ''
resp = controller.config(request)

self.assertEqual(resp['body'], controller.DEFAULT_CONFIG)
self.assertEqual(resp['content_type'], constants.CONTENT_TYPE_JSON)


class BootstrapUnitTests(unittest.TestCase):

def setUp(self):
self.m_repository = Mock()
Expand Down Expand Up @@ -350,6 +438,7 @@ def test_get_bootstrap_config_defaults(self):
self.assertEqual(resp.content_type, constants.CONTENT_TYPE_JSON)
self.assertEqual(json.loads(resp.body), defaultconfig)


class FilesControllerIntegrationTests(unittest.TestCase):

def tearDown(self):
Expand Down Expand Up @@ -1149,7 +1238,6 @@ def test_get_definition_w_validation_success(self, m_load_pattern,
cfg = dict()

def m_get_file(arg):
print arg
m_file_object = Mock()
if arg.endswith('.node'):
m_file_object.read.return_value = node.as_dict()
Expand Down
6 changes: 3 additions & 3 deletions ztpserver/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -712,20 +712,20 @@ def __repr__(self):
def config(self, request, **kwargs):
''' Handles GET /bootstrap/config '''

body = self.DEFAULT_CONFIG
body = self.DEFAULT_CONFIG.copy()

try:
filename = self.expand(BOOTSTRAP_CONF)
config = self.repository.get_file(filename).read(CONTENT_TYPE_YAML)
if not config:
log.warning('Bootstrap config file empty')
else:
if 'logging' in config:
if 'logging' in config and config['logging']:
body['logging'] = config['logging']
log.info('%s: syslog info included in bootstrap config' %
request.remote_addr)

if 'xmpp' in config:
if 'xmpp' in config and config['xmpp']:
body['xmpp'] = config['xmpp']
for key in ['username', 'password', 'domain']:
if key not in body['xmpp']:
Expand Down

0 comments on commit c7296c1

Please sign in to comment.