def it_passes_initialisation_configuraton_to_data_source(self, data_source): password = "******" config = {"iterations": 10} keychain = Keychain(data_source) keychain.initialise(password, config) data_source.initialise.assert_called_with(password, config)
def it_delegates_creating_items_to_the_data_source(self, data_source, item): data_source.create_item.return_value = item keychain = Keychain(data_source) assert keychain.create_item() == item data_source.create_item.assert_called_with(None)
def it_is_created_non_initialised_for_a_non_initialised_data_source( self, data_source): data_source.is_initialised.return_value = False keychain = Keychain(data_source) assert keychain.is_initialised() is False
def it_passes_initialisation_configuraton_to_data_source( self, data_source): password = "******" config = {"iterations": 10} keychain = Keychain(data_source) keychain.initialise(password, config) data_source.initialise.assert_called_with(password, config)
def it_changes_password(self, data_source): data_source.authenticate.return_value = None data_source.set_password.return_value = None keychain = Keychain(data_source) keychain.unlock("password") keychain.set_password("foobar") data_source.set_password.assert_called_with("foobar")
def it_is_iterable_as_list_of_items_when_unlocked(self, data_source): data_source.is_authenticated.return_value = True keychain = Keychain(data_source) try: iter(keychain) except TypeError: raise AssertionError("Keychain is not iterable")
def it_gets_items_by_id_from_data_source(self, data_source, item): data_source.is_initialised.return_value = True data_source.is_authenticated.return_value = True data_source.get_item_by_id.return_value = item keychain = Keychain(data_source) assert keychain[item.get_id()] == item
def it_is_initialisable_using_a_password(self, data_source): keychain = Keychain(data_source) keychain.initialise("somepassword") data_source.initialise.assert_called()
def it_delegates_saving_items_to_the_data_source(self, data_source, item): keychain = Keychain(data_source) keychain.save_item(item) data_source.save_item.assert_called_with(item)
def it_delegates_initialisation_to_the_data_source(self, data_source): keychain = Keychain(data_source) keychain.initialise("somepassword") assert data_source.initialise.called is True
def it_throws_if_setting_password_on_a_locked_keychain(self, data_source): data_source.is_authenticated.return_value = False keychain = Keychain(data_source) keychain.set_password("foobar")
def it_throws_if_gettings_items_from_a_locked_keychain(self, data_source): data_source.is_authenticated.return_value = False keychain = Keychain(data_source) keychain['ABC']
def it_passes_initialisation_data_to_create_item(self, data_source, item): keychain = Keychain(data_source) keychain.create_item('some data') data_source.create_item.assert_called_with('some data')
def it_is_unlocked_if_the_data_source_has_been_authenticated(self, data_source): data_source.is_authenticated.return_value = True keychain = Keychain(data_source) assert keychain.is_locked() is False
def it_throws_if_initialising_existing_keychain(self, data_source): data_source.is_initialised.return_value = True keychain = Keychain(data_source) keychain.initialise("somepassword")
def it_is_created_non_initialised_for_a_non_initialised_data_source(self, data_source): data_source.is_initialised.return_value = False keychain = Keychain(data_source) assert keychain.is_initialised() is False
def it_remains_uninitialised_if_not_initialised(self, data_source): data_source.is_initialised.return_value = False keychain = Keychain(data_source) assert keychain.is_initialised() is False
def it_throws_if_adding_items_to_a_locked_keychain(self, data_source): data_source.save_item.side_effect = UnauthenticatedDataSourceException keychain = Keychain(data_source) keychain.save_item({"id": "someitem_id"})
def it_unlocks_the_keychain_with_the_right_password(self, data_source): keychain = Keychain(data_source) keychain.unlock('rightpassword') data_source.authenticate.assert_called_with('rightpassword')
def it_throws_if_unlocking_with_incorrect_password(self, data_source): data_source.authenticate.side_effect = IncorrectPasswordException keychain = Keychain(data_source) keychain.unlock("wrongpassword")
def it_locks_itself_by_deauthenticating_the_data_source(self, data_source): keychain = Keychain(data_source) data_source.deauthenticate.assert_called()
def it_is_not_iterable_as_list_of_items_when_locked(self, data_source): data_source.is_authenticated.return_value = False keychain = Keychain(data_source) iter(keychain)
def it_is_unlocked_if_the_data_source_has_been_authenticated( self, data_source): data_source.is_authenticated.return_value = True keychain = Keychain(data_source) assert keychain.is_locked() is False
def it_throws_if_unlocking_uninitialized_keychain(self, data_source): data_source.is_initialised.return_value = False keychain = Keychain(data_source) keychain.unlock("somepassword")