8000 completes full oauth three-legged to get access token! · jamesbrink/wp-api-python@ece11af · GitHub
[go: up one dir, main page]

Skip to content

Commit ece11af

Browse files
author
derwentx
committed
completes full oauth three-legged to get access token!
1 parent 78b4029 commit ece11af

File tree

5 files changed

+319
-67
lines changed

5 files changed

+319
-67
lines changed

tests.py

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -272,12 +272,21 @@ def woo_test_mock(*args, **kwargs):
272272

273273
class OAuthTestcases(unittest.TestCase):
274274
def setUp(self):
275-
self.consumer_key = "ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
276-
self.consumer_secret = "cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
277-
self.api = wordpress.API(
278-
url="http://woo.test",
275+
self.base_url = "http://localhost:8888/wordpress/"
276+
self.api_name = 'wc-api'
277+
self.api_ver = 'v3'
278+
self.endpoint = 'products/99'
279+
self.signature_method = "HMAC-SHA1"
280+
self.consumer_key = "ck_681c2be361e415519dce4b65ee981682cda78bc6"
281+
self.consumer_secret = "cs_b11f652c39a0afd3752fc7bb0c56d60d58da5877"
282+
283+
self.wcapi = API(
284+
url=self.base_url,
279285
consumer_key=self.consumer_key,
280-
consumer_secret=self.consumer_secret
286+
consumer_secret=self.consumer_secret,
287+
api=self.api_name,
288+
version=self.api_ver,
289+
signature_method=self.signature_method
281290
)
282291

283292
# def test_get_sign(self):
@@ -288,41 +297,39 @@ def setUp(self):
288297
# expected_sig = '8T93S/PDOrEd+N9cm84EDvsPGJ4='
289298
# self.assertEqual(sig, expected_sig)
290299

300+
def test_get_sign_key(self):
301+
self.assertEqual(
302+
self.wcapi.oauth.get_sign_key(self.consumer_secret),
303+
"%s&" % self.consumer_secret
304+
)
305+
306+
oauth_token_secret = "PNW9j1yBki3e7M7EqB5qZxbe9n5tR6bIIefSMQ9M2pdyRI9g"
307+
308+
self.assertEqual(
309+
self.wcapi.oauth.get_sign_key(self.consumer_secret, oauth_token_secret),
310+
"%s&%s" % (self.consumer_secret, oauth_token_secret)
311+
)
312+
313+
291314
def test_normalize_params(self):
292315
params = dict([('oauth_callback', 'localhost:8888/wordpress'), ('oauth_consumer_key', 'LCLwTOfxoXGh'), ('oauth_nonce', '45474014077032100721477037582'), ('oauth_signature_method', 'HMAC-SHA1'), ('oauth_timestamp', 1477037582), ('oauth_version', '1.0')])
293316
expected_normalized_params = "oauth_callback=localhost%3A8888%2Fwordpress&oauth_consumer_key=LCLwTOfxoXGh&oauth_nonce=45474014077032100721477037582&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1477037582&oauth_version=1.0"
294317
normalized_params = OAuth.normalize_params(params)
295318
self.assertEqual(expected_normalized_params, normalized_params)
296319

297320
def test_generate_oauth_signature(self):
298-
base_url = "http://localhost:8888/wordpress/"
299-
api_name = 'wc-api'
300-
api_ver = 'v3'
301-
endpoint = 'products/99'
302-
signature_method = "HMAC-SHA1"
303-
consumer_key = "ck_681c2be361e415519dce4b65ee981682cda78bc6"
304-
consumer_secret = "cs_b11f652c39a0afd3752fc7bb0c56d60d58da5877"
305-
306-
wcapi = API(
307-
url=base_url,
308-
consumer_key=consumer_key,
309-
consumer_secret=consumer_secret,
310-
api=api_name,
311-
version=api_ver,
312-
signature_method=signature_method
313-
)
314321

315-
endpoint_url = UrlUtils.join_components([base_url, api_name, api_ver, endpoint])
322+
endpoint_url = UrlUtils.join_components([self.base_url, self.api_name, self.api_ver, self.endpoint])
316323

317324
params = OrderedDict()
318-
params["oauth_consumer_key"] = consumer_key
325+
params["oauth_consumer_key"] = self.consumer_key
319326
params["oauth_timestamp"] = "1477041328"
320327
params["oauth_nonce"] = "166182658461433445531477041328"
321-
params["oauth_signature_method"] = signature_method
328+
params["oauth_signature_method"] = self.signature_method
322329
params["oauth_version"] = "1.0"
323330
params["oauth_callback"] = 'localhost:8888/wordpress'
324331

325-
sig = wcapi.oauth.generate_oauth_signature("POST", params, endpoint_url)
332+
sig = self.wcapi.oauth.generate_oauth_signature("POST", params, endpoint_url)
326333
expected_sig = "517qNKeq/vrLZGj2UH7+q8ILWAg="
327334
self.assertEqual(sig, expected_sig)
328335

@@ -433,5 +440,5 @@ def test_get_request_token(self):
433440

434441
with HTTMock(self.woo_authentication_mock):
435442
access_token, access_token_secret = self.api.oauth.get_request_token()
436-
self.assertEquals(access_token, ['XXXXXXXXXXXX'])
437-
self.assertEquals(access_token_secret, ['YYYYYYYYYYYY'])
443+
self.assertEquals(access_token, 'XXXXXXXXXXXX')
444+
self.assertEquals(access_token_secret, 'YYYYYYYYYYYY')

wordpress/api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ def __init__(self, url, consumer_key, consumer_secret, **kwargs):
2727

2828
if kwargs.get('oauth1a_3leg'):
2929
self.oauth1a_3leg = kwargs['oauth1a_3leg']
30-
self.wp_user = kwargs['wp_user']
31-
self.wp_pass = kwargs['wp_pass']
3230
oauth_kwargs['callback'] = kwargs['callback']
31+
oauth_kwargs['wp_user'] = kwargs['wp_user']
32+
oauth_kwargs['wp_pass'] = kwargs['wp_pass']
3333
self.oauth = OAuth_3Leg( **oauth_kwargs )
3434
else:
3535
self.oauth = OAuth( **oauth_kwargs )

wordpress/helpers.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
from urlparse import parse_qsl, urlparse, urlunparse
1717
from urlparse import ParseResult as URLParseResult
1818

19+
from bs4 import BeautifulSoup
20+
21+
1922
class StrUtils(object):
2023
@classmethod
2124
def remove_tail(cls, string, tail):
@@ -49,7 +52,8 @@ def substitute_query(cls, url, query_string=None):
4952
@classmethod
5053
def add_query(cls, url, new_key, new_value):
5154
""" adds a query parameter to the given url """
52-
new_query_item = '='.join([quote(new_key, safe='[]'), quote(new_value)])
55+
new_query_item = '%s=%s' % (quote(str(new_key)), quote(str(new_value)))
56+
# new_query_item = '='.join([quote(new_key), quote(new_value)])
5357
new_query_string = "&".join(SeqUtils.filter_true([
5458
urlparse(url).query,
5559
new_query_item
@@ -82,3 +86,8 @@ def get_value_like_as_php(val):
8286
return str(int(val)) if val % 1 == 0 else str(val)
8387
else:
8488
return ""
89+
90+
@staticmethod
91+
def beautify_response(response):
92+
""" Returns a beautified response in the default locale """
93+
return BeautifulSoup(response.text, 'lxml').prettify().encode(errors='backslashreplace')

0 commit comments

Comments
 (0)
0