예제 #1
0
	def delete(self, database_client: DatabaseClient,
			user_identifier: str, authentication_provider: AuthenticationProvider, worker_provider: WorkerProvider) -> None:

		user_record = self.get(database_client, user_identifier)
		if user_record is None:
			raise ValueError("User '%s' does not exist" % user_identifier)
		if user_record["is_enabled"]:
			raise ValueError("User '%s' is enabled" % user_identifier)
		if worker_provider.count(database_client, owner = user_identifier) > 0:
			raise ValueError("User '%s' owns workers" % user_identifier)

		authentication_provider.remove_password(database_client, user_identifier)
		for token in authentication_provider.get_token_list(database_client, user_identifier):
			authentication_provider.delete_token(database_client, user_identifier, token["identifier"])
		database_client.delete_one(self.table, { "identifier": user_identifier })
예제 #2
0
def test_password_success():
    """ Test password operations succeed in a normal situation """

    database_client_instance = MemoryDatabaseClient()
    date_time_provider_instance = FakeDateTimeProvider()
    provider = AuthenticationProvider(date_time_provider_instance)

    user = "******"
    first_secret = "first"
    second_secret = "second"
    wrong_secret = "wrong"

    assert provider.authenticate_with_password(database_client_instance, user,
                                               first_secret) is False
    assert provider.authenticate_with_password(database_client_instance, user,
                                               second_secret) is False
    assert provider.authenticate_with_password(database_client_instance, user,
                                               wrong_secret) is False

    provider.set_password(database_client_instance, user, first_secret)
    assert provider.authenticate_with_password(database_client_instance, user,
                                               first_secret) is True
    assert provider.authenticate_with_password(database_client_instance, user,
                                               second_secret) is False
    assert provider.authenticate_with_password(database_client_instance, user,
                                               wrong_secret) is False

    provider.set_password(database_client_instance, user, second_secret)
    assert provider.authenticate_with_password(database_client_instance, user,
                                               first_secret) is False
    assert provider.authenticate_with_password(database_client_instance, user,
                                               second_secret) is True
    assert provider.authenticate_with_password(database_client_instance, user,
                                               wrong_secret) is False

    provider.remove_password(database_client_instance, user)
    assert provider.authenticate_with_password(database_client_instance, user,
                                               first_secret) is False
    assert provider.authenticate_with_password(database_client_instance, user,
                                               second_secret) is False
    assert provider.authenticate_with_password(database_client_instance, user,
                                               wrong_secret) is False