1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
import pytest
from globus_sdk.token_storage import (
JSONTokenStorage,
MemoryTokenStorage,
SQLiteTokenStorage,
)
@pytest.fixture(params=["json", "sqlite", "memory"])
def storage(request, tmp_path):
if request.param == "json":
file = tmp_path / "mydata.json"
yield JSONTokenStorage(file)
elif request.param == "sqlite":
file = tmp_path / "mydata.db"
store = SQLiteTokenStorage(file)
yield store
store.close()
else:
yield MemoryTokenStorage()
def test_store_authorization_code_response(
storage, authorization_code_response, id_token_sub
):
storage.store_token_response(authorization_code_response)
tok_by_rs = authorization_code_response.by_resource_server
stored_data = storage.get_token_data_by_resource_server()
for resource_server in ["resource_server_1", "resource_server_2"]:
for fieldname in (
"resource_server",
"scope",
"access_token",
"refresh_token",
"expires_at_seconds",
"token_type",
):
assert tok_by_rs[resource_server][fieldname] == getattr(
stored_data[resource_server], fieldname
)
assert "identity_id" not in tok_by_rs[resource_server]
assert stored_data[resource_server].identity_id == id_token_sub
def test_store_dependent_token_response(storage, dependent_token_response):
"""
If a TokenStorage is asked to store dependent token data, it should work and
produce identity_id values of None (because there is no id_token to inspect)
"""
storage.store_token_response(dependent_token_response)
dep_tok_by_rs = dependent_token_response.by_resource_server
stored_data = storage.get_token_data_by_resource_server()
for resource_server in ["resource_server_1", "resource_server_2"]:
for fieldname in (
"resource_server",
"scope",
"access_token",
"refresh_token",
"expires_at_seconds",
"token_type",
):
assert dep_tok_by_rs[resource_server][fieldname] == getattr(
stored_data[resource_server], fieldname
)
assert stored_data[resource_server].identity_id is None
assert "identity_id" not in dep_tok_by_rs[resource_server]
def test_store_refresh_token_response(storage, refresh_token_response):
"""
If a TokenStorage is asked to store refresh token data, it should work and
produce identity_id values of None (because there is no id_token to inspect)
"""
storage.store_token_response(refresh_token_response)
refresh_tok_by_rs = refresh_token_response.by_resource_server
stored_data = storage.get_token_data_by_resource_server()
for fieldname in (
"resource_server",
"scope",
"access_token",
"refresh_token",
"expires_at_seconds",
"token_type",
):
assert refresh_tok_by_rs["resource_server_1"][fieldname] == getattr(
stored_data["resource_server_1"], fieldname
)
assert stored_data["resource_server_1"].identity_id is None
assert "identity_id" not in refresh_tok_by_rs["resource_server_1"]
|