diff --git a/python-social-auth-core.changes b/python-social-auth-core.changes index 0ee6fd4..6bd60fc 100644 --- a/python-social-auth-core.changes +++ b/python-social-auth-core.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Thu Apr 11 04:22:39 UTC 2019 - John Vandenberg + +- Remove build dependency on unittest2, as this was also a missing + runtime dependency on both Python 2 and 3 as the tests are + distributed in the runtime package, and are used by the test suite + of other packages. +- Suggest python3-saml dependency for both Python 2 & 3, and + activate the SAML tests, adding missing saml_config.json for tests. + Not recommended due to dependency chain including libxmlsec, + which at the moment is unsupported v1.2.20 +- Add README.md to %doc + ------------------------------------------------------------------- Wed Apr 3 08:43:25 UTC 2019 - Tomáš Chvátal diff --git a/python-social-auth-core.spec b/python-social-auth-core.spec index c50415b..4af9880 100644 --- a/python-social-auth-core.spec +++ b/python-social-auth-core.spec @@ -26,6 +26,9 @@ License: BSD-3-Clause Group: Development/Languages/Python URL: https://github.com/python-social-auth/social-core Source: https://files.pythonhosted.org/packages/source/s/social-auth-core/social-auth-core-%{version}.tar.gz +# Missing test data https://github.com/python-social-auth/social-core/pull/351 +Source1: https://raw.githubusercontent.com/python-social-auth/social-core/master/social_core/tests/backends/data/saml_config.json +Patch0: remove-unittest2.patch BuildRequires: %{python_module PyJWT >= 1.4.0} BuildRequires: %{python_module coverage >= 3.6} BuildRequires: %{python_module cryptography >= 2.1.1} @@ -34,12 +37,12 @@ BuildRequires: %{python_module mock} BuildRequires: %{python_module nose >= 1.2.1} BuildRequires: %{python_module oauthlib >= 1.0.3} BuildRequires: %{python_module python-jose >= 3.0.0} +BuildRequires: %{python_module python3-saml} BuildRequires: %{python_module rednose >= 0.4.1} BuildRequires: %{python_module requests >= 2.9.1} BuildRequires: %{python_module requests-oauthlib >= 0.6.1} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module six >= 1.10.0} -BuildRequires: %{python_module unittest2} BuildRequires: ca-certificates BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -54,6 +57,7 @@ Requires: python-python-jose >= 3.0.0 Requires: python-requests >= 2.9.1 Requires: python-requests-oauthlib >= 0.6.1 Requires: python-six >= 1.10.0 +Suggests: python-python3-saml BuildArch: noarch %ifpython2 Requires: python2-python-openid >= 2.2.5 @@ -76,6 +80,8 @@ storage solutions. %prep %setup -q -n social-auth-core-%{version} +%patch0 -p1 +cp %{SOURCE1} social_core/tests/backends/data/ %build %python_build @@ -85,10 +91,10 @@ storage solutions. %python_expand %fdupes %{buildroot}%{$python_sitelib} %check -%python_expand %{_bindir}/nosetests-%{$python_bin_suffix} --ignore-files test_saml.py +%python_expand %{_bindir}/nosetests-%{$python_bin_suffix} %files %{python_files} -%doc CHANGELOG.md +%doc CHANGELOG.md README.md %license LICENSE %{python_sitelib}/* diff --git a/remove-unittest2.patch b/remove-unittest2.patch new file mode 100644 index 0000000..6450177 --- /dev/null +++ b/remove-unittest2.patch @@ -0,0 +1,172 @@ +Index: social-auth-core-3.1.0/social_core/tests/__init__.py +=================================================================== +--- /dev/null ++++ social-auth-core-3.1.0/social_core/tests/__init__.py +@@ -0,0 +1,6 @@ ++try: ++ import unittest2 ++ import sys ++ sys.modules['unittest'] = unittest2 ++except ImportError: ++ pass +Index: social-auth-core-3.1.0/social_core/tests/actions/actions.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/actions/actions.py ++++ social-auth-core-3.1.0/social_core/tests/actions/actions.py +@@ -1,6 +1,6 @@ + import json + import requests +-import unittest2 as unittest ++import unittest + + from httpretty import HTTPretty + +Index: social-auth-core-3.1.0/social_core/tests/backends/base.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/backends/base.py ++++ social-auth-core-3.1.0/social_core/tests/backends/base.py +@@ -1,4 +1,4 @@ +-import unittest2 as unittest ++import unittest + import requests + + from httpretty import HTTPretty +Index: social-auth-core-3.1.0/social_core/tests/backends/open_id_connect.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/backends/open_id_connect.py ++++ social-auth-core-3.1.0/social_core/tests/backends/open_id_connect.py +@@ -3,7 +3,7 @@ import os + import sys + import json + import datetime +-import unittest2 ++import unittest + import base64 + from calendar import timegm + +Index: social-auth-core-3.1.0/social_core/tests/backends/test_broken.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/backends/test_broken.py ++++ social-auth-core-3.1.0/social_core/tests/backends/test_broken.py +@@ -1,4 +1,4 @@ +-import unittest2 as unittest ++import unittest + + from ...backends.base import BaseAuth + from ..strategy import TestStrategy +Index: social-auth-core-3.1.0/social_core/tests/backends/test_elixir.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/backends/test_elixir.py ++++ social-auth-core-3.1.0/social_core/tests/backends/test_elixir.py +@@ -1,4 +1,4 @@ +-import unittest2 ++import unittest + + from .oauth import OAuth1Test, OAuth2Test + from .open_id_connect import OpenIdConnectTestMixin +Index: social-auth-core-3.1.0/social_core/tests/backends/test_globus.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/backends/test_globus.py ++++ social-auth-core-3.1.0/social_core/tests/backends/test_globus.py +@@ -1,5 +1,5 @@ + import json +-import unittest2 ++import unittest + + from .oauth import OAuth1Test, OAuth2Test + from .open_id_connect import OpenIdConnectTestMixin +Index: social-auth-core-3.1.0/social_core/tests/backends/test_google.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/backends/test_google.py ++++ social-auth-core-3.1.0/social_core/tests/backends/test_google.py +@@ -1,6 +1,6 @@ + import datetime + import json +-import unittest2 ++import unittest + + from httpretty import HTTPretty + +Index: social-auth-core-3.1.0/social_core/tests/backends/test_saml.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/backends/test_saml.py ++++ social-auth-core-3.1.0/social_core/tests/backends/test_saml.py +@@ -1,7 +1,7 @@ + import re + import json + import sys +-import unittest2 ++import unittest + import requests + import os + from os import path +@@ -28,11 +28,11 @@ from ...exceptions import AuthMissingPar + DATA_DIR = path.join(path.dirname(__file__), 'data') + + +-@unittest2.skipIf('TRAVIS' in os.environ, +- 'Travis-ci segfaults probably due to a bad ' +- 'dependencies build') +-@unittest2.skipIf('__pypy__' in sys.builtin_module_names, +- 'dm.xmlsec not compatible with pypy') ++@unittest.skipIf('TRAVIS' in os.environ, ++ 'Travis-ci segfaults probably due to a bad ' ++ 'dependencies build') ++@unittest.skipIf('__pypy__' in sys.builtin_module_names, ++ 'dm.xmlsec not compatible with pypy') + class SAMLTest(BaseBackendTest): + backend_path = 'social_core.backends.saml.SAMLAuth' + expected_username = 'myself' +Index: social-auth-core-3.1.0/social_core/tests/backends/test_utils.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/backends/test_utils.py ++++ social-auth-core-3.1.0/social_core/tests/backends/test_utils.py +@@ -1,4 +1,4 @@ +-import unittest2 as unittest ++import unittest + + from ..models import TestStorage + from ..strategy import TestStrategy +Index: social-auth-core-3.1.0/social_core/tests/test_exceptions.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/test_exceptions.py ++++ social-auth-core-3.1.0/social_core/tests/test_exceptions.py +@@ -1,4 +1,4 @@ +-import unittest2 as unittest ++import unittest + + from ..exceptions import SocialAuthBaseException, WrongBackend, \ + AuthFailed, AuthTokenError, \ +Index: social-auth-core-3.1.0/social_core/tests/test_partial.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/test_partial.py ++++ social-auth-core-3.1.0/social_core/tests/test_partial.py +@@ -1,4 +1,4 @@ +-import unittest2 as unittest ++import unittest + try: + from mock import Mock, patch + except ImportError: +Index: social-auth-core-3.1.0/social_core/tests/test_storage.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/test_storage.py ++++ social-auth-core-3.1.0/social_core/tests/test_storage.py +@@ -1,6 +1,6 @@ + import six + import random +-import unittest2 as unittest ++import unittest + + from ..strategy import BaseStrategy + from ..storage import UserMixin, NonceMixin, AssociationMixin, \ +Index: social-auth-core-3.1.0/social_core/tests/test_utils.py +=================================================================== +--- social-auth-core-3.1.0.orig/social_core/tests/test_utils.py ++++ social-auth-core-3.1.0/social_core/tests/test_utils.py +@@ -1,5 +1,5 @@ + import sys +-import unittest2 as unittest ++import unittest + + try: + from unittest.mock import Mock diff --git a/saml_config.json b/saml_config.json new file mode 100644 index 0000000..ee6680a --- /dev/null +++ b/saml_config.json @@ -0,0 +1,23 @@ +{ + "SOCIAL_AUTH_SAML_SP_ENTITY_ID": "https://github.com/omab/python-social-auth/saml-test", + "SOCIAL_AUTH_SAML_SP_PUBLIC_CERT": "MIICsDCCAhmgAwIBAgIJAO7BwdjDZcUWMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNBMRkwFwYDVQQIExBCcml0aXNoIENvbHVtYmlhMRswGQYDVQQKExJweXRob24tc29jaWFsLWF1dGgwHhcNMTUwNTA4MDc1ODQ2WhcNMjUwNTA3MDc1ODQ2WjBFMQswCQYDVQQGEwJDQTEZMBcGA1UECBMQQnJpdGlzaCBDb2x1bWJpYTEbMBkGA1UEChMScHl0aG9uLXNvY2lhbC1hdXRoMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq3g1Cl+3uR5vCnN4HbgjTg+m3nHhteEMyb++ycZYre2bxUfsshER6x33l23tHckRYwm7MdBbrp3LrVoiOCdPblTml1IhEPTCwKMhBKvvWqTvgfcSSnRzAWkLlQYSusayyZK4n9qcYkV5MFni1rbjx+Mr5aOEmb5u33amMKLwSTwIDAQABo4GnMIGkMB0GA1UdDgQWBBRRiBR6zS66fKVokp0yJHbgv3RYmjB1BgNVHSMEbjBsgBRRiBR6zS66fKVokp0yJHbgv3RYmqFJpEcwRTELMAkGA1UEBhMCQ0ExGTAXBgNVBAgTEEJyaXRpc2ggQ29sdW1iaWExGzAZBgNVBAoTEnB5dGhvbi1zb2NpYWwtYXV0aIIJAO7BwdjDZcUWMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAJwsMU3YSaybVjuJ8US0fUhlPOlM40QFCGL4vB3TEbb24Mq8HrjUwrU0JFPGls9a2OYzN2B3e35NorMuxs+grGtr2yP6LvuX+nV6A93wb4ooGHoGfC7VLlyxSSns937SS5R1pzQ4gWzZma2KGWKICWph5zQ0ARVhL63967mGLmoI=", + "SOCIAL_AUTH_SAML_SP_PRIVATE_KEY": "MIICXgIBAAKBgQCq3g1Cl+3uR5vCnN4HbgjTg+m3nHhteEMyb++ycZYre2bxUfsshER6x33l23tHckRYwm7MdBbrp3LrVoiOCdPblTml1IhEPTCwKMhBKvvWqTvgfcSSnRzAWkLlQYSusayyZK4n9qcYkV5MFni1rbjx+Mr5aOEmb5u33amMKLwSTwIDAQABAoGBAIHAg6NJSiYC/NYpVzWfKlasuoNy78R5adXYSNZiCR5V5FNm5OzmODZgXUt6g0A7FomshIT/txQWoV7y5FmwPs8n13JY3Hdt4tJ6MHw2feLo710+OEp9VBQus3JsB2F8ONYrGvs00hPPL7h5av/rzTdE8F67YM1mSgeg7xEF6BghAkEA12OOqSzp2MLTNY7PqOaLDzy4aAMVNN3Ntv2jBN0jq7s1b5ilQ2PGkLwdtkicq/VZcRyUqVbZbMwz05II3nqx3wJBAMsVhRQ5sdFCRBzEbSAm2YEJaFh5u6QT3+zWHMFpPJRnaBAWz3RXKEnleJ+DS2Xz1Jm6ZrmLdZiwMx/8dK5rDZECQQC7GTdWi7ZC3dIcpwaKIGHRhZxmda8ZMkc9Wwwd8H7I8aFUZFPCu0xEc7SXoHHACit8zyfwBYpvMN8gPK3JnOkfAkEAsUSpk0wBMT38one7IZOHzCDgGkq4RbKrhdon45Pus0PIDDM9BrqFimtpbSN4DxhVfZK91DwtfAhhuAvv9cewYQJAPMhpAqv3PBGYmtRDUlWXJQv2JRJJkrvbbqgBed2OX5RRgj5V3SR6PBhLbcTZ+q+1tdPkMFzZo5U6MN5m/6oXvQ==", + "SOCIAL_AUTH_SAML_ORG_INFO": { + "en-US": {"name": "psa", "displayname": "PSA", "url": "https://github.com/omab/python-social-auth/"} + }, + "SOCIAL_AUTH_SAML_TECHNICAL_CONTACT": + {"givenName": "Tech Gal", "emailAddress": "technical@example.com"}, + "SOCIAL_AUTH_SAML_SUPPORT_CONTACT": + {"givenName": "Support Guy", "emailAddress": "support@example.com"}, + "SOCIAL_AUTH_SAML_ENABLED_IDPS": { + "testshib": { + "entity_id": "https://idp.testshib.org/idp/shibboleth", + "url": "https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO", + "x509cert": "MIIEDjCCAvagAwIBAgIBADANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJVUzEVMBMGA1UECBMMUGVubnN5bHZhbmlhMRMwEQYDVQQHEwpQaXR0c2J1cmdoMREwDwYDVQQKEwhUZXN0U2hpYjEZMBcGA1UEAxMQaWRwLnRlc3RzaGliLm9yZzAeFw0wNjA4MzAyMTEyMjVaFw0xNjA4MjcyMTEyMjVaMGcxCzAJBgNVBAYTAlVTMRUwEwYDVQQIEwxQZW5uc3lsdmFuaWExEzARBgNVBAcTClBpdHRzYnVyZ2gxETAPBgNVBAoTCFRlc3RTaGliMRkwFwYDVQQDExBpZHAudGVzdHNoaWIub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArYkCGuTmJp9eAOSGHwRJo1SNatB5ZOKqDM9ysg7CyVTDClcpu93gSP10nH4gkCZOlnESNgttg0r+MqL8tfJC6ybddEFB3YBo8PZajKSe3OQ01Ow3yT4I+Wdg1tsTpSge9gEz7SrC07EkYmHuPtd71CHiUaCWDv+xVfUQX0aTNPFmDixzUjoYzbGDrtAyCqA8f9CN2txIfJnpHE6q6CmKcoLADS4UrNPlhHSzd614kR/JYiks0K4kbRqCQF0Dv0P5Di+rEfefC6glV8ysC8dB5/9nb0yh/ojRuJGmgMWHgWk6h0ihjihqiu4jACovUZ7vVOCgSE5Ipn7OIwqd93zp2wIDAQABo4HEMIHBMB0GA1UdDgQWBBSsBQ869nh83KqZr5jArr4/7b+QazCBkQYDVR0jBIGJMIGGgBSsBQ869nh83KqZr5jArr4/7b+Qa6FrpGkwZzELMAkGA1UEBhMCVVMxFTATBgNVBAgTDFBlbm5zeWx2YW5pYTETMBEGA1UEBxMKUGl0dHNidXJnaDERMA8GA1UEChMIVGVzdFNoaWIxGTAXBgNVBAMTEGlkcC50ZXN0c2hpYi5vcmeCAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAjR29PhrCbk8qLN5MFfSVk98t3CT9jHZoYxd8QMRLI4j7iYQxXiGJTT1FXs1nd4Rha9un+LqTfeMMYqISdDDI6tv8iNpkOAvZZUosVkUo93pv1T0RPz35hcHHYq2yee59HJOco2bFlcsH8JBXRSRrJ3Q7Eut+z9uo80JdGNJ4/SJy5UorZ8KazGj16lfJhOBXldgrhppQBb0Nq6HKHguqmwRfJ+WkxemZXzhediAjGeka8nz8JjwxpUjAiSWYKLtJhGEaTqCYxCCX2Dw+dOTqUzHOZ7WKv4JXPK5G/Uhr8K/qhmFT2nIQi538n6rVYLeWj8Bbnl+ev0peYzxFyF5sQA==" + }, + "other": { + "entity_id": "https://unused.saml.example.com", + "url": "https://unused.saml.example.com/SAML2/Redirect/SSO" + } + } +}