def test_dunder_resolve_slot_gets_list_of_slots_the_slot_data(self, ): lib = unittest.mock.MagicMock() with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib): try: out = mut.RSAPrivateToken(token=unittest.mock.sentinel.TOKEN2) except LookupError: pass lib.getSlotList.assert_called_once()
def setUp(self, ): self.slot = 0 self.pin = unittest.mock.sentinel.PIN try: os.environ['PYKCS11LIB'] except KeyError: os.environ['PYKCS11LIB'] = PyKCSS11_SOLIB self.out = mut.RSAPrivateToken(slot=self.slot)
def test_class_accepts_zero_as_valid_slot(self, ): with unittest.mock.patch('PyKCS11.PyKCS11Lib' ) as x,\ unittest.mock.patch.object(mut.RSAPrivateToken,'_resolve_slot', return_value=unittest.mock.sentinel.SLOT ) as x: out = mut.RSAPrivateToken(slot=0) self.assertEqual(out.slot, 0) x.assert_not_called()
def test_dunder_resolve_slot_gets_token_info_from_all_slots_the_slot_data( self, ): avail_slots = list(range(10)) lib = unittest.mock.MagicMock() lib.get_tokeninfo = unittest.mock.MagicMock(return_value={}) lib.getSlotList = unittest.mock.MagicMock(return_value=avail_slots) with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib): try: out = mut.RSAPrivateToken( token={'x': unittest.mock.sentinel.TOKEN2}) except LookupError: pass lib.get_tokeninfo.assert_has_calls( [unittest.mock.call(s) for s in avail_slots])
def test_dunder_resolve_slot_choses_slot_1_0_only_the_index_zero_an_obsuce_tag( self, ): slot_data = [{'xyzzy': 1}, {'serialnr': '123', 'manufacturer': 'acme'}] avail_slots = range(len(slot_data)) lib = unittest.mock.MagicMock() lib.getSlotList = unittest.mock.MagicMock(return_value=avail_slots) lib.get_tokeninfo = unittest.mock.MagicMock(side_effect=slot_data) with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib): out = mut.RSAPrivateToken(token={'xyzzy': 1}) lib.get_tokeninfo.assert_has_calls( [unittest.mock.call(s) for s in avail_slots]) self.assertEqual(out.slot, 0)
def test_dunder_resolve_slot_raises_if_there_are_No_matches(self, ): slot_data = [{ 'serialnr': '456', 'manufacturer': 'acme' }, { 'serialnr': '456', 'manufacturer': 'acme' }] avail_slots = range(len(slot_data)) lib = unittest.mock.MagicMock() lib.getSlotList = unittest.mock.MagicMock(return_value=avail_slots) lib.get_tokeninfo = unittest.mock.MagicMock(side_effect=slot_data) with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib): with self.assertRaises(mut.NoMatchingTokens): out = mut.RSAPrivateToken(token={ 'serialnr': '12', 'manufacturer': 'acme' }, )
def test_class_accepts_a_token_argument_to_match_info_against(self, ): with unittest.mock.patch('PyKCS11.PyKCS11Lib' ) as x,\ unittest.mock.patch.object(mut.RSAPrivateToken, '_resolve_slot', return_value=unittest.mock.sentinel.SLOTX ): out = mut.RSAPrivateToken(token=unittest.mock.sentinel.TOKEN1) self.assertEqual(out.slot, unittest.mock.sentinel.SLOTX)
def test_class_creates_its_own_libary_handle(self, ): with unittest.mock.patch('PyKCS11.PyKCS11Lib') as x: out = mut.RSAPrivateToken(slot=0) x.assert_called_once()
def test_class_accepts_a_pin_for_unlocking_thekey(self, ): with unittest.mock.patch('PyKCS11.PyKCS11Lib'): out = mut.RSAPrivateToken(pin=unittest.mock.sentinel.PIN, slot=0) self.assertEqual(out.pin, unittest.mock.sentinel.PIN)
def test_class_accept_alternate_lokup_key_for_provkey(self, ): with unittest.mock.patch('PyKCS11.PyKCS11Lib'): out = mut.RSAPrivateToken(key=unittest.mock.sentinel.KEY, slot=0) self.assertEqual(out.key, unittest.mock.sentinel.KEY)
def test_class_default_key_index_is_zero(self, ): with unittest.mock.patch('PyKCS11.PyKCS11Lib'): out = mut.RSAPrivateToken(slot=unittest.mock.sentinel.SLOT) self.assertEqual(out.key, 0)
def test_class_accepts_a_slot(self, ): with unittest.mock.patch('PyKCS11.PyKCS11Lib'): out = mut.RSAPrivateToken(slot=unittest.mock.sentinel.SLOT) self.assertEqual(out.slot, unittest.mock.sentinel.SLOT)
def test_class_ctor_loads_the_wrapped_library(self, ): lib = unittest.mock.MagicMock() with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib) as x: out = mut.RSAPrivateToken(slot=0) lib.load.assert_called_once()