From 1e0af7fba5950f9ee72ff584608f85d6c441c03e Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Tue, 23 Feb 2016 23:46:35 +0000 Subject: [PATCH 01/73] Fixed login and passwor xpaths in expected values of Bitbucket. --- tests/functional_tests/expected_values/bitbucket.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/functional_tests/expected_values/bitbucket.py b/tests/functional_tests/expected_values/bitbucket.py index cba9e135..7e67face 100644 --- a/tests/functional_tests/expected_values/bitbucket.py +++ b/tests/functional_tests/expected_values/bitbucket.py @@ -11,11 +11,9 @@ CONFIG = { 'logout_url': 'https://bitbucket.org/account/signout/', - 'login_xpath': '//*[@id="id_username"]', - 'password_xpath': '//*[@id="id_password"]', - 'consent_xpaths': [ - '//*[@id="oauth-authorize"]/section/form/div/div/button', - ], + 'login_xpath': '//*[@id="js-email-field"]', + 'password_xpath': '//*[@id="js-password-field"]', + 'consent_xpaths': [], 'class_': oauth1.Bitbucket, 'user': { 'birth_date': None, From eaad28e0a331b0ca2d32582b612254c0c3f77e29 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Tue, 23 Feb 2016 23:52:21 +0000 Subject: [PATCH 02/73] More readable if statement. --- tests/functional_tests/test_providers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/functional_tests/test_providers.py b/tests/functional_tests/test_providers.py index 6b285942..f70bd943 100644 --- a/tests/functional_tests/test_providers.py +++ b/tests/functional_tests/test_providers.py @@ -482,7 +482,8 @@ def f(property_name): value = browser.find_element_by_id(property_name).text or None expected = provider['user'][property_name] - if isinstance(expected, type(re.compile(''))): + is_regex = isinstance(expected, type(re.compile(''))) + if is_regex: assert expected.match(value) else: assert value == expected From 57ef7282f60dc96f2c5f8a2752a8096708297ab2 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Tue, 23 Feb 2016 23:52:44 +0000 Subject: [PATCH 03/73] Updated the oauth2.Facebook provider. --- CHANGES.rst | 4 +++- authomatic/providers/oauth2.py | 3 +-- tests/functional_tests/expected_values/facebook.py | 6 ++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 2d0b9dd6..8858f1b2 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,4 +1,4 @@ -Version 0.1.0 +Version 0.0.14 ------------- * Introduced the :attr:`.User.access_token_response` attribute. @@ -13,6 +13,8 @@ Version 0.1.0 :class:`.oauth1.Tumbler` provider. * Removed support for :attr:`.User.username` and added support for :attr:`.User.birth_date` to :class:`.oauth2.Facebook` provider. +* Removed support for :attr:`.User.timezone` and from :class:`.oauth2.Facebook` + provider. * :class:`.oauth2.Facebook` provider now uses ``v2`` api for user info request. * Removed the ``r_fullprofile`` and ``r_fullprofile`` scopes from :attr:`.oauth2.LinkedIn.user_info_scope` due to the diff --git a/authomatic/providers/oauth2.py b/authomatic/providers/oauth2.py index c5b10988..4a0f25fa 100644 --- a/authomatic/providers/oauth2.py +++ b/authomatic/providers/oauth2.py @@ -764,7 +764,6 @@ class Facebook(OAuth2): * location * name * picture - * timezone Unsupported :class:`.User` properties: @@ -772,6 +771,7 @@ class Facebook(OAuth2): * phone * postal_code * username + * timezone """ user_authorization_url = 'https://www.facebook.com/dialog/oauth' @@ -795,7 +795,6 @@ class Facebook(OAuth2): location=True, name=True, picture=True, - timezone=True ) @classmethod diff --git a/tests/functional_tests/expected_values/facebook.py b/tests/functional_tests/expected_values/facebook.py index 6acf14f1..92c41b4b 100644 --- a/tests/functional_tests/expected_values/facebook.py +++ b/tests/functional_tests/expected_values/facebook.py @@ -7,7 +7,8 @@ conf = fixtures.get_configuration('facebook') -LINK = u'http://www.facebook.com/' + conf.user_id +# LINK = u'http://www.facebook.com/' + conf.user_id +LINK = u'https://www.facebook.com/app_scoped_user_id/{0}/'.format(conf.user_id) PICTURE = (u'http://graph.facebook.com/{0}/picture?type=large' .format(conf.user_id)) @@ -37,7 +38,8 @@ 'phone': None, 'picture': PICTURE, 'postal_code': None, - 'timezone': re.compile(r'\d+'), + # 'timezone': re.compile(r'\d+'), + 'timezone': None, 'username': None, }, 'content_should_contain': [ From 7679940ddfa2f988c4722ed129f5bba208ba6721 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Wed, 24 Feb 2016 00:22:19 +0000 Subject: [PATCH 04/73] Added the before_password_input_wait setting to functional tests. --- tests/functional_tests/test_providers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/functional_tests/test_providers.py b/tests/functional_tests/test_providers.py index f70bd943..f7778391 100644 --- a/tests/functional_tests/test_providers.py +++ b/tests/functional_tests/test_providers.py @@ -230,6 +230,7 @@ def human_interaction_needed(xpath, seconds=0): if hi: human_interaction_needed(*hi) + wait(2, provider.get('before_password_input_wait')) log(2, provider_name, 'Finding password input {0}'.format(password_xpath)) password_element = browser.find_element_by_xpath(password_xpath) From e58a21d427260f26370161c625fd42d24567c7fe Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Wed, 24 Feb 2016 00:22:54 +0000 Subject: [PATCH 05/73] Fixed tests of oauth1.Tumblr provider. --- tests/functional_tests/expected_values/tumblr.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/functional_tests/expected_values/tumblr.py b/tests/functional_tests/expected_values/tumblr.py index 24fb7df9..f18923df 100644 --- a/tests/functional_tests/expected_values/tumblr.py +++ b/tests/functional_tests/expected_values/tumblr.py @@ -9,11 +9,14 @@ CONFIG = { 'logout_url': 'https://www.tumblr.com/logout', - 'login_xpath': '//*[@id="signup_email"]', + 'login_xpath': '//*[@id="signup_determine_email"]', 'password_xpath': '//*[@id="signup_password"]', + 'enter_after_login_input': True, + 'before_password_input_wait': 1, 'consent_xpaths': [ - '//*[@id="api_v1_oauth_authorize"]' - '/div[2]/div/div[1]/div/div/div[2]/form/button[2]', + '//*[@id="signup_forms_submit"]', + ('//*[@id="api_v1_oauth_authorize"]' + '/div[2]/div/div[1]/div/div/div[2]/form/button[2]'), ], 'consent_wait_seconds': 3, 'class_': oauth1.Tumblr, From fc2120581fd9bb75ef12288953f7326f7edba9fc Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 27 Feb 2016 22:02:41 +0000 Subject: [PATCH 06/73] Added a check whether the tests are launched as sudo if on port 80. --- tests/functional_tests/test_providers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/functional_tests/test_providers.py b/tests/functional_tests/test_providers.py index f7778391..9ecb06fa 100644 --- a/tests/functional_tests/test_providers.py +++ b/tests/functional_tests/test_providers.py @@ -28,6 +28,9 @@ requests.packages.urllib3.disable_warnings() +if os.getuid() and config.PORT == 80: + pytest.exit('You need to run this tests as sudo if config.PORT == 80') + ME = os.path.dirname(__file__) VIRTUALENV_NAME = os.path.basename(os.environ.get('VIRTUAL_ENV', '')) LOG_PATH = os.path.join(ME, 'login-py{0}{1}.log'.format(sys.version_info[0], From f1c7be3516dae37641f2e82f002173c17a04d2f5 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 27 Feb 2016 22:03:43 +0000 Subject: [PATCH 07/73] Returned chromedriver-installer to dependencies. --- tox.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/tox.ini b/tox.ini index 24757ce7..0bffc44d 100644 --- a/tox.ini +++ b/tox.ini @@ -5,6 +5,7 @@ skipsdist=true [testenv] deps= + chromedriver-installer flask pyramid pytest From d9726143dd34329636cd681f23b73ede95760289 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 27 Feb 2016 22:04:14 +0000 Subject: [PATCH 08/73] Removed pip. --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 6cd4f61f..053148f8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ -pip>=6.0.8 tox From 28ae5ff4c317795e7c0e42e3c00c4813d3caba36 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 27 Feb 2016 22:04:41 +0000 Subject: [PATCH 09/73] The expected value of the content should contain test is now casted to str. --- tests/functional_tests/test_providers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/functional_tests/test_providers.py b/tests/functional_tests/test_providers.py index 9ecb06fa..7159010f 100644 --- a/tests/functional_tests/test_providers.py +++ b/tests/functional_tests/test_providers.py @@ -42,7 +42,6 @@ PROVIDERS_IDS = [k for k, v in PROVIDERS] PROVIDER_NAME_WIDTH = len(max(PROVIDERS_IDS, key=lambda x: len(x))) -# CHECK_URL = 'https://authomatic.com' ALL_APPS = { 'Django': liveandletdie.Django( @@ -559,7 +558,7 @@ def test_content_should_not_contain(self, app, provider, browser): content = browser.find_element_by_id('content').text.lower() for item in provider['content_should_not_contain']: if item: - assert item.lower() not in content + assert str(item).lower() not in content def test_provider_support(self, app, provider): self.skip_if_openid(provider) From 86852d77fdd87fed3388f45f259b091bd27b2b0e Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 27 Feb 2016 22:07:53 +0000 Subject: [PATCH 10/73] Removed support for gender and birth date from Yahoo. --- CHANGES.rst | 2 ++ authomatic/providers/oauth1.py | 16 ++-------------- tests/functional_tests/expected_values/yahoo.py | 16 ++++++++-------- tests/functional_tests/fixtures/__init__.py | 3 +++ 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 8858f1b2..03facef8 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,8 @@ Version 0.0.14 :class:`.oauth1.Plurk` provider. * The :class:`.oauth1.Flickr` provider doesn't make the redundant API call during :meth:`.oauth1.Flickr.update_user` anymore. +* Removed support for :attr:`.User.birth_date` and :attr:`.User.gender` + from the :class:`.oauth1.Yahoo` provider. * Added the :attr:`.User.location` attribute. * Removed support for :attr:`.User.country` and :attr:`.User.city` from :class:`.oauth1.Twitter` and :class:`.oauth2.GitHub` providers. diff --git a/authomatic/providers/oauth1.py b/authomatic/providers/oauth1.py index 5a4cd0cd..19a63e5c 100644 --- a/authomatic/providers/oauth1.py +++ b/authomatic/providers/oauth1.py @@ -1071,10 +1071,8 @@ class Yahoo(OAuth1): Supported :class:`.User` properties: - * birth_date * city * country - * gender * id * link * location @@ -1084,6 +1082,8 @@ class Yahoo(OAuth1): Unsupported :class:`.User` properties: + * birth_date + * gender * locale * phone * postal_code @@ -1093,10 +1093,8 @@ class Yahoo(OAuth1): """ supported_user_attributes = core.SupportedUserAttributes( - birth_date=True, city=True, country=True, - gender=True, id=True, link=True, location=True, @@ -1138,16 +1136,6 @@ def _x_user_parser(user, data): user.city = user.city.strip() user.country = user.country.strip() - _date = _user.get('birthdate') - _year = _user.get('birthYear') - - if _date and _year: - _full = _date + '/' + _year - try: - user.birth_date = datetime.datetime.strptime(_full, "%m/%d/%Y") - except: - user.birth_date = _full - return user diff --git a/tests/functional_tests/expected_values/yahoo.py b/tests/functional_tests/expected_values/yahoo.py index a69d94f6..7b358a9d 100644 --- a/tests/functional_tests/expected_values/yahoo.py +++ b/tests/functional_tests/expected_values/yahoo.py @@ -20,11 +20,11 @@ 'logout_url': 'https://login.yahoo.com/config/login?logout=1', 'class_': oauth1.Yahoo, 'user': { - 'birth_date': conf.user_birth_date_str, + 'birth_date': None, 'city': conf.user_city, 'country': conf.user_country, 'email': None, - 'gender': re.compile(r'^\w$'), + 'gender': None, 'id': conf.user_id, 'first_name': None, 'last_name': None, @@ -40,23 +40,23 @@ 'username': None, }, 'content_should_contain': [ - '"birthYear":"{0:%Y}",'.format(conf.user_birth_date), - '"birthdate":"{0:%m/%d}",'.format(conf.user_birth_date), conf.user_id, LINK, conf.user_location, conf.user_name, # User info JSON keys - 'aboutMe', 'ageCategory', 'birthYear', 'birthdate', 'count', 'created', - 'displayAge', 'gender', 'guid', 'height', 'image', 'imageUrl', - 'isConnected', 'lang', 'location', 'memberSince', 'nickname', 'profile', - 'profileUrl', 'query', 'results', 'size', 'width' + 'aboutMe', 'ageCategory', 'birthdate', 'count', 'created', 'guid', + 'height', 'image', 'imageUrl', 'isConnected', 'lang', 'location', + 'memberSince', 'nickname', 'profile', 'profileUrl', 'query', 'results', + 'size', 'width' ], # Case insensitive 'content_should_not_contain': ['city', 'country'] + + conf.no_birth_year + conf.no_email + + conf.no_gender + conf.no_locale + ['first_name', 'last_name', 'firstname', 'lastname'] + conf.no_phone + diff --git a/tests/functional_tests/fixtures/__init__.py b/tests/functional_tests/fixtures/__init__.py index 7c9125fb..601da123 100644 --- a/tests/functional_tests/fixtures/__init__.py +++ b/tests/functional_tests/fixtures/__init__.py @@ -137,6 +137,9 @@ def get_configuration(provider): Res.user_birth_date_str = bday.strftime(Res.BIRTH_DATE_FORMAT) Res.no_birth_date = ['birth'] + Res.no_birth_year = [conf['user_birth_year'], 'birth_year', 'birthYear'] + Res.no_birth_month = [conf['user_birth_month'], 'birth_month', 'birthMonth'] + Res.no_birth_day = [conf['user_birth_day'], 'birth_day', 'birthDay'] Res.no_city = [conf['user_city'], 'city'] Res.no_country = [conf['user_country'], 'country'] Res.no_email = [conf['user_email'], 'email'] From 7dfcde62f36a7afffcf344770677e013c708ec34 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 27 Feb 2016 22:08:35 +0000 Subject: [PATCH 11/73] Fixed tests of Vimeo. --- tests/functional_tests/expected_values/vimeo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional_tests/expected_values/vimeo.py b/tests/functional_tests/expected_values/vimeo.py index 740cbfcd..16e5ad84 100644 --- a/tests/functional_tests/expected_values/vimeo.py +++ b/tests/functional_tests/expected_values/vimeo.py @@ -11,8 +11,8 @@ CONFIG = { 'logout_url': 'https://vimeo.com/log_out', - 'login_xpath': '//*[@id="email"]', - 'password_xpath': '//*[@id="password"]', + 'login_xpath': '//*[@id="signup_email"]', + 'password_xpath': '//*[@id="login_password"]', 'consent_xpaths': [ '//*[@id="security"]/form/input[4]', ], From 94203edba2344e6ed34da030596863e5708559a9 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 27 Feb 2016 22:08:57 +0000 Subject: [PATCH 12/73] Fixed tests of Xing. --- tests/functional_tests/expected_values/xing.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/functional_tests/expected_values/xing.py b/tests/functional_tests/expected_values/xing.py index bcd26514..22bd2475 100644 --- a/tests/functional_tests/expected_values/xing.py +++ b/tests/functional_tests/expected_values/xing.py @@ -7,8 +7,11 @@ conf = fixtures.get_configuration('xing') LINK = 'https://www.xing.com/profile/{0}'.format(conf.user_username) -PITURE = re.compile(r'https://x\d+.xingassets.com/assets/frontend_minified/img/' - r'users/\w+.140x185.jpg') +# PITURE = re.compile(r'https://x\d+.xingassets.com/assets/frontend_minified/img/' +# r'users/\w+.140x185.jpg') + +PICTURE = re.compile(r'https://www.xing.com/assets/frontend_minified/' + r'img/users/\w+\.\d+x\d+.jpg') CONFIG = { @@ -35,7 +38,7 @@ 'name': conf.user_name, 'nickname': None, 'phone': conf.user_phone, - 'picture': PITURE, + 'picture': PICTURE, 'postal_code': conf.user_postal_code, 'timezone': re.compile(r'^\w+/\w+$'), 'username': conf.user_username, From 457c5a5e88ad558bf4da9c1b4fa467080ac61ea3 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 27 Feb 2016 22:11:34 +0000 Subject: [PATCH 13/73] Update config template of functional tests. --- tests/functional_tests/config-template.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/functional_tests/config-template.py b/tests/functional_tests/config-template.py index a9e6a87f..3cf0ecd3 100644 --- a/tests/functional_tests/config-template.py +++ b/tests/functional_tests/config-template.py @@ -115,8 +115,10 @@ def teardown(): USERNAME = 'andypipkin' USERNAME_REVERSE = 'pipkinandy' NICKNAME = 'Mr. Pipkin' -BIRTH_YEAR = '1979' -BIRTH_DATE = datetime.datetime(1979, 12, 31).strftime('%x') +BIRTH_YEAR = 1979 +BIRTH_MONTH = 11 +BIRTH_DAY = 18 +BIRTH_DATE = datetime.datetime(BIRTH_YEAR, BIRTH_MONTH, BIRTH_DAY) CITY = 'London' COUNTRY = 'Great Britain' COUNTRY_ISO2 = 'gb' @@ -131,6 +133,9 @@ def teardown(): COMMON = { # Could be same if the user sets it so 'user_birth_date': BIRTH_DATE, + 'user_birth_day': BIRTH_DAY, + 'user_birth_month': BIRTH_MONTH, + 'user_birth_year': BIRTH_YEAR, 'user_login': EMAIL, 'user_email': EMAIL, 'user_first_name': FIRST_NAME, From 27f6aad906ef95350d0fbc9e233a6fcebbbc99ee Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 28 Feb 2016 00:53:01 +0000 Subject: [PATCH 14/73] Fixed link format in tests of Yammer. --- .../expected_values/yammer.py | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tests/functional_tests/expected_values/yammer.py b/tests/functional_tests/expected_values/yammer.py index 5ee20a1f..10bffc23 100644 --- a/tests/functional_tests/expected_values/yammer.py +++ b/tests/functional_tests/expected_values/yammer.py @@ -8,7 +8,7 @@ conf = fixtures.get_configuration('yammer') LINK = 'https://www.yammer.com/peterhudec.com/users/{0}'\ - .format(conf.user_username) + .format(conf.user_id) # Yammer allows users to only set month and day of their birth day. # The year is always 1900. @@ -61,28 +61,28 @@ # User info JSON keys 'absolute_timestamps', 'activated_at', 'address', 'admin', 'admin_can_delete_messages', 'allow_attachments', - 'allow_external_sharing', 'allow_inline_document_view', - 'allow_inline_video', 'allow_notes', 'allow_yammer_apps', 'birth_date', - 'can_broadcast', 'can_browse_external_networks', - 'can_create_new_network', 'contact', 'department', - 'dismissed_apps_tooltip', 'dismissed_browser_lifecycle_banner', - 'dismissed_feed_tooltip', 'dismissed_group_tooltip', - 'dismissed_invite_tooltip', 'dismissed_invite_tooltip_at', - 'dismissed_profile_prompt', 'email', 'email_addresses', 'enable_chat', - 'enable_groups', 'enable_private_messages', - 'enter_does_not_submit_message', 'expertise', 'external_urls', - 'first_name', 'follow_general_messages', 'followers', 'following', - 'full_name', 'guid', 'has_fake_email', 'has_mobile_client', + 'allow_external_sharing', 'allow_inline_document_view', 'allow_notes', + 'allow_yammer_apps', 'auto_activated', 'birth_date', 'can_broadcast', + 'can_browse_external_networks', 'can_create_new_network', 'contact', + 'department', 'dismissed_apps_tooltip', + 'dismissed_browser_lifecycle_banner', 'dismissed_feed_tooltip', + 'dismissed_group_tooltip', 'dismissed_invite_tooltip', + 'dismissed_invite_tooltip_at', 'dismissed_profile_prompt', 'email', + 'email_addresses', 'enable_chat', 'enable_groups', + 'enable_private_messages', 'enter_does_not_submit_message', 'expertise', + 'external_urls', 'first_name', 'follow_general_messages', 'followers', + 'following', 'full_name', 'guid', 'has_fake_email', 'has_mobile_client', 'has_yammer_now', 'id', 'im', 'interests', 'job_title', 'kids_names', 'last_name', 'locale', 'location', 'make_yammer_homepage', 'message_prompt', 'mugshot_url', 'mugshot_url_template', 'name', 'network_domains', 'network_id', 'network_name', 'network_settings', 'number', 'phone_numbers', 'preferred_my_feed', 'prescribed_my_feed', 'previous_companies', 'provider', 'schools', 'settings', - 'show_ask_for_photo', 'show_communities_directory', 'significant_other', - 'state', 'stats', 'sticky_my_feed', 'summary', 'threaded_mode', - 'timezone', 'type', 'updates', 'url', 'username', 'verified_admin', - 'web_preferences', 'web_url', 'xdr_proxy', 'yammer_now_app_id' + 'show_ask_for_photo', 'show_communities_directory', + 'show_invite_lightbox', 'significant_other', 'state', 'stats', + 'sticky_my_feed', 'summary', 'supervisor_admin', 'timezone', 'type', + 'updates', 'url', 'username', 'verified_admin', 'web_preferences', + 'web_url', 'xdr_proxy', 'yammer_now_app_id' ], # Case insensitive 'content_should_not_contain': From 699b453b12fe98bfcb969755d41408d40c66fee0 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:20:13 +0000 Subject: [PATCH 15/73] Updated the user_authorization_url of DeviantART provider. Added note about DeviantART user agent requirement. --- authomatic/providers/oauth2.py | 23 +++++++++++++++++-- .../expected_values/deviantart.py | 3 +++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/authomatic/providers/oauth2.py b/authomatic/providers/oauth2.py index b815225b..ced64224 100644 --- a/authomatic/providers/oauth2.py +++ b/authomatic/providers/oauth2.py @@ -626,6 +626,25 @@ class DeviantART(OAuth2): * Docs: https://www.deviantart.com/developers/authentication * API reference: http://www.deviantart.com/developers/oauth2 + .. note:: + + Although it is not documented anywhere, DeviantART requires the + *access token* request to contain a ``User-Agent`` header. + You can apply a default ``User-Agent`` header for all API calls in the + config like this: + + .. code-block:: python + :emphasize-lines: 6 + + CONFIG = { + 'deviantart': { + 'class_': oauth2.DeviantART, + 'consumer_key': '#####', + 'consumer_secret': '#####', + 'access_headers': {'User-Agent': 'Some User Agent'}, + } + } + Supported :class:`.User` properties: * name @@ -651,8 +670,8 @@ class DeviantART(OAuth2): """ - user_authorization_url = 'https://www.deviantart.com/oauth2/draft15/authorize' - access_token_url = 'https://www.deviantart.com/oauth2/draft15/token' + user_authorization_url = 'https://www.deviantart.com/oauth2/authorize' + access_token_url = 'https://www.deviantart.com/oauth2/token' user_info_url = 'https://www.deviantart.com/api/oauth2/user/whoami' user_info_scope = ['basic'] diff --git a/tests/functional_tests/expected_values/deviantart.py b/tests/functional_tests/expected_values/deviantart.py index c2fa1884..2421dcda 100644 --- a/tests/functional_tests/expected_values/deviantart.py +++ b/tests/functional_tests/expected_values/deviantart.py @@ -19,6 +19,9 @@ '//*[@id="authorize_form"]/fieldset/div[2]/div[2]/a[1]', ], # 'consent_wait_seconds': 2, + 'access_headers': { + 'User-Agent': 'Authomatic.py Automated Functional Tests', + }, 'class_': oauth2.DeviantART, 'scope': oauth2.DeviantART.user_info_scope, 'user': { From 933d954af60387a133f17076b57696f04a2a04ba Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:21:40 +0000 Subject: [PATCH 16/73] Coding style. --- authomatic/providers/oauth2.py | 35 ++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/authomatic/providers/oauth2.py b/authomatic/providers/oauth2.py index ced64224..f128a2a5 100644 --- a/authomatic/providers/oauth2.py +++ b/authomatic/providers/oauth2.py @@ -321,13 +321,15 @@ def login(self): self.credentials.token = authorization_code - request_elements = self.create_request_elements(request_type=self.ACCESS_TOKEN_REQUEST_TYPE, - credentials=self.credentials, - url=self.access_token_url, - method=self.token_request_method, - redirect_uri=self.url, - params=self.access_token_params, - headers=self.access_token_headers) + request_elements = self.create_request_elements( + request_type=self.ACCESS_TOKEN_REQUEST_TYPE, + credentials=self.credentials, + url=self.access_token_url, + method=self.token_request_method, + redirect_uri=self.url, + params=self.access_token_params, + headers=self.access_token_headers + ) response = self._fetch(*request_elements) self.access_token_response = response @@ -336,11 +338,20 @@ def login(self): refresh_token = response.data.get('refresh_token', '') if response.status != 200 or not access_token: - raise FailureError('Failed to obtain OAuth 2.0 access token from {0}! HTTP status: {1}, message: {2}.'\ - .format(self.access_token_url, response.status, response.content), - original_message=response.content, - status=response.status, - url=self.access_token_url) + message = (u'Failed to obtain OAuth 2.0 access token from {0}! ' + u'HTTP status: {1}, message: {2}.' + .format(self.access_token_url, response.status, + response.content)) + + # TODO: Check whether provider requires the User-Agent header + # if so, use more meaningful message. + + raise FailureError( + message=message, + original_message=response.content, + status=response.status, + url=self.access_token_url, + ) self._log(logging.INFO, u'Got access token.') From 1e026e88b4920c475c6fc6abbf5b8616e109aa06 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:28:49 +0000 Subject: [PATCH 17/73] Introduced the after_login_hook callback. --- tests/functional_tests/config-template.py | 3 +++ .../expected_values/twitter.py | 19 +++++++++++++++++++ tests/functional_tests/test_providers.py | 7 +++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/tests/functional_tests/config-template.py b/tests/functional_tests/config-template.py index 3cf0ecd3..f89e0dc8 100644 --- a/tests/functional_tests/config-template.py +++ b/tests/functional_tests/config-template.py @@ -206,6 +206,9 @@ def teardown(): 'consumer_secret': '##########', 'user_password': '##########', 'user_id': '??????????', + # Twitter considers selenium login attempts suspicious and occasionally + # asks a security challenge question. This will be used as the answer. + 'user_challenge_answer': '??????????', }, 'tumblr': { 'consumer_key': '##########', diff --git a/tests/functional_tests/expected_values/twitter.py b/tests/functional_tests/expected_values/twitter.py index ddace4af..ab6b0761 100644 --- a/tests/functional_tests/expected_values/twitter.py +++ b/tests/functional_tests/expected_values/twitter.py @@ -1,15 +1,34 @@ import re +from selenium.common.exceptions import NoSuchElementException +from selenium.webdriver.common.keys import Keys + import fixtures import constants from authomatic.providers import oauth1 conf = fixtures.get_configuration('twitter') + +def after_login_hook(browser, log): + try: + log(4, 'twitter', 'Finding challenge element') + challenge = browser.find_element_by_xpath('//*[@id="challenge_response"]') + + log(4, 'twitter', 'Answering challenge') + challenge.send_keys(conf.user_challenge_answer) + + log(4, 'twitter', 'Submitting challenge') + challenge.send_keys(Keys.ENTER) + except NoSuchElementException: + log(5, 'twitter', 'Challenge element not found, hopefully not needed') + + CONFIG = { 'login_xpath': '//*[@id="username_or_email"]', 'password_xpath': '//*[@id="password"]', 'consent_xpaths': [], + 'after_login_hook': after_login_hook, 'class_': oauth1.Twitter, 'user': { 'birth_date': None, diff --git a/tests/functional_tests/test_providers.py b/tests/functional_tests/test_providers.py index 7159010f..30a83989 100644 --- a/tests/functional_tests/test_providers.py +++ b/tests/functional_tests/test_providers.py @@ -244,6 +244,11 @@ def human_interaction_needed(xpath, seconds=0): password_element.send_keys(Keys.ENTER) wait(2, provider.get('after_login_wait_seconds')) + after_login_hook = provider.get('after_login_hook') + if after_login_hook: + log(3, provider_name, 'Calling no-result hook') + after_login_hook(browser, log) + if login_url: # Return back from login URL log(2, provider_name, 'Going back from login URL to: {0}' @@ -302,8 +307,6 @@ def human_interaction_needed(xpath, seconds=0): log(1, provider_name, 'Giving up after {0} attempts!'.format(attempt)) - # import pdb; pdb.set_trace() - pytest.fail('Login by provider "{0}" failed!'.format(provider_name)) return provider From 9d4fa2018ff707db27462ec48c24f0c1257a15be Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:31:58 +0000 Subject: [PATCH 18/73] Removed support for timezone from Facebook provider. --- tests/functional_tests/expected_values/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional_tests/expected_values/facebook.py b/tests/functional_tests/expected_values/facebook.py index 92c41b4b..86d66743 100644 --- a/tests/functional_tests/expected_values/facebook.py +++ b/tests/functional_tests/expected_values/facebook.py @@ -38,7 +38,7 @@ 'phone': None, 'picture': PICTURE, 'postal_code': None, - # 'timezone': re.compile(r'\d+'), + 'timezone': None, 'timezone': None, 'username': None, }, From 3db95dd84621867beec97be82b56b5201e169edd Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:34:32 +0000 Subject: [PATCH 19/73] Fixed login settings for Flicker in functional tests. --- tests/functional_tests/expected_values/flickr.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/functional_tests/expected_values/flickr.py b/tests/functional_tests/expected_values/flickr.py index 784de863..dc045fca 100644 --- a/tests/functional_tests/expected_values/flickr.py +++ b/tests/functional_tests/expected_values/flickr.py @@ -10,7 +10,9 @@ 'consent_xpaths': [ '//*[@id="permissions"]/form/div/input[1]', ], - 'consent_wait_seconds': 6, + 'enter_after_login_input': True, + 'before_password_input_wait': 1, + 'consent_wait_seconds': 1, 'logout_url': 'https://login.yahoo.com/config/login?logout=1', 'class_': oauth1.Flickr, 'user_authorization_params': dict(perms='read'), From abf5efc585cb3f139b819efa09d3f4ec8fbc4734 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:35:36 +0000 Subject: [PATCH 20/73] Update user info JSON keys in expected values of Foursquare provider. --- .../expected_values/foursquare.py | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/tests/functional_tests/expected_values/foursquare.py b/tests/functional_tests/expected_values/foursquare.py index c0deaa05..ca11cbce 100644 --- a/tests/functional_tests/expected_values/foursquare.py +++ b/tests/functional_tests/expected_values/foursquare.py @@ -47,23 +47,22 @@ conf.user_phone, # User info JSON keys - 'meta', 'code', 'notifications', 'type', 'item', 'unreadCount', - 'response', 'user', 'id', 'firstName', 'lastName', 'gender', - 'relationship', 'photo', 'prefix', 'suffix', 'friends', 'count', - 'groups', 'name', 'items', 'tips', 'lists', 'homeCity', 'bio', - 'contact', 'email', 'facebook', 'twitter', 'superuser', 'default', - 'birthday', 'phone', 'checkinPings', 'pings', 'badges', 'badgeId', - 'unlockMessage', 'description', 'badgeText', 'image', 'sizes', - 'unlocks', 'checkins', 'createdAt', 'shout', 'timeZoneOffset', - 'location', 'lat', 'lng', 'photos', 'posts', 'textCount', 'comments', - 'source', 'url', 'mayorships', 'venue', 'formattedPhone', - 'facebookName', 'address', 'postalCode', 'cc', 'neighborhood', 'city', - 'state', 'country', 'formattedAddress', 'categories', 'pluralName', - 'shortName', 'icon', 'primary', 'verified', 'stats', 'checkinsCount', - 'usersCount', 'tipCount', 'like', 'likes', 'width', 'height', - 'visibility', 'requests', 'editable', 'public', 'collaborative', - 'canonicalUrl', 'followers', 'listItems', 'checkin', 'blockedStatus', - 'referralId' + 'address', 'allowMenuUrlEdit', 'bio', 'birthday', 'blockedStatus', + 'canonicalUrl', 'categories', 'cc', 'checkin', 'checkinPings', + 'checkins', 'checkinsCount', 'city', 'code', 'collaborative', + 'comments', 'contact', 'count', 'country', 'createdAt', 'default', + 'description', 'editable', 'email', 'entities', 'facebook', + 'facebookName', 'firstName', 'formattedAddress', 'formattedPhone', + 'friends', 'gender', 'groups', 'height', 'homeCity', 'icon', 'id', + 'isMayor', 'item', 'items', 'lastName', 'lat', 'lenses', 'like', + 'likes', 'listItems', 'lists', 'lng', 'location', 'mayorships', 'meta', + 'name', 'neighborhood', 'notifications', 'phone', 'photo', 'photos', + 'pings', 'pluralName', 'postalCode', 'posts', 'prefix', 'primary', + 'public', 'referralId', 'relationship', 'requestId', 'requests', + 'response', 'shortName', 'shout', 'source', 'state', 'stats', 'suffix', + 'superuser', 'textCount', 'timeZoneOffset', 'tipCount', 'tips', + 'twitter', 'type', 'unreadCount', 'url', 'user', 'usersCount', 'venue', + 'verified', 'verifiedPhone', 'visibility', 'width' ], # Case insensitive 'content_should_not_contain': [ From badad210249507384629eefeb3bd8926aaeae5c7 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:37:08 +0000 Subject: [PATCH 21/73] Updated consent_xpaths and added login_url to expected values of Livejournal provider. --- tests/functional_tests/expected_values/openid_livejournal.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional_tests/expected_values/openid_livejournal.py b/tests/functional_tests/expected_values/openid_livejournal.py index 2eb6ce0e..da222979 100644 --- a/tests/functional_tests/expected_values/openid_livejournal.py +++ b/tests/functional_tests/expected_values/openid_livejournal.py @@ -11,11 +11,11 @@ '//*[@id="js"]/body/div[7]/header/span', '//*[@id="js"]/body/div[4]/header/div/nav[1]/ul[2]/li[1]/a', ], - # 'login_url': 'http://www.livejournal.com/login.bml', + 'login_url': 'http://www.livejournal.com/login.bml', 'login_xpath': '//*[@id="user"]', 'password_xpath': '//*[@id="lj_loginwidget_password"]', 'consent_xpaths': [ - # '//*[@id="js"]/body/div[4]/div[2]/div/form/div[3]/div[2]/button', + '//*[@id="LJWidget_893"]/div/div/form[1]/div[3]/div[1]/div/button', '//*[@id="js"]/body/div[4]/div[2]/div/div/form/table/tbody/tr/td/input[1]', ], 'class_': openid.OpenID, From 2bcd442fad28acc6eb4751b799cde67b91f118a5 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:40:37 +0000 Subject: [PATCH 22/73] Update login settings of Yahoo related providers in functional tests to reflect the migration to two step login. --- tests/functional_tests/expected_values/openid_yahoo.py | 4 +++- tests/functional_tests/expected_values/yahoo.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/functional_tests/expected_values/openid_yahoo.py b/tests/functional_tests/expected_values/openid_yahoo.py index 898566f3..72b1382a 100644 --- a/tests/functional_tests/expected_values/openid_yahoo.py +++ b/tests/functional_tests/expected_values/openid_yahoo.py @@ -7,11 +7,13 @@ 'openid_identifier': 'me.yahoo.com', 'login_xpath': '//*[@id="login-username"]', 'password_xpath': '//*[@id="login-passwd"]', + 'enter_after_login_input': True, + 'before_password_input_wait': 1, 'consent_xpaths': [ '//*[@id="login-signin"]', '//*[@id="agree"]', ], - 'after_consent_wait_seconds': 3, + 'after_consent_wait_seconds': 1, 'logout_url': 'https://login.yahoo.com/config/login?logout=1', 'class_': openid.OpenID, 'user': { diff --git a/tests/functional_tests/expected_values/yahoo.py b/tests/functional_tests/expected_values/yahoo.py index 7b358a9d..66f12fe6 100644 --- a/tests/functional_tests/expected_values/yahoo.py +++ b/tests/functional_tests/expected_values/yahoo.py @@ -13,10 +13,12 @@ CONFIG = { 'login_xpath': '//*[@id="login-username"]', 'password_xpath': '//*[@id="login-passwd"]', + 'enter_after_login_input': True, + 'before_password_input_wait': 1, 'consent_xpaths': [ '//*[@id="xagree"]', ], - 'consent_wait_seconds': 3, + 'consent_wait_seconds': 1, 'logout_url': 'https://login.yahoo.com/config/login?logout=1', 'class_': oauth1.Yahoo, 'user': { From 0213c25336b79683301e8189dcd10fc812189a35 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:42:00 +0000 Subject: [PATCH 23/73] Updated the JSON keys in expected values of Yammer provider. --- tests/functional_tests/expected_values/yammer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional_tests/expected_values/yammer.py b/tests/functional_tests/expected_values/yammer.py index 10bffc23..c5fc4548 100644 --- a/tests/functional_tests/expected_values/yammer.py +++ b/tests/functional_tests/expected_values/yammer.py @@ -82,7 +82,7 @@ 'show_invite_lightbox', 'significant_other', 'state', 'stats', 'sticky_my_feed', 'summary', 'supervisor_admin', 'timezone', 'type', 'updates', 'url', 'username', 'verified_admin', 'web_preferences', - 'web_url', 'xdr_proxy', 'yammer_now_app_id' + 'web_url', 'xdr_proxy' ], # Case insensitive 'content_should_not_contain': From 877906e502ab13f344aec5687bf7d6d17e05c468 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:49:58 +0000 Subject: [PATCH 24/73] Fixed changelog. Added record for version 0.1.1. --- CHANGES.rst | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 03facef8..89c7e2d6 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,4 +1,12 @@ -Version 0.0.14 +Version 0.1.1 +------------- + +* Removed support for :attr:`.User.birth_date` and :attr:`.User.gender` + from the :class:`.oauth1.Yahoo` provider. +* Removed support for :attr:`.User.timezone` and from :class:`.oauth2.Facebook` + provider. + +Version 0.1.0 ------------- * Introduced the :attr:`.User.access_token_response` attribute. @@ -6,8 +14,6 @@ Version 0.0.14 :class:`.oauth1.Plurk` provider. * The :class:`.oauth1.Flickr` provider doesn't make the redundant API call during :meth:`.oauth1.Flickr.update_user` anymore. -* Removed support for :attr:`.User.birth_date` and :attr:`.User.gender` - from the :class:`.oauth1.Yahoo` provider. * Added the :attr:`.User.location` attribute. * Removed support for :attr:`.User.country` and :attr:`.User.city` from :class:`.oauth1.Twitter` and :class:`.oauth2.GitHub` providers. @@ -15,8 +21,6 @@ Version 0.0.14 :class:`.oauth1.Tumbler` provider. * Removed support for :attr:`.User.username` and added support for :attr:`.User.birth_date` to :class:`.oauth2.Facebook` provider. -* Removed support for :attr:`.User.timezone` and from :class:`.oauth2.Facebook` - provider. * :class:`.oauth2.Facebook` provider now uses ``v2`` api for user info request. * Removed the ``r_fullprofile`` and ``r_fullprofile`` scopes from :attr:`.oauth2.LinkedIn.user_info_scope` due to the From 5cb04a4f95550f0e62cd03e9355189a73bf04cdc Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:52:36 +0000 Subject: [PATCH 25/73] Increased release version to 0.1.1. --- doc/source/conf.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index da45f1ba..52ae1f26 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -124,7 +124,7 @@ # built documents. # # The short X.Y version. -version = '0.1.0' +version = '0.1.1' # The full version, including alpha/beta/rc tags. release = version diff --git a/setup.py b/setup.py index f55f41c6..d7b992a5 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='Authomatic', - version='0.1.0.post1', # TODO: Put version in one place. + version='0.1.1', # TODO: Put version in one place. packages=find_packages(), package_data={'': ['*.txt', '*.rst']}, author='Peter Hudec', From bf5f1abfe879df593c2b7a96b56e0292a1526c96 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 21:57:48 +0000 Subject: [PATCH 26/73] Updated Travis CI config. --- .travis.yml | 3 +++ tests/functional_tests/config.py.enc | Bin 12736 -> 13264 bytes 2 files changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 35c71ff9..4abc89d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,9 @@ after_failure: - tail -n 1000000 tests/functional_tests/*.log - tail -n 1000000 tests/*.log before_install: +- openssl aes-256-cbc -K $encrypted_5fa87d13797d_key -iv $encrypted_5fa87d13797d_iv + -in ./tests/functional_tests/config.py.enc -out ./tests/functional_tests/config.py + -d - openssl aes-256-cbc -K $encrypted_cd197f1c301c_key -iv $encrypted_cd197f1c301c_iv -in ./tests/functional_tests/config.py.enc -out ./tests/functional_tests/config.py -d diff --git a/tests/functional_tests/config.py.enc b/tests/functional_tests/config.py.enc index 06a24712e8c3b90de3d37bb0d03a1496dea381da..5a19ea735160e7886d8248ee740e42d72801d2e6 100644 GIT binary patch literal 13264 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 O6G-}ux+<^4rC@3Tx3XgZ literal 12736 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 G(1DU4_s^jK From d6856bc4857d220b5e7ce9d9f558876c9b32fd48 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 22:04:41 +0000 Subject: [PATCH 27/73] Fixed double decription in .travis.yml and re-encrypted config. --- .travis.yml | 3 --- tests/functional_tests/config.py.enc | Bin 13264 -> 13264 bytes 2 files changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4abc89d7..80961d2a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,9 +13,6 @@ before_install: - openssl aes-256-cbc -K $encrypted_5fa87d13797d_key -iv $encrypted_5fa87d13797d_iv -in ./tests/functional_tests/config.py.enc -out ./tests/functional_tests/config.py -d -- openssl aes-256-cbc -K $encrypted_cd197f1c301c_key -iv $encrypted_cd197f1c301c_iv - -in ./tests/functional_tests/config.py.enc -out ./tests/functional_tests/config.py - -d - brew update - brew install caskroom/cask/brew-cask - brew cask install google-chrome diff --git a/tests/functional_tests/config.py.enc b/tests/functional_tests/config.py.enc index 5a19ea735160e7886d8248ee740e42d72801d2e6..6b67f54855b24d9c347b184ccd83832b7761865c 100644 GIT binary patch literal 13264 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 O1ll=;u&k)e%=hg4yxpq+ literal 13264 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 O6G-}ux+<^4rC@3Tx3XgZ From 54730929dd967ff5b17dec2521e4631b7179a0cb Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 22:20:48 +0000 Subject: [PATCH 28/73] Removed DeviantART from Travis CI config. --- tests/functional_tests/config-template.py | 12 ++++-------- tests/functional_tests/config.py.enc | Bin 13264 -> 13344 bytes 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/tests/functional_tests/config-template.py b/tests/functional_tests/config-template.py index f89e0dc8..08a8f2f9 100644 --- a/tests/functional_tests/config-template.py +++ b/tests/functional_tests/config-template.py @@ -91,18 +91,14 @@ def teardown(): # Recommended setup for Travis CI environment. if os.environ.get('TRAVIS'): - MAX_LOGIN_ATTEMPTS = 20 + MAX_LOGIN_ATTEMPTS = 10 WAIT_MULTIPLIER = 2 MIN_WAIT = 2 - - # LinkedIn and WindowsLive include a captcha in the login form - # if a user logs in from an unusual location. - INCLUDE_PROVIDERS = list(set(INCLUDE_PROVIDERS) - - set(['linkedin', 'windowslive'])) + EXCLUDED = ['linkedin', 'windowslive', 'deviantart'] + INCLUDE_PROVIDERS = list(set(INCLUDE_PROVIDERS) - set(EXCLUDED)) def get_browser(): - # Eventbrite has problems with the login form on Firefox - return webdriver.Chrome() + return webdriver.Chrome('./chromedriver') def teardown(): pass diff --git a/tests/functional_tests/config.py.enc b/tests/functional_tests/config.py.enc index 6b67f54855b24d9c347b184ccd83832b7761865c..f435a69c0430eb34e960fe24d814ed945a73d0cd 100644 GIT binary patch literal 13344 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 literal 13264 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 O1ll=;u&k)e%=hg4yxpq+ From 47289428ef1ec210ec3030f712047fd393dc25d6 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 22:57:43 +0000 Subject: [PATCH 29/73] Updated Travis CI config. --- .travis.yml | 2 +- tests/functional_tests/config.py.enc | Bin 13344 -> 13264 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 80961d2a..3709731f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ addons: - authomatic.com - authomatic.org install: sudo pip install tox -script: sudo tox -- -vvx --tb=no +script: sudo tox -e py27 -- -vvx --tb=no after_failure: - tail -n 1000000 tests/functional_tests/*.log - tail -n 1000000 tests/*.log diff --git a/tests/functional_tests/config.py.enc b/tests/functional_tests/config.py.enc index f435a69c0430eb34e960fe24d814ed945a73d0cd..a7fd22ea2a09712944fe102054c47305069dc638 100644 GIT binary patch literal 13264 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 OTnuvIay(3Y5(tL127&Sb literal 13344 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 From ebd611aac62022383f7bc9ced69d11f97e5085b6 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 23:12:07 +0000 Subject: [PATCH 30/73] Excluded Google from Travis CI tests. --- .travis.yml | 1 - tests/functional_tests/config.py.enc | Bin 13264 -> 13312 bytes 2 files changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3709731f..228c0327 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,6 @@ before_install: - brew update - brew install caskroom/cask/brew-cask - brew cask install google-chrome -- brew install python3 - wget -N http://chromedriver.storage.googleapis.com/2.10/chromedriver_mac32.zip -P . - unzip ./chromedriver_mac32.zip -d . diff --git a/tests/functional_tests/config.py.enc b/tests/functional_tests/config.py.enc index a7fd22ea2a09712944fe102054c47305069dc638..36d7398863d958f8000059cbd4bb9a04ffec472d 100644 GIT binary patch literal 13312 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 Ke)hs`Cxw*xao!dH literal 13264 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 OTnuvIay(3Y5(tL127&Sb From 39dbdbd7da3f60d273d640796702e8e74c4a32e8 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sat, 19 Mar 2016 23:48:14 +0000 Subject: [PATCH 31/73] Updated Travis CI config. --- tests/functional_tests/config.py.enc | Bin 13312 -> 13328 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/functional_tests/config.py.enc b/tests/functional_tests/config.py.enc index 36d7398863d958f8000059cbd4bb9a04ffec472d..8d1b8538aeeb2f8de262b008be3c316a0112cf07 100644 GIT binary patch literal 13328 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 literal 13312 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 Ke)hs`Cxw*xao!dH From 95153e577d9e6f34610d515eb30278a3befe68d5 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 24 Apr 2016 16:11:02 +0100 Subject: [PATCH 32/73] Added more a more meaningful TLS 1.2 related error. --- authomatic/providers/__init__.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/authomatic/providers/__init__.py b/authomatic/providers/__init__.py index 2dc3a8da..8c2fe225 100644 --- a/authomatic/providers/__init__.py +++ b/authomatic/providers/__init__.py @@ -20,15 +20,16 @@ """ import abc -import authomatic.core import base64 import hashlib import logging import random +import ssl import sys import traceback import uuid +import authomatic.core from authomatic.core import Session from authomatic.exceptions import ( ConfigError, @@ -122,6 +123,10 @@ class BaseProvider(object): """ PROVIDER_TYPE_ID = 0 + KNOWN_SSL_ERROR_SUFFIXES = ( + 'handshake failure', + 'violation of protocol', + ) _repr_ignore = ('user',) @@ -391,8 +396,24 @@ def _fetch(self, url, method='GET', params=None, headers=None, body='', max_redi try: connection.request(method, request_path, body, headers) except Exception as e: - raise FetchError('Could not connect!', - original_message=e.message, + message = 'Could not connect: {0}'.format(e) + major, minor, _, _, _ = sys.version_info + python_version = '{0}.{1}'.format(major, minor) + is_python26 = python_version == '2.6' + is_ssl = isinstance(e, ssl.SSLError) + is_known_ssl_error = str(e).endswith(self.KNOWN_SSL_ERROR_SUFFIXES) + + if is_python26 and is_ssl and is_known_ssl_error: + message = ( + '{message}. The server {host} probably uses TLS 1.2 ' + 'which is not supported by Python {version}.' + .format( + message=message, + host=host, + version=python_version, + )) + + raise FetchError(message, original_message=e.message, url=request_path) response = connection.getresponse() From 8cfd0af6f9eb14a017bb3aa06d68415852c5eb50 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 24 Apr 2016 16:20:29 +0100 Subject: [PATCH 33/73] Returned back the support of timezone to the Facebook provider. --- CHANGES.rst | 2 -- authomatic/providers/oauth2.py | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 89c7e2d6..e45c9573 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -3,8 +3,6 @@ Version 0.1.1 * Removed support for :attr:`.User.birth_date` and :attr:`.User.gender` from the :class:`.oauth1.Yahoo` provider. -* Removed support for :attr:`.User.timezone` and from :class:`.oauth2.Facebook` - provider. Version 0.1.0 ------------- diff --git a/authomatic/providers/oauth2.py b/authomatic/providers/oauth2.py index f128a2a5..0a1a62e6 100644 --- a/authomatic/providers/oauth2.py +++ b/authomatic/providers/oauth2.py @@ -794,6 +794,7 @@ class Facebook(OAuth2): * location * name * picture + * timezone Unsupported :class:`.User` properties: @@ -801,7 +802,6 @@ class Facebook(OAuth2): * phone * postal_code * username - * timezone """ user_authorization_url = 'https://www.facebook.com/dialog/oauth' @@ -825,6 +825,7 @@ class Facebook(OAuth2): location=True, name=True, picture=True, + timezone=True, ) @classmethod From d1e4e7de1af55789dca1e806375efd88958de870 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 26 Jun 2016 14:02:31 +0100 Subject: [PATCH 34/73] Fixed a bug when wrapping an exception which didn't have a message resulted in an error. --- authomatic/exceptions.py | 3 ++- authomatic/providers/__init__.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/authomatic/exceptions.py b/authomatic/exceptions.py index 03561ccd..d4e94897 100644 --- a/authomatic/exceptions.py +++ b/authomatic/exceptions.py @@ -13,7 +13,8 @@ def __init__(self, message, original_message='', url='', status=None): #: Error message. self.message = message - + + # TODO: Refactor to original error #: Original message. self.original_message = original_message diff --git a/authomatic/providers/__init__.py b/authomatic/providers/__init__.py index 8c2fe225..8f6b2784 100644 --- a/authomatic/providers/__init__.py +++ b/authomatic/providers/__init__.py @@ -413,7 +413,8 @@ def _fetch(self, url, method='GET', params=None, headers=None, body='', max_redi version=python_version, )) - raise FetchError(message, original_message=e.message, + original_message = e.message if hasattr(e, 'message') else str(e) + raise FetchError(message, original_message=original_message, url=request_path) response = connection.getresponse() From 434d6a13dcb90eb72bd036282e144db07c36a6db Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 26 Jun 2016 14:04:20 +0100 Subject: [PATCH 35/73] Added documentation about providers using TLS 1.2. --- authomatic/providers/oauth1.py | 7 ++++++ authomatic/providers/oauth2.py | 21 ++++++++++++++++ tests/functional_tests/config-template.py | 29 ++++++++++++++++------- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/authomatic/providers/oauth1.py b/authomatic/providers/oauth1.py index 19a63e5c..e1528b91 100644 --- a/authomatic/providers/oauth1.py +++ b/authomatic/providers/oauth1.py @@ -933,6 +933,13 @@ class Vimeo(OAuth1): * Docs: https://developer.vimeo.com/apis/advanced#oauth-endpoints * API reference: https://developer.vimeo.com/apis + .. note:: + + Vimeo seems to be using TLS 1.2 for SSL connection, which is not + supported by Python 2.6. For more info read `this stackoverflow question + `__. + Supported :class:`.User` properties: * id diff --git a/authomatic/providers/oauth2.py b/authomatic/providers/oauth2.py index 0a1a62e6..3511fd9e 100644 --- a/authomatic/providers/oauth2.py +++ b/authomatic/providers/oauth2.py @@ -637,6 +637,13 @@ class DeviantART(OAuth2): * Docs: https://www.deviantart.com/developers/authentication * API reference: http://www.deviantart.com/developers/oauth2 + .. note:: + + DeviantART seems to be using TLS 1.2 for SSL connection, which is not + supported by Python 2.6. For more info read `this stackoverflow question + `__. + .. note:: Although it is not documented anywhere, DeviantART requires the @@ -1330,6 +1337,13 @@ class PayPal(OAuth2): It grants you an **access token** based on your **app's** key and secret instead. + .. note:: + + Paypal seems to be using TLS 1.2 for SSL connection, which is not + supported by Python 2.6. For more info read `this stackoverflow question + `__. + """ _x_use_authorization_header = True @@ -1385,6 +1399,13 @@ class Reddit(OAuth2): } } + .. note:: + + Reddit seems to be using TLS 1.2 for SSL connection, which is not + supported by Python 2.6. For more info read `this stackoverflow question + `__. + Supported :class:`.User` properties: * id diff --git a/tests/functional_tests/config-template.py b/tests/functional_tests/config-template.py index 08a8f2f9..7abfa7df 100644 --- a/tests/functional_tests/config-template.py +++ b/tests/functional_tests/config-template.py @@ -89,19 +89,32 @@ def teardown(): 'openid_yahoo', ] +# Exclude providers who use TLS 1.2 from Python 2.6 tests +if sys.version.startswith('2.6'): + EXCLUDED = EXCLUDED + [ + 'deviantart', + 'paypal', + 'reddit', + ] + +# There are some problems with OpenSSL on Python 3 on OSX +if sys.version.startswith('3') and sys.platform == 'darwin': + EXCLUDED = EXCLUDED + [ + 'paypal', + ] + # Recommended setup for Travis CI environment. if os.environ.get('TRAVIS'): MAX_LOGIN_ATTEMPTS = 10 WAIT_MULTIPLIER = 2 MIN_WAIT = 2 - EXCLUDED = ['linkedin', 'windowslive', 'deviantart'] - INCLUDE_PROVIDERS = list(set(INCLUDE_PROVIDERS) - set(EXCLUDED)) - - def get_browser(): - return webdriver.Chrome('./chromedriver') - - def teardown(): - pass + EXCLUDED = EXCLUDED + [ + 'deviantart', + 'google', + 'linkedin', + 'paypal', + 'windowslive', + ] # Use these constants if you have the same user info by all tested providers. EMAIL = 'andy.pipkin@littlebritain.co.uk' From 1e779fbde7c3cad9561ae2bef34120cd400ace73 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 26 Jun 2016 14:05:59 +0100 Subject: [PATCH 36/73] Added expected value for timezone to the Facebook provider. --- tests/functional_tests/expected_values/facebook.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/functional_tests/expected_values/facebook.py b/tests/functional_tests/expected_values/facebook.py index 86d66743..8e58e3c1 100644 --- a/tests/functional_tests/expected_values/facebook.py +++ b/tests/functional_tests/expected_values/facebook.py @@ -38,8 +38,7 @@ 'phone': None, 'picture': PICTURE, 'postal_code': None, - 'timezone': None, - 'timezone': None, + 'timezone': re.compile(r'\d'), 'username': None, }, 'content_should_contain': [ From b0109aff1a08b6c7c7a1839ba15139bd67fc5b41 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 26 Jun 2016 14:06:46 +0100 Subject: [PATCH 37/73] Updated consent xpath of the Reddit provider. --- tests/functional_tests/expected_values/reddit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional_tests/expected_values/reddit.py b/tests/functional_tests/expected_values/reddit.py index d3f7069b..a405dbd8 100644 --- a/tests/functional_tests/expected_values/reddit.py +++ b/tests/functional_tests/expected_values/reddit.py @@ -8,7 +8,7 @@ 'login_xpath': '//*[@id="user_login"]', 'password_xpath': '//*[@id="passwd_login"]', 'consent_xpaths': [ - '/html/body/div[2]/div/div[2]/form/div/input[1]', + '/html/body/div[3]/div/div[2]/form/div/input[1]', ], 'consent_wait_seconds': 3, 'class_': oauth2.Reddit, From 13035641662997923cd0854cdc24c8fbb3ba91be Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 26 Jun 2016 19:20:16 +0100 Subject: [PATCH 38/73] Update config template for functional tests. --- tests/functional_tests/config-template.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/functional_tests/config-template.py b/tests/functional_tests/config-template.py index 7abfa7df..f0634b57 100644 --- a/tests/functional_tests/config-template.py +++ b/tests/functional_tests/config-template.py @@ -61,12 +61,14 @@ def teardown(): 'tumblr', # 'ubuntuone', # UbuntuOne service is no longer available 'vimeo', - 'xero', + # Xero requires creation of a new trial project every month which makes + # the setup of the automated test too laborious to support it. + # 'xero', 'xing', 'yahoo', # OAuth 2.0 - 'amazon', + # 'amazon', # Asks for a captcha (cannot be automated) # 'behance', # doesn't support third party authorization anymore. 'bitly', 'deviantart', @@ -74,7 +76,7 @@ def teardown(): 'foursquare', 'google', 'github', - 'linkedin', + 'linkedin', # Asks for verification when running in Travis CI evnironment 'paypal', 'reddit', 'vk', @@ -83,7 +85,7 @@ def teardown(): 'yandex', # OpenID - 'openid_livejournal', + # 'openid_livejournal', # Login and password elements are not visible. 'openid_verisignlabs', 'openid_wordpress', 'openid_yahoo', From 0eddd779edf8cb355a0fca1aa5b3f13f40350d6e Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Sun, 26 Jun 2016 19:32:30 +0100 Subject: [PATCH 39/73] Updated the encrypted Travis CI config. --- tests/functional_tests/config.py.enc | Bin 13328 -> 14000 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/functional_tests/config.py.enc b/tests/functional_tests/config.py.enc index 8d1b8538aeeb2f8de262b008be3c316a0112cf07..a45d3e5db109541513bae82a6c158fb709d90346 100644 GIT binary patch literal 14000 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

x{?vT7C*mbs@ z>7||4902P1g+1?)kVN$@1#N7wsh?Px!YK**S z*-0k%St`d#=V~TMiJyXq$cOOyMzgf=NOhFBqevhp7yJn6$l^c9F7dmYopcD+N4b06 zGja9(=0oWmItuE-p~gnKJNx5QyV zexTQQEt68};A;!i1Rr_>!>xZQ3#=S>0QBU)Y2qjtMi!N|R#pJ8nquPva5r=)UP^MK zK>Wbqr(q}ltfh7@scS*Tk1Cw?Q|&JK0PD*wTZie0iiv&onE|h`Hu2GH{eZEYrYqWT zNS7Spp!T@=_W?WRNNr528pD=yO$q5bibx-6 Hv?t?&d4&`>4$b_<$HOG-}byF9)gC3CiP>mKtLRbwxAC~6p7$!|7psu zwg`-NU0Dk4Vp#s}DYomtpbqk+FKC1}sG`kqV$+dW1K4jx{6GB0O4KAiNV$sXbB)_1 z;T#aCD-lSYXHF`QWOzZGNnZNGD0z|dXaNgl;O*|KV;Un1Tzqx%OFkZ$nNWLSI&ws; zF4{$-L2OtK&@!dMc98>w--tfquCiOCPO6(@fjA5h-MwUpCQXr8`L0N+T1=XCo&wm` zSW#}x2|-()15Dz8nN8JDa78BI7*x%;_!9s7>@~?dnn^|E!%DDrC>P9@G#4*M%o*OryL?*KG}{}o`BKQ- zJP~!0uzFteyxK=sm7&;ILr0QmM=Zy$a0VLkI`TvgD^y!x9&vA8Yhpz6y6owDYELiL z)n#cwb!s*2!av0SKw5Jr%7I?FVZg?Sed;}A;kH0sj14gnDX)?-O;PrjpSOy;9P=;N zBN2JXVNNU1agMwQvC#GuVgP_&sb0Ktjcv#G(nRlr!IIr3$FeKuQv!+7xtxGH4|RCY z9>-0?42@VE8bo%F8w6v2kRzqT*hddpU!o!Xx1^aiCLHTIq|75Y`AUl91Ed80HAPU5 zQBz6(KxFn@g_=YfXo3)TgWbvJ1&8CVb77mTVEdJH-4?u3xl)J>3^vWPXAXG$O<9Oe z3WMMRB91aZ4XcA@XHv>bBVwur#&cZvK+ctIfw#D5@1JN{*?(VW2k|7C@Jy-Et?qM8 zc1^M6*hocSZVBxm-Ye$*y%Z$nvIplu93faCNd%ZPLib)6Pu@95^wg{hCHG*<#8hL{ ztK1kaJ7?8SrVo=SJROz&&A_-48B{DUld`8s0}Yr#7XlIp>(fvfCP?hKvw7G=*S3|o z!Xi>@EZ)O3pe)->B=PgF93O7`gJrMCTFw|$%^=IsT}ehs*{V!~wRM1~>m4}1MyO!% zDKxOvUH+;h0CI}jJqC|*1U^z5d>7;F?uACDJfvC&JrU$J#% zwv%XLwqt}>`rMn28K$=90}XFC*+gddXT>h|+s1s|os|f27r6Oleg)FN`D=39` zNz%`>P*Wr5>Yk@Wh9NiprP6d=HLJN5_Ao0b6B|-Nid*_WwFLTeSp>aqHi*4RxH8%8 zsE(t%2H+PnUkL*XzaA&mUxJMW+5lM%izKd&U|+i3B_e2m7K4XF=Scbt3Y0tZh=uoA=gDFx$Sva^Cx% z8}%yEIf6O#i11%@U5-$OuQ7+YW81{~xEaT%&SevO!0Q27eX7~YimqG4ge=Jfc{~~{ zN@mtacNFWM3FVZ)T5m-W=}{A@>#4k_2p64<$%cc^t4TJ=N{yFN9y<4=3y3YnP0S$h zQPjV5yJH$GxHuQ>7Yxhav~on${aWptT1fm7wTUM)wGge-Jz&(Dmr@dgXtT0wcbrF+ zLdXJaM<(dWSMZXj7lP9ry&4VRnPrB{`KU z|6NoBc2mL)>2neB4U08^Bj>9MJ5{Xr+yH~U0|M!puvY17w%qvg2~Mm(*mtGGJ~9b= z4?ncFMfQQ78kS-_z?MjUpxxGEWfM)Wd5xAa-=d W=jh1hECwB`32&cWDO&{j&lo+6qdQFi literal 13328 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 From 06513ecfb184e4b3499f3054f8a68ebb9fa91d38 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Mon, 5 Jun 2017 16:36:34 +0000 Subject: [PATCH 40/73] Removed the pyvirtualdisplay and added the chromedriver-installer dependency. --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 0bffc44d..e85d3245 100644 --- a/tox.ini +++ b/tox.ini @@ -12,7 +12,7 @@ deps= selenium liveandletdie>=0.0.6 pyopenssl - pyvirtualdisplay + chromedriver-installer py26: python-openid py26: django==1.6 py27: django From d956b3f6abbe9afb63aa050c0d38870b33fcb0fb Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Mon, 5 Jun 2017 16:39:02 +0000 Subject: [PATCH 41/73] Added user_email to expected user properties. --- tests/functional_tests/expected_values/bitbucket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional_tests/expected_values/bitbucket.py b/tests/functional_tests/expected_values/bitbucket.py index 7e67face..71a2486e 100644 --- a/tests/functional_tests/expected_values/bitbucket.py +++ b/tests/functional_tests/expected_values/bitbucket.py @@ -19,7 +19,7 @@ 'birth_date': None, 'city': None, 'country': None, - 'email': None, + 'email': conf.user_email, 'first_name': conf.user_first_name, 'gender': None, 'id': conf.user_id, From 6b9447b67ba66bb42a0d6e5045da2343a4a23b93 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Mon, 5 Jun 2017 16:45:52 +0000 Subject: [PATCH 42/73] Removed test suport for py26. --- doc/source/development.rst | 3 +-- tox.ini | 9 +++------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/doc/source/development.rst b/doc/source/development.rst index 7813a2cb..6742cee1 100644 --- a/doc/source/development.rst +++ b/doc/source/development.rst @@ -115,8 +115,7 @@ Testing Tests are written in `pytest `__ and `Tox `__ is used to run them against -**Python 2.6**, **Python 2.7** and **Python 3.4**. - +**Python 2.7** and **Python 3.6**. There are currently only *functional* (*end-to-end*) `Selenium `__ tests. diff --git a/tox.ini b/tox.ini index e85d3245..90de69f7 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist=py26, py27, py34 +envlist=py27, py36 skip_install=true skipsdist=true @@ -13,14 +13,11 @@ deps= liveandletdie>=0.0.6 pyopenssl chromedriver-installer - py26: python-openid - py26: django==1.6 - py27: django + django py27: gae-installer py27: sphinx==1.1.3 py27: python-openid - py34: django - py34: python3-openid + py36: python3-openid passenv=TRAVIS FUNCTIONAL_TESTS_CONFIG setenv = PYTHONPATH = {toxinidir} From 2a7ca502d3ed7927439e93e777a0a4feeccdd301 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Mon, 5 Jun 2017 16:48:52 +0000 Subject: [PATCH 43/73] Fixed expected values for GitHub provider. --- tests/functional_tests/expected_values/github.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/functional_tests/expected_values/github.py b/tests/functional_tests/expected_values/github.py index a92cbc87..9d90a896 100644 --- a/tests/functional_tests/expected_values/github.py +++ b/tests/functional_tests/expected_values/github.py @@ -8,7 +8,7 @@ conf = fixtures.get_configuration('github') LINK = 'https://github.com/{0}'.format(conf.user_username) -PICTURE = re.compile(r'https://avatars\.githubusercontent.com/u/{0}\?v=\d' +PICTURE = re.compile(r'https://avatars\d*\.githubusercontent.com/u/{0}\?v=\d+' .format(conf.user_id)) CONFIG = { @@ -45,7 +45,8 @@ 'content_should_contain': [ conf.user_id, conf.user_name, conf.user_first_name, conf.user_last_name, - conf.user_city, conf.user_country, + conf.user_city, + conf.user_location, # User info JSON keys 'login', 'id', 'avatar_url', 'gravatar_id', 'url', 'html_url', From c79631a33dc1bf73f70d43e0a440ae0e9efb4dd0 Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Wed, 7 Jun 2017 10:36:14 +0000 Subject: [PATCH 44/73] Fixed the image pattern on the Meetup expected values. --- tests/functional_tests/expected_values/meetup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional_tests/expected_values/meetup.py b/tests/functional_tests/expected_values/meetup.py index 78c08a85..50c85c5a 100644 --- a/tests/functional_tests/expected_values/meetup.py +++ b/tests/functional_tests/expected_values/meetup.py @@ -7,7 +7,7 @@ conf = fixtures.get_configuration('meetup') LINK = 'http://www.meetup.com/members/{0}'.format(conf.user_id) -PICTURE = re.compile(r'http://photos\d+.meetupstatic.com/photos/member/' +PICTURE = re.compile(r'https://.*?.meetupstatic.com/photos/member/' r'\w/\d+/\w/\d+/member_\d+.jpeg') CONFIG = { From 335966765befdfd0d1425be99e943ff78a2e0dec Mon Sep 17 00:00:00 2001 From: Peter Hudec Date: Wed, 7 Jun 2017 12:16:18 +0000 Subject: [PATCH 45/73] Fixed the prettify url. --- tests/functional_tests/templates/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional_tests/templates/index.html b/tests/functional_tests/templates/index.html index aa4645d4..6f2cfc06 100644 --- a/tests/functional_tests/templates/index.html +++ b/tests/functional_tests/templates/index.html @@ -3,7 +3,7 @@ Authomatic Functional Test - +