~chris-gondolin/charms/trusty/keystone/ldap-fixes

« back to all changes in this revision

Viewing changes to unit_tests/test_keystone_hooks.py

  • Committer: Edward Hope-Morley
  • Date: 2016-01-08 14:33:27 UTC
  • mfrom: (196 stable.remote)
  • mto: This revision was merged to the branch mainline in revision 197.
  • Revision ID: edward.hope-morley@canonical.com-20160108143327-czj7dusywrbuqz66
sync /next

Show diffs side-by-side

added added

removed removed

Lines of Context:
60
60
    'synchronize_ca_if_changed',
61
61
    'update_nrpe_config',
62
62
    'ensure_ssl_dirs',
63
 
    'is_db_initialised',
64
63
    'is_db_ready',
65
64
    # other
66
65
    'check_call',
246
245
        configs.write = MagicMock()
247
246
        hooks.pgsql_db_changed()
248
247
 
 
248
    @patch('keystone_utils.relation_ids')
 
249
    @patch('keystone_utils.peer_retrieve')
 
250
    @patch('keystone_utils.peer_store')
249
251
    @patch('keystone_utils.log')
250
252
    @patch('keystone_utils.ensure_ssl_cert_master')
251
253
    @patch.object(hooks, 'CONFIGS')
252
254
    @patch.object(hooks, 'identity_changed')
253
255
    def test_db_changed_allowed(self, identity_changed, configs,
254
 
                                mock_ensure_ssl_cert_master,
255
 
                                mock_log):
256
 
        self.is_db_initialised.return_value = True
 
256
                                mock_ensure_ssl_cert_master, mock_log,
 
257
                                mock_peer_store,
 
258
                                mock_peer_retrieve, mock_relation_ids):
 
259
        mock_relation_ids.return_value = ['peer/0']
 
260
        peer_settings = {}
 
261
 
 
262
        def fake_peer_store(key, val):
 
263
            peer_settings[key] = val
 
264
 
 
265
        def fake_migrate():
 
266
            fake_peer_store('db-initialised', 'True')
 
267
 
 
268
        self.migrate_database.side_effect = fake_migrate
 
269
        mock_peer_store.side_effect = fake_peer_store
 
270
        mock_peer_retrieve.side_effect = lambda key: peer_settings.get(key)
 
271
 
257
272
        self.is_db_ready.return_value = True
258
273
        mock_ensure_ssl_cert_master.return_value = False
259
274
        self.relation_ids.return_value = ['identity-service:0']
268
283
            relation_id='identity-service:0',
269
284
            remote_unit='unit/0')
270
285
 
 
286
    @patch('keystone_utils.relation_ids')
271
287
    @patch('keystone_utils.log')
272
288
    @patch('keystone_utils.ensure_ssl_cert_master')
273
289
    @patch.object(hooks, 'CONFIGS')
274
290
    @patch.object(hooks, 'identity_changed')
275
291
    def test_db_changed_not_allowed(self, identity_changed, configs,
276
 
                                    mock_ensure_ssl_cert_master, mock_log):
 
292
                                    mock_ensure_ssl_cert_master, mock_log,
 
293
                                    mock_relation_ids):
 
294
        mock_relation_ids.return_value = []
277
295
        self.is_db_ready.return_value = False
278
296
        mock_ensure_ssl_cert_master.return_value = False
279
297
        self.relation_ids.return_value = ['identity-service:0']
286
304
        self.assertFalse(self.ensure_initial_admin.called)
287
305
        self.assertFalse(identity_changed.called)
288
306
 
 
307
    @patch('keystone_utils.relation_ids')
 
308
    @patch('keystone_utils.peer_retrieve')
 
309
    @patch('keystone_utils.peer_store')
289
310
    @patch('keystone_utils.log')
290
311
    @patch('keystone_utils.ensure_ssl_cert_master')
291
312
    @patch.object(hooks, 'CONFIGS')
292
313
    @patch.object(hooks, 'identity_changed')
293
314
    def test_postgresql_db_changed(self, identity_changed, configs,
294
 
                                   mock_ensure_ssl_cert_master, mock_log):
295
 
        self.is_db_initialised.return_value = True
 
315
                                   mock_ensure_ssl_cert_master, mock_log,
 
316
                                   mock_peer_store, mock_peer_retrieve,
 
317
                                   mock_relation_ids):
 
318
        mock_relation_ids.return_value = ['peer/0']
 
319
 
 
320
        peer_settings = {}
 
321
 
 
322
        def fake_peer_store(key, val):
 
323
            peer_settings[key] = val
 
324
 
 
325
        def fake_migrate():
 
326
            fake_peer_store('db-initialised', 'True')
 
327
 
 
328
        self.migrate_database.side_effect = fake_migrate
 
329
        mock_peer_store.side_effect = fake_peer_store
 
330
        mock_peer_retrieve.side_effect = lambda key: peer_settings.get(key)
 
331
 
296
332
        self.is_db_ready.return_value = True
297
333
        mock_ensure_ssl_cert_master.return_value = False
298
334
        self.relation_ids.return_value = ['identity-service:0']
307
343
            relation_id='identity-service:0',
308
344
            remote_unit='unit/0')
309
345
 
 
346
    @patch.object(hooks, 'is_db_initialised')
310
347
    @patch.object(hooks, 'git_install_requested')
311
348
    @patch('keystone_utils.log')
312
349
    @patch('keystone_utils.ensure_ssl_cert_master')
340
377
                                              mock_ensure_pki_dir_permissions,
341
378
                                              mock_ensure_ssl_dirs,
342
379
                                              mock_ensure_ssl_cert_master,
343
 
                                              mock_log, git_requested):
 
380
                                              mock_log, git_requested,
 
381
                                              mock_is_db_initialised):
344
382
        git_requested.return_value = False
345
383
        mock_is_ssl_cert_master.return_value = True
346
 
        self.is_db_initialised.return_value = True
 
384
        mock_is_db_initialised.return_value = True
347
385
        self.is_db_ready.return_value = True
348
386
        self.openstack_upgrade_available.return_value = False
349
387
        self.is_elected_leader.return_value = True
419
457
        self.assertFalse(self.ensure_initial_admin.called)
420
458
        self.assertFalse(identity_changed.called)
421
459
 
 
460
    @patch.object(hooks, 'is_db_initialised')
422
461
    @patch.object(hooks, 'git_install_requested')
423
462
    @patch('keystone_utils.log')
424
463
    @patch('keystone_utils.ensure_ssl_cert_master')
451
490
                                                   mock_ensure_pki_permissions,
452
491
                                                   mock_ensure_ssl_dirs,
453
492
                                                   mock_ensure_ssl_cert_master,
454
 
                                                   mock_log, git_requested):
 
493
                                                   mock_log, git_requested,
 
494
                                                   mock_is_db_initialised):
455
495
        git_requested.return_value = False
456
496
        mock_is_ssl_cert_master.return_value = True
457
497
        self.is_db_ready.return_value = True
458
 
        self.is_db_initialised.return_value = True
 
498
        mock_is_db_initialised.return_value = True
459
499
        self.openstack_upgrade_available.return_value = True
460
500
        self.is_elected_leader.return_value = True
461
501
        # avoid having to mock syncer
541
581
        self.assertFalse(self.do_openstack_upgrade_reexec.called)
542
582
 
543
583
    @patch.object(hooks, 'initialise_pki')
 
584
    @patch.object(hooks, 'is_db_initialised')
544
585
    @patch.object(hooks, 'git_install_requested')
545
586
    @patch.object(hooks, 'config_value_changed')
546
587
    @patch.object(hooks, 'ensure_ssl_dir')
559
600
                                                          ensure_ssl_dir,
560
601
                                                          config_value_changed,
561
602
                                                          git_requested,
 
603
                                                          mock_db_init,
562
604
                                                          mock_initialise_pki):
563
605
        ensure_ssl_cert.return_value = False
564
606
        peer_units.return_value = []
571
613
 
572
614
        self.assertFalse(self.do_openstack_upgrade_reexec.called)
573
615
 
 
616
    @patch.object(hooks, 'is_db_initialised')
574
617
    @patch('keystone_utils.log')
575
618
    @patch('keystone_utils.ensure_ssl_cert_master')
576
619
    @patch.object(hooks, 'hashlib')
577
620
    @patch.object(hooks, 'send_notifications')
578
621
    def test_identity_changed_leader(self, mock_send_notifications,
579
622
                                     mock_hashlib, mock_ensure_ssl_cert_master,
580
 
                                     mock_log):
581
 
        self.is_db_initialised.return_value = True
 
623
                                     mock_log, mock_is_db_initialised):
 
624
        mock_is_db_initialised.return_value = True
582
625
        self.is_db_ready.return_value = True
583
626
        mock_ensure_ssl_cert_master.return_value = False
584
627
        hooks.identity_changed(
782
825
        self.assertTrue(configs.write_all.called)
783
826
        self.assertFalse(mock_synchronize_ca.called)
784
827
 
 
828
    @patch.object(hooks, 'is_db_initialised')
785
829
    @patch('keystone_utils.log')
786
830
    @patch('keystone_utils.ensure_ssl_cert_master')
787
831
    @patch.object(hooks, 'identity_changed')
789
833
    def test_ha_relation_changed_clustered_leader(self, configs,
790
834
                                                  identity_changed,
791
835
                                                  mock_ensure_ssl_cert_master,
792
 
                                                  mock_log):
793
 
        self.is_db_initialised.return_value = True
 
836
                                                  mock_log,
 
837
                                                  mock_is_db_initialised):
 
838
        mock_is_db_initialised.return_value = True
794
839
        self.is_db_ready.return_value = True
795
840
        mock_ensure_ssl_cert_master.return_value = False
796
841
        self.relation_get.return_value = True
904
949
        ssh_authorized_peers.assert_called_with(
905
950
            user=self.ssh_user, group='juju_keystone',
906
951
            peer_interface='cluster', ensure_local_user=True)
907
 
        self.assertFalse(self.log.called)
 
952
        self.assertTrue(self.log.called)
908
953
        self.assertFalse(self.ensure_initial_admin.called)