Skip to content

TypeError: __init__() missing 1 required positional argument: 'strategy' #2

@stephenomalley

Description

@stephenomalley

Not sure what I've done wrong, but in our app we get the error TypeError: __init__() missing 1 required positional argument: 'strategy' when running tests. It happens for the first test and seems to be caused by the __init__ method not being patched. It seems to only effect the first test run in our suite as on later tests the __init__ method is patched.

If we add from social_django import views in the __init__.py of our project root then the error doesn't appear. If we remove any social_core backends from out AUTHENTICATION_BACKENDS list then the error doesn't occur. So the issue has a workaround, but I'm just wondering if there is something wrong with our set up.

Here are our versions:
Django==1.11.10
social-auth-app-django==2.1.0
social-auth-app-django-mongoengine==1.0.0
social-auth-core==1.7.0
social-auth-storage-mongoengine==1.0.1

Python 3.6.4

Our settings.py has the following setup:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...
    'social_django_mongoengine',
   ...
)
AUTHENTICATION_BACKENDS = (
    'social_core.backends.facebook.FacebookOAuth2',
   ...
)
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATE_PATH],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                "django.contrib.auth.context_processors.auth",
                'social_django.context_processors.backends',
                'social_django.context_processors.login_redirect',
            ],
            "debug": DEBUG,

        }
    }
]

Full Stack trace of error:

Error
Traceback (most recent call last):
  File ".../unittest/case.py", line 58, in testPartExecutor
    yield
  File ".../unittest/case.py", line 600, in run
    testMethod()
  File ".../site-packages/mock/mock.py", line 1305, in patched
    return func(*args, **keywargs)
  File ".../site-packages/django/test/utils.py", line 384, in inner
    return func(*args, **kwargs)
  File "...acceptance/tests.py", line 152, in test_access_revoked_request_study_list_denied
    self.client.login(**self.creds)
  File ".../django/test/client.py", line 628, in login
    user = authenticate(**credentials)
  File ".../site-packages/django/contrib/auth/__init__.py", line 68, in authenticate
    for backend, backend_path in _get_backends(return_tuples=True):
  File "/home/stephen/projects/prolific_python_3/lib/python3.5/site-packages/django/contrib/auth/__init__.py", line 29, in _get_backends
    backend = load_backend(backend_path)
  File ".../site-packages/django/contrib/auth/__init__.py", line 23, in load_backend
    return import_string(path)()
Exception: __init__() missing 1 required positional argument: 'strategy'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions