Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions lkr/auth_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -375,11 +375,18 @@ def set_token(
datetime.fromisoformat(expires_at) + timedelta(days=30)
).isoformat()
if self.from_db and new_token:
if new_token.refresh_token:
self.refresh_token = new_token.refresh_token
self.refresh_expires_at = refresh_expires_at
self.access_token = new_token.access_token or self.access_token
self.token_type = new_token.token_type or self.token_type
connection.execute(
"UPDATE auth SET access_token = ?, token_type = ?, expires_at = ? WHERE instance_name = ?",
"UPDATE auth SET access_token = ?, refresh_token = ?, refresh_expires_at = ?, token_type = ?, expires_at = ? WHERE instance_name = ?",
(
new_token.access_token,
new_token.token_type,
self.access_token,
self.refresh_token,
self.refresh_expires_at,
self.token_type,
expires_at,
self.instance_name,
),
Expand Down
8 changes: 6 additions & 2 deletions tests/test_oauth_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,17 +96,21 @@ def test_set_token_refreshes_lookedup_account(temp_db):

# Refresh the token
new_token = AccessToken(
access_token="token-refreshed", token_type="Bearer", expires_in=3600
access_token="token-refreshed",
refresh_token="refresh-target-new",
token_type="Bearer",
expires_in=3600,
)
curr.set_token(auth_service.conn, new_token=new_token, commit=True)

# Verify that target-inst was updated
conn = sqlite3.connect(temp_db)
conn.row_factory = sqlite3.Row
row = conn.execute(
"SELECT access_token, current_instance FROM auth WHERE instance_name = 'target-inst'"
"SELECT access_token, refresh_token, current_instance FROM auth WHERE instance_name = 'target-inst'"
).fetchone()
assert row["access_token"] == "token-refreshed"
assert row["refresh_token"] == "refresh-target-new"
assert row["current_instance"] == 0 # Still not active!

# Verify that active-inst was NOT touched
Expand Down
Loading