Skip to content

Commit

Permalink
Sort praw.util.token_manager.SQLiteTokenManager.__init__ arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
LilSpazJoekp committed Jan 15, 2022
1 parent 8345276 commit 26997b9
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 17 deletions.
2 changes: 1 addition & 1 deletion docs/examples/use_sqlite_token_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def main():
)
return 1

refresh_token_manager = SQLiteTokenManager(DATABASE_PATH, key=sys.argv[1])
refresh_token_manager = SQLiteTokenManager(database=DATABASE_PATH, key=sys.argv[1])
reddit = praw.Reddit(
token_manager=refresh_token_manager,
user_agent="sqlite_token_manager/v0 by u/bboe",
Expand Down
17 changes: 10 additions & 7 deletions praw/util/token_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
"""
from abc import ABC, abstractmethod

from . import _deprecate_args


class BaseTokenManager(ABC):
"""An abstract class for all token managers."""
Expand Down Expand Up @@ -99,8 +101,8 @@ class SQLiteTokenManager(BaseTokenManager):
"""Provides a SQLite3 based token manager.
Unlike, :class:`.FileTokenManager`, the initial database need not be created ahead
of time, as it'll automatically be created on first use. However, initial
``refresh_tokens`` will need to be registered via :meth:`.register` prior to use.
of time, as it'll automatically be created on first use. However, initial refresh
tokens will need to be registered via :meth:`.register` prior to use.
.. warning::
Expand All @@ -109,14 +111,15 @@ class SQLiteTokenManager(BaseTokenManager):
"""

def __init__(self, database, key):
@_deprecate_args("database", "key")
def __init__(self, *, database, key):
"""Initialize a :class:`.SQLiteTokenManager` instance.
:param database: The path to the SQLite database.
:param key: The key used to locate the ``refresh_token``. This ``key`` can be
anything. You might use the ``client_id`` if you expect to have unique
``refresh_tokens`` for each ``client_id``, or you might use a Redditor's
``username`` if you're manage multiple users' authentications.
:param key: The key used to locate the refresh token. This ``key`` can be
anything. You might use the ``client_id`` if you expect to have unique a
refresh token for each ``client_id``, or you might use a redditor's
``username`` if you're managing multiple users' authentications.
"""
super().__init__()
Expand Down
18 changes: 9 additions & 9 deletions tests/unit/util/test_token_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,33 +68,33 @@ def test_pre_refresh_token_callback__reads_from_file(self):

class TestSQLiteTokenManager(UnitTest):
def test_is_registered(self):
manager = SQLiteTokenManager(":memory:", "dummy_key")
manager = SQLiteTokenManager(database=":memory:", key="dummy_key")
assert not manager.is_registered()

@pytest.mark.skipif(
sys.platform.startswith("win"), reason="this test fails on windows"
)
def test_multiple_instances(self):
with NamedTemporaryFile() as fp:
manager1 = SQLiteTokenManager(fp.name, "dummy_key1")
manager2 = SQLiteTokenManager(fp.name, "dummy_key1")
manager3 = SQLiteTokenManager(fp.name, "dummy_key2")
manager1 = SQLiteTokenManager(database=fp.name, key="dummy_key1")
manager2 = SQLiteTokenManager(database=fp.name, key="dummy_key1")
manager3 = SQLiteTokenManager(database=fp.name, key="dummy_key2")

manager1.register("dummy_value1")
assert manager2.is_registered()
assert not manager3.is_registered()

def test_post_refresh_token_callback__sets_value(self):
authorizer = DummyAuthorizer("dummy_value")
manager = SQLiteTokenManager(":memory:", "dummy_key")
manager = SQLiteTokenManager(database=":memory:", key="dummy_key")

manager.post_refresh_callback(authorizer)
assert authorizer.refresh_token is None
assert manager._get() == "dummy_value"

def test_post_refresh_token_callback__updates_value(self):
authorizer = DummyAuthorizer("dummy_value_updated")
manager = SQLiteTokenManager(":memory:", "dummy_key")
manager = SQLiteTokenManager(database=":memory:", key="dummy_key")
manager.register("dummy_value")

manager.post_refresh_callback(authorizer)
Expand All @@ -103,21 +103,21 @@ def test_post_refresh_token_callback__updates_value(self):

def test_pre_refresh_token_callback(self):
authorizer = DummyAuthorizer(None)
manager = SQLiteTokenManager(":memory:", "dummy_key")
manager = SQLiteTokenManager(database=":memory:", key="dummy_key")
manager.register("dummy_value")

manager.pre_refresh_callback(authorizer)
assert authorizer.refresh_token == "dummy_value"

def test_pre_refresh_token_callback__raises_key_error(self):
authorizer = DummyAuthorizer(None)
manager = SQLiteTokenManager(":memory:", "dummy_key")
manager = SQLiteTokenManager(database=":memory:", key="dummy_key")

with pytest.raises(KeyError):
manager.pre_refresh_callback(authorizer)

def test_register(self):
manager = SQLiteTokenManager(":memory:", "dummy_key")
manager = SQLiteTokenManager(database=":memory:", key="dummy_key")
assert manager.register("dummy_value")
assert manager.is_registered()
assert not manager.register("dummy_value2")
Expand Down

0 comments on commit 26997b9

Please sign in to comment.