File: test_common_tokenstorage.py

package info (click to toggle)
python-globus-sdk 4.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,180 kB
  • sloc: python: 35,340; sh: 37; makefile: 35
file content (99 lines) | stat: -rw-r--r-- 3,257 bytes parent folder | download
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"]