Skip to content

Commit

Permalink
Remove Token.userid from the Python code
Browse files Browse the repository at this point in the history
This paves the way for removing it from existing DBs with a migration.
  • Loading branch information
seanh committed Feb 14, 2024
1 parent 812d23a commit e147e6f
Show file tree
Hide file tree
Showing 7 changed files with 2 additions and 22 deletions.
2 changes: 0 additions & 2 deletions h/models/token.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ class Token(Base, mixins.Timestamps):

id = sqlalchemy.Column(sqlalchemy.Integer, autoincrement=True, primary_key=True)

userid = sqlalchemy.Column(sqlalchemy.UnicodeText(), nullable=False)

value = sqlalchemy.Column(sqlalchemy.UnicodeText(), nullable=False, unique=True)

#: A timestamp after which this token will no longer be considered valid.
Expand Down
4 changes: 1 addition & 3 deletions h/services/developer_token.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@ def create(self, userid):
:rtype: h.models.Token
"""
user = self.user_svc.fetch(userid)
token = models.Token(
user=user, userid=user.userid, value=self._generate_token()
)
token = models.Token(user=user, value=self._generate_token())
self.session.add(token)
return token

Expand Down
1 change: 0 additions & 1 deletion h/services/oauth/_validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,6 @@ def save_bearer_token(self, token, request, *args, **kwargs):

oauth_token = models.Token(
user=request.user,
userid=request.user.userid,
value=token["access_token"],
refresh_token=token["refresh_token"],
expires=expires,
Expand Down
9 changes: 0 additions & 9 deletions h/services/user_rename.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,6 @@ def rename(self, user, new_username):
# https://michael.merickel.org/projects/pyramid_auth_demo/auth_vs_auth.html
self._purge_auth_tickets(user)

# For OAuth tokens, only the token's value is stored by clients, so we
# can just update the userid.
self._update_tokens(old_userid, new_userid)

self._change_annotations(old_userid, new_userid)
tasks.job_queue.add_annotations_from_user.delay(
"sync_annotation",
Expand All @@ -68,11 +64,6 @@ def _purge_auth_tickets(self, user):
models.AuthTicket.user_id == user.id
).delete()

def _update_tokens(self, old_userid, new_userid):
self.session.query(models.Token).filter(
models.Token.userid == old_userid
).update({"userid": new_userid}, synchronize_session="fetch")

def _change_annotations(self, old_userid, new_userid):
annotations = self._fetch_annotations(old_userid)

Expand Down
2 changes: 0 additions & 2 deletions tests/common/factories/token.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class Meta:
sqlalchemy_session_persistence = "flush"

user = factory.SubFactory(User)
userid = factory.LazyAttribute(lambda developer_token: developer_token.user.userid)
value = factory.LazyAttribute(
lambda _: (DEVELOPER_TOKEN_PREFIX + security.token_urlsafe())
)
Expand All @@ -29,7 +28,6 @@ class Meta:
sqlalchemy_session_persistence = "flush"

user = factory.SubFactory(User)
userid = factory.LazyAttribute(lambda developer_token: developer_token.user.userid)
value = factory.LazyAttribute(
lambda _: (ACCESS_TOKEN_PREFIX + security.token_urlsafe())
)
Expand Down
5 changes: 1 addition & 4 deletions tests/unit/h/services/developer_token_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,7 @@ def test_create_creates_new_developer_token_for_userid(

user_service.fetch.assert_called_once_with(user.userid)
assert db_session.query(models.Token).all() == [
Any.instance_of(models.Token).with_attrs(
{"userid": user.userid, "user": user}
)
Any.instance_of(models.Token).with_attrs({"user": user})
]

def test_create_returns_new_developer_token_for_userid(
Expand All @@ -54,7 +52,6 @@ def test_create_returns_new_developer_token_for_userid(

token = svc.create(user.userid)

assert token.userid == user.userid
assert token.user == user
assert token.value == "6879-secure-token"
assert token.expires is None
Expand Down
1 change: 0 additions & 1 deletion tests/unit/h/services/user_rename_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ def test_rename_updates_tokens(self, service, user, db_session, factories):
updated_token = (
db_session.query(models.Token).filter(models.Token.id == token.id).one()
)
assert updated_token.userid == user.userid
assert updated_token.user == user

@pytest.mark.usefixtures("annotations")
Expand Down

0 comments on commit e147e6f

Please sign in to comment.