Skip to content

Commit 0dfb6f7

Browse files
authored
Add useragent in login queries (#891)
* Update OAuth2 test to expect MissingTokenError Changed the OAuth2 login test to assert that MissingTokenError is raised instead of LoginError, reflecting the expected exception from oauthlib when credentials are invalid. * Add useragent in login query
1 parent 3ffd26b commit 0dfb6f7

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

test/test_wbi_login.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import unittest
44

55
import pytest
6+
from oauthlib.oauth2 import MissingTokenError
67

78
from wikibaseintegrator import wbi_login
89
from wikibaseintegrator.wbi_helpers import mediawiki_api_call_helper
@@ -61,7 +62,7 @@ def test_oauth1_access():
6162

6263

6364
def test_oauth2():
64-
with unittest.TestCase().assertRaises(LoginError):
65+
with pytest.raises((MissingTokenError, LoginError)):
6566
login = wbi_login.OAuth2(consumer_token='wrong', consumer_secret='wrong')
6667
login.generate_edit_credentials()
6768

wikibaseintegrator/datatypes/string.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def set_value(self, value: Optional[str] = None):
2424
assert isinstance(value, str) or value is None, f"Expected str, found {type(value)} ({value})"
2525

2626
if value and ('\n' in value or '\r' in value):
27-
raise ValueError("String value must not contain new ine character")
27+
raise ValueError("String value must not contain new line character")
2828

2929
if value:
3030
self.mainsnak.datavalue = {

wikibaseintegrator/wbi_login.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None, m
211211
"""
212212

213213
mediawiki_api_url = str(mediawiki_api_url or config['MEDIAWIKI_API_URL'])
214+
user_agent = user_agent or (str(config['USER_AGENT']) if config['USER_AGENT'] is not None else None)
214215
session = Session()
215216

216217
params_login = {
@@ -220,8 +221,12 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None, m
220221
'format': 'json'
221222
}
222223

224+
headers = {
225+
'User-Agent': get_user_agent(user_agent)
226+
}
227+
223228
# get login token
224-
login_token = session.post(mediawiki_api_url, data=params_login).json()['query']['tokens']['logintoken']
229+
login_token = session.post(mediawiki_api_url, data=params_login, headers=headers).json()['query']['tokens']['logintoken']
225230

226231
params = {
227232
'action': 'login',
@@ -231,7 +236,7 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None, m
231236
'format': 'json'
232237
}
233238

234-
login_result = session.post(mediawiki_api_url, data=params).json()
239+
login_result = session.post(mediawiki_api_url, data=params, headers=headers).json()
235240

236241
if 'login' in login_result and login_result['login']['result'] == 'Success':
237242
log.info("Successfully logged in as %s", login_result['login']['lgusername'])
@@ -260,6 +265,7 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None, m
260265
"""
261266

262267
mediawiki_api_url = str(mediawiki_api_url or config['MEDIAWIKI_API_URL'])
268+
user_agent = user_agent or (str(config['USER_AGENT']) if config['USER_AGENT'] is not None else None)
263269
session = Session()
264270

265271
params_login = {
@@ -269,8 +275,12 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None, m
269275
'format': 'json'
270276
}
271277

278+
headers = {
279+
'User-Agent': get_user_agent(user_agent)
280+
}
281+
272282
# get login token
273-
login_token = session.post(mediawiki_api_url, data=params_login).json()['query']['tokens']['logintoken']
283+
login_token = session.post(mediawiki_api_url, data=params_login, headers=headers).json()['query']['tokens']['logintoken']
274284

275285
params = {
276286
'action': 'clientlogin',
@@ -281,7 +291,7 @@ def __init__(self, user: Optional[str] = None, password: Optional[str] = None, m
281291
'format': 'json'
282292
}
283293

284-
login_result = session.post(mediawiki_api_url, data=params).json()
294+
login_result = session.post(mediawiki_api_url, data=params, headers=headers).json()
285295

286296
log.debug(login_result)
287297

0 commit comments

Comments
 (0)