Skip to content

Commit 494888d

Browse files
committed
Configure test suite to use OAuth token keeper microservice
Leverage an instance of the [Webex Token Keeper](https://github.com/cmlccie/webex-token-keeper) microservice to retrieve access tokens using a static URL.
1 parent c000679 commit 494888d

File tree

2 files changed

+23
-14
lines changed

2 files changed

+23
-14
lines changed

tests/api/__init__.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
import os
2626

2727
import pytest
28+
import requests
2829

2930
import webexteamssdk
30-
from tests.environment import WEBEX_TEAMS_ACCESS_TOKEN
3131
from webexteamssdk.api.access_tokens import AccessTokensAPI
3232
from webexteamssdk.api.attachment_actions import AttachmentActionsAPI
3333
from webexteamssdk.api.events import EventsAPI
@@ -47,11 +47,24 @@
4747
)
4848

4949

50+
# Constants
51+
WEBEX_TOKEN_KEEPER_URL = os.environ.get("WEBEX_TOKEN_KEEPER_URL", "")
52+
53+
5054
# Fixtures
5155

5256
@pytest.fixture(scope="session")
5357
def access_token():
54-
return WEBEX_TEAMS_ACCESS_TOKEN
58+
if WEBEX_TOKEN_KEEPER_URL:
59+
response = requests.get(WEBEX_TOKEN_KEEPER_URL)
60+
response.raise_for_status()
61+
access_token = response.json().get("access_token")
62+
else:
63+
access_token = os.environ.get(ACCESS_TOKEN_ENVIRONMENT_VARIABLE, "")
64+
65+
os.environ[ACCESS_TOKEN_ENVIRONMENT_VARIABLE] = access_token
66+
67+
return access_token
5568

5669

5770
@pytest.fixture
@@ -62,8 +75,8 @@ def unset_access_token(access_token):
6275

6376

6477
@pytest.fixture(scope="session")
65-
def api():
66-
return webexteamssdk.WebexTeamsAPI()
78+
def api(access_token):
79+
return webexteamssdk.WebexTeamsAPI(access_token=access_token)
6780

6881

6982
# Tests
@@ -89,23 +102,27 @@ def test_create_with_access_token_argument(access_token):
89102
assert isinstance(connection_object, webexteamssdk.WebexTeamsAPI)
90103

91104

105+
@pytest.mark.usefixtures("access_token")
92106
def test_default_base_url():
93107
connection_object = webexteamssdk.WebexTeamsAPI()
94108
assert connection_object.base_url == DEFAULT_BASE_URL
95109

96110

111+
@pytest.mark.usefixtures("access_token")
97112
def test_custom_base_url():
98113
custom_url = "https://custom.domain.com/v1/"
99114
connection_object = webexteamssdk.WebexTeamsAPI(base_url=custom_url)
100115
assert connection_object.base_url == custom_url
101116

102117

118+
@pytest.mark.usefixtures("access_token")
103119
def test_default_single_request_timeout():
104120
connection_object = webexteamssdk.WebexTeamsAPI()
105121
assert connection_object.single_request_timeout == \
106122
DEFAULT_SINGLE_REQUEST_TIMEOUT
107123

108124

125+
@pytest.mark.usefixtures("access_token")
109126
def test_custom_single_request_timeout():
110127
custom_timeout = 10
111128
connection_object = webexteamssdk.WebexTeamsAPI(
@@ -114,12 +131,14 @@ def test_custom_single_request_timeout():
114131
assert connection_object.single_request_timeout == custom_timeout
115132

116133

134+
@pytest.mark.usefixtures("access_token")
117135
def test_default_wait_on_rate_limit():
118136
connection_object = webexteamssdk.WebexTeamsAPI()
119137
assert connection_object.wait_on_rate_limit == \
120138
DEFAULT_WAIT_ON_RATE_LIMIT
121139

122140

141+
@pytest.mark.usefixtures("access_token")
123142
def test_non_default_wait_on_rate_limit():
124143
connection_object = webexteamssdk.WebexTeamsAPI(
125144
wait_on_rate_limit=not DEFAULT_WAIT_ON_RATE_LIMIT
@@ -129,7 +148,6 @@ def test_non_default_wait_on_rate_limit():
129148

130149

131150
# Test creation of component API objects
132-
133151
def test_access_tokens_api_object_creation(api):
134152
assert isinstance(api.access_tokens, AccessTokensAPI)
135153

tests/environment.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,6 @@
2525
import os
2626
import string
2727

28-
from webexteamssdk.config import ACCESS_TOKEN_ENVIRONMENT_VARIABLE
29-
30-
31-
WEBEX_TEAMS_ACCESS_TOKEN = os.getenv(ACCESS_TOKEN_ENVIRONMENT_VARIABLE)
32-
if WEBEX_TEAMS_ACCESS_TOKEN is None:
33-
raise RuntimeError(
34-
"You must set a {} environment variable to run the test suite"
35-
"".format(ACCESS_TOKEN_ENVIRONMENT_VARIABLE)
36-
)
3728

3829
WEBEX_TEAMS_TEST_DOMAIN = os.getenv("WEBEX_TEAMS_TEST_DOMAIN")
3930
if WEBEX_TEAMS_TEST_DOMAIN is None:

0 commit comments

Comments
 (0)