579
579
app_name = APP_NAME * 2
580
580
error_dict = {'error_type': 'Test'}
583
class RefCountingTestCase(CredentialsManagementTestCase):
584
"""Tests for the CredentialsManagement ref counting."""
587
super(RefCountingTestCase, self).setUp()
589
self.client = CredentialsManagement(timeout_func=lambda *a: None,
590
shutdown_func=lambda *a: None)
592
def _set_called(self, *args, **kwargs):
593
"""Keep track of method calls."""
594
self._called = (args, kwargs)
596
def test_ref_counting(self):
597
"""Ref counting is in place."""
598
self.assertEqual(self.client.ref_count, 0)
600
def test_find_credentials(self):
601
"""Keep proper track of on going requests."""
602
self.client.find_credentials()
604
self.assertEqual(self.client.ref_count, 1)
606
def test_clear_credentials(self):
607
"""Keep proper track of on going requests."""
608
self.client.clear_credentials()
610
self.assertEqual(self.client.ref_count, 1)
612
def test_store_credentials(self):
613
"""Keep proper track of on going requests."""
614
self.client.store_credentials(FAKED_CREDENTIALS)
616
self.assertEqual(self.client.ref_count, 1)
618
def test_register(self):
619
"""Keep proper track of on going requests."""
620
self.client.register()
622
self.assertEqual(self.client.ref_count, 1)
624
def test_login(self):
625
"""Keep proper track of on going requests."""
628
self.assertEqual(self.client.ref_count, 1)
630
def test_several_requests(self):
631
"""Requests can be nested."""
633
self.client.clear_credentials()
634
self.client.find_credentials()
635
self.client.register()
636
self.client.store_credentials(FAKED_CREDENTIALS)
638
self.assertEqual(self.client.ref_count, 5)
640
def test_credentials_found(self):
641
"""Ref counter is decreased when a signal is sent."""
642
self.client.ref_count = 3
643
self.client.CredentialsFound(FAKED_CREDENTIALS)
645
self.assertEqual(self.client.ref_count, 2)
647
def test_credentials_not_found(self):
648
"""Ref counter is decreased when a signal is sent."""
649
self.client.ref_count = 3
650
self.client.CredentialsNotFound()
652
self.assertEqual(self.client.ref_count, 2)
654
def test_credentials_cleared(self):
655
"""Ref counter is decreased when a signal is sent."""
656
self.client.ref_count = 3
657
self.client.CredentialsCleared()
659
self.assertEqual(self.client.ref_count, 2)
661
def test_credentials_stored(self):
662
"""Ref counter is decreased when a signal is sent."""
663
self.client.ref_count = 3
664
self.client.CredentialsStored()
666
self.assertEqual(self.client.ref_count, 2)
668
def test_credentials_error(self):
669
"""Ref counter is decreased when a signal is sent."""
670
self.client.ref_count = 3
671
self.client.CredentialsError({'error_type': 'test'})
673
self.assertEqual(self.client.ref_count, 2)
675
def test_authorization_denied(self):
676
"""Ref counter is decreased when a signal is sent."""
677
self.client.ref_count = 3
678
self.client.AuthorizationDenied()
680
self.assertEqual(self.client.ref_count, 2)
682
def test_credentials_found_when_ref_count_is_not_positive(self):
683
"""Ref counter is decreased when a signal is sent."""
684
self.client._ref_count = -3
685
self.client.CredentialsFound(FAKED_CREDENTIALS)
687
self.assertEqual(self.client.ref_count, 0)
688
msg = 'Attempting to decrease ref_count to a negative value (-4).'
689
self.assertTrue(self.memento.check_warning(msg))
691
def test_credentials_not_found_when_ref_count_is_not_positive(self):
692
"""Ref counter is decreased when a signal is sent."""
693
self.client._ref_count = -3
694
self.client.CredentialsNotFound()
696
self.assertEqual(self.client.ref_count, 0)
697
msg = 'Attempting to decrease ref_count to a negative value (-4).'
698
self.assertTrue(self.memento.check_warning(msg))
700
def test_credentials_cleared_when_ref_count_is_not_positive(self):
701
"""Ref counter is decreased when a signal is sent."""
702
self.client._ref_count = -3
703
self.client.CredentialsCleared()
705
self.assertEqual(self.client.ref_count, 0)
706
msg = 'Attempting to decrease ref_count to a negative value (-4).'
707
self.assertTrue(self.memento.check_warning(msg))
709
def test_credentials_stored_when_ref_count_is_not_positive(self):
710
"""Ref counter is decreased when a signal is sent."""
711
self.client._ref_count = -3
712
self.client.CredentialsStored()
714
self.assertEqual(self.client.ref_count, 0)
715
msg = 'Attempting to decrease ref_count to a negative value (-4).'
716
self.assertTrue(self.memento.check_warning(msg))
718
def test_credentials_error_when_ref_count_is_not_positive(self):
719
"""Ref counter is decreased when a signal is sent."""
720
self.client._ref_count = -3
721
self.client.CredentialsError({'error_type': 'test'})
723
self.assertEqual(self.client.ref_count, 0)
724
msg = 'Attempting to decrease ref_count to a negative value (-4).'
725
self.assertTrue(self.memento.check_warning(msg))
727
def test_autorization_denied_when_ref_count_is_not_positive(self):
728
"""Ref counter is decreased when a signal is sent."""
729
self.client._ref_count = -3
730
self.client.AuthorizationDenied()
732
self.assertEqual(self.client.ref_count, 0)
733
msg = 'Attempting to decrease ref_count to a negative value (-4).'
734
self.assertTrue(self.memento.check_warning(msg))
736
def test_on_zero_ref_count_shutdown(self):
737
"""When ref count reaches 0, queue shutdown op."""
738
self.client.timeout_func = self._set_called
739
self.client.find_credentials()
740
self.client.CredentialsFound(FAKED_CREDENTIALS)
742
self.assertEqual(self._called,
743
((TIMEOUT_INTERVAL, self.client.shutdown_func), {}))
745
def test_on_non_zero_ref_count_do_not_shutdown(self):
746
"""If ref count is not 0, do not queue shutdown op."""
747
self.client.timeout_func = self._set_called
748
self.client.find_credentials()
750
self.assertEqual(self._called, False)