380
381
self.assertTrue(utils.is_db_ready())
382
383
@patch.object(utils, 'peer_units')
383
@patch.object(utils, 'is_elected_leader')
384
@patch.object(utils, 'oldest_peer')
385
@patch.object(utils, 'is_ssl_enabled')
386
def test_ensure_ssl_cert_master(self, mock_is_str_true, mock_oldest_peer,
387
mock_is_elected_leader, mock_peer_units):
388
self.relation_ids.return_value = ['cluster:0']
389
self.local_unit.return_value = 'unit/0'
391
mock_is_str_true.return_value = False
392
self.assertFalse(utils.ensure_ssl_cert_master())
393
self.assertFalse(self.relation_set.called)
395
mock_is_elected_leader.return_value = False
396
self.assertFalse(utils.ensure_ssl_cert_master())
397
self.assertFalse(self.relation_set.called)
399
mock_is_str_true.return_value = True
400
mock_is_elected_leader.return_value = False
401
mock_peer_units.return_value = ['unit/0']
402
self.assertFalse(utils.ensure_ssl_cert_master())
403
self.assertFalse(self.relation_set.called)
405
mock_peer_units.return_value = []
406
self.assertTrue(utils.ensure_ssl_cert_master())
407
settings = {'ssl-cert-master': 'unit/0'}
408
self.relation_set.assert_called_with(relation_id='cluster:0',
409
relation_settings=settings)
410
self.relation_set.reset_mock()
412
self.assertTrue(utils.ensure_ssl_cert_master(use_oldest_peer=True))
413
settings = {'ssl-cert-master': 'unit/0'}
414
self.relation_set.assert_called_with(relation_id='cluster:0',
415
relation_settings=settings)
416
self.relation_set.reset_mock()
418
mock_peer_units.return_value = ['unit/0']
419
self.assertFalse(utils.ensure_ssl_cert_master())
420
self.assertFalse(utils.ensure_ssl_cert_master(use_oldest_peer=True))
421
settings = {'ssl-cert-master': 'unit/0'}
422
self.relation_set.assert_called_with(relation_id='cluster:0',
423
relation_settings=settings)
424
self.relation_set.reset_mock()
384
@patch.object(utils, 'is_ssl_enabled')
385
def test_ensure_ssl_cert_master_no_ssl(self, mock_is_ssl_enabled,
387
mock_is_ssl_enabled.return_value = False
388
self.assertFalse(utils.ensure_ssl_cert_master())
389
self.assertFalse(self.relation_set.called)
391
@patch.object(utils, 'peer_units')
392
@patch.object(utils, 'is_ssl_enabled')
393
def test_ensure_ssl_cert_master_ssl_no_peers(self, mock_is_ssl_enabled,
395
def mock_rel_get(unit=None, **kwargs):
398
self.relation_get.side_effect = mock_rel_get
399
mock_is_ssl_enabled.return_value = True
400
self.relation_ids.return_value = ['cluster:0']
401
self.local_unit.return_value = 'unit/0'
402
self.related_units.return_value = []
403
mock_peer_units.return_value = []
404
# This should get ignored since we are overriding
405
self.is_ssl_cert_master.return_value = False
406
self.is_elected_leader.return_value = False
407
self.assertTrue(utils.ensure_ssl_cert_master())
408
settings = {'ssl-cert-master': 'unit/0'}
409
self.relation_set.assert_called_with(relation_id='cluster:0',
410
relation_settings=settings)
412
@patch.object(utils, 'peer_units')
413
@patch.object(utils, 'is_ssl_enabled')
414
def test_ensure_ssl_cert_master_ssl_master_no_peers(self,
417
def mock_rel_get(unit=None, **kwargs):
423
self.relation_get.side_effect = mock_rel_get
424
mock_is_ssl_enabled.return_value = True
425
self.relation_ids.return_value = ['cluster:0']
426
self.local_unit.return_value = 'unit/0'
427
self.related_units.return_value = []
428
mock_peer_units.return_value = []
429
# This should get ignored since we are overriding
430
self.is_ssl_cert_master.return_value = False
431
self.is_elected_leader.return_value = False
432
self.assertTrue(utils.ensure_ssl_cert_master())
433
settings = {'ssl-cert-master': 'unit/0'}
434
self.relation_set.assert_called_with(relation_id='cluster:0',
435
relation_settings=settings)
437
@patch.object(utils, 'peer_units')
438
@patch.object(utils, 'is_ssl_enabled')
439
def test_ensure_ssl_cert_master_ssl_not_leader(self, mock_is_ssl_enabled,
441
mock_is_ssl_enabled.return_value = True
442
self.relation_ids.return_value = ['cluster:0']
443
self.local_unit.return_value = 'unit/0'
444
mock_peer_units.return_value = ['unit/1']
445
self.is_ssl_cert_master.return_value = False
446
self.is_elected_leader.return_value = False
447
self.assertFalse(utils.ensure_ssl_cert_master())
448
self.assertFalse(self.relation_set.called)
450
@patch.object(utils, 'peer_units')
451
@patch.object(utils, 'is_ssl_enabled')
452
def test_ensure_ssl_cert_master_is_leader_new_peer(self,
455
def mock_rel_get(unit=None, **kwargs):
461
self.relation_get.side_effect = mock_rel_get
462
mock_is_ssl_enabled.return_value = True
463
self.relation_ids.return_value = ['cluster:0']
464
self.local_unit.return_value = 'unit/0'
465
mock_peer_units.return_value = ['unit/1']
466
self.related_units.return_value = ['unit/1']
467
self.is_ssl_cert_master.return_value = False
468
self.is_elected_leader.return_value = True
469
self.assertFalse(utils.ensure_ssl_cert_master())
470
settings = {'ssl-cert-master': 'unit/0'}
471
self.relation_set.assert_called_with(relation_id='cluster:0',
472
relation_settings=settings)
474
@patch.object(utils, 'peer_units')
475
@patch.object(utils, 'is_ssl_enabled')
476
def test_ensure_ssl_cert_master_is_leader_no_new_peer(self,
479
def mock_rel_get(unit=None, **kwargs):
485
self.relation_get.side_effect = mock_rel_get
486
mock_is_ssl_enabled.return_value = True
487
self.relation_ids.return_value = ['cluster:0']
488
self.local_unit.return_value = 'unit/0'
489
mock_peer_units.return_value = ['unit/1']
490
self.related_units.return_value = ['unit/1']
491
self.is_ssl_cert_master.return_value = False
492
self.is_elected_leader.return_value = True
493
self.assertFalse(utils.ensure_ssl_cert_master())
494
self.assertFalse(self.relation_set.called)
496
@patch.object(utils, 'peer_units')
497
@patch.object(utils, 'is_ssl_enabled')
498
def test_ensure_ssl_cert_master_is_leader_bad_votes(self,
503
def mock_rel_get(unit=None, **kwargs):
504
"""Returns a mix of votes."""
508
ret = 'unit/%d' % (counter[0])
512
self.relation_get.side_effect = mock_rel_get
513
mock_is_ssl_enabled.return_value = True
514
self.relation_ids.return_value = ['cluster:0']
515
self.local_unit.return_value = 'unit/0'
516
mock_peer_units.return_value = ['unit/1']
517
self.related_units.return_value = ['unit/1']
518
self.is_ssl_cert_master.return_value = False
519
self.is_elected_leader.return_value = True
520
self.assertFalse(utils.ensure_ssl_cert_master())
521
self.assertFalse(self.relation_set.called)