1
# Copyright 2013 Canonical Ltd. This software is licensed under the
1
# Copyright 2013-2014 Canonical Ltd. This software is licensed under the
2
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
4
"""Tests for dhcp/detect.py"""
467
467
mocked_logging.assert_called_once()
469
469
def test_update_region_controller_sets_detected_dhcp(self):
470
mocked_put = self.patch(MAASClient, 'put')
471
mocked_put.return_value = MockResponse()
470
mocked_post = self.patch(MAASClient, 'post')
471
mocked_post.return_value = MockResponse()
472
472
detected_server = factory.getRandomIPAddress()
473
473
update_region_controller(self.knowledge, "eth0", detected_server)
474
mocked_put.assert_called_once_with(
474
mocked_post.assert_called_once_with(
475
475
'api/1.0/nodegroups/%s/interfaces/eth0/' % self.knowledge[
476
476
'nodegroup_uuid'],
477
foreign_dhcp_ip=detected_server)
477
'report_foreign_dhcp', foreign_dhcp_ip=detected_server)
479
479
def test_update_region_controller_clears_detected_dhcp(self):
480
mocked_put = self.patch(MAASClient, 'put')
481
mocked_put.return_value = MockResponse()
480
mocked_post = self.patch(MAASClient, 'post')
481
mocked_post.return_value = MockResponse()
482
482
detected_server = None
483
483
update_region_controller(self.knowledge, "eth0", detected_server)
484
mocked_put.assert_called_once_with(
484
mocked_post.assert_called_once_with(
485
485
'api/1.0/nodegroups/%s/interfaces/eth0/' % self.knowledge[
486
486
'nodegroup_uuid'],
487
'report_foreign_dhcp', foreign_dhcp_ip='')
489
489
def test_update_region_controller_catches_HTTPError_in_MAASClient(self):
490
self.patch(MAASClient, 'put').side_effect = urllib2.HTTPError(
490
self.patch(MAASClient, 'post').side_effect = urllib2.HTTPError(
491
491
mock.sentinel, mock.sentinel, mock.sentinel,
492
492
mock.sentinel, mock.sentinel)
493
493
mocked_logging = self.patch(detect_module.logger, 'error')
495
495
mocked_logging.assert_called_once()
497
497
def test_update_region_controller_catches_URLError_in_MAASClient(self):
498
self.patch(MAASClient, 'put').side_effect = urllib2.URLError(
498
self.patch(MAASClient, 'post').side_effect = urllib2.URLError(
499
499
mock.sentinel.arg1)
500
500
mocked_logging = self.patch(detect_module.logger, 'error')
501
501
update_region_controller(self.knowledge, "eth0", None)
504
504
def test_update_region_controller_catches_non_OK_response(self):
505
505
mock_response = MockResponse(httplib.NOT_FOUND, "error text")
506
self.patch(MAASClient, 'put').return_value = mock_response
506
self.patch(MAASClient, 'post').return_value = mock_response
507
507
mocked_logging = self.patch(detect_module.logger, 'error')
508
508
update_region_controller(self.knowledge, "eth0", None)
509
509
mocked_logging.assert_called_once_with(