KindOfGuy
KindOfGuy

Reputation: 3211

Testing Django allauth

I am trying to test my app but not sure how to configure the django-allauth in the test environment. I am getting:

ImproperlyConfigured: No Facebook app configured: please add a SocialApp using the Django admin

My approach so far is to instantiate app objects inside tests.py with actual Facebook app parameters, an app which functions correctly locally in the browser:

from allauth.socialaccount.models import SocialApp

apper = SocialApp.objects.create(provider=u'facebook', 
    name=u'fb1', client_id=u'7874132722290502',
    secret=u'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
apper.sites.create(domain='localhost:8000', name='creyu.org')

How can I get these tests running? Thanks

Upvotes: 7

Views: 1509

Answers (2)

mullerivan
mullerivan

Reputation: 2032

I would create a migration so all your environments have the data

eg

import os
from django.db import models, migrations
from django.core.management import call_command
from django.conf import settings

class Migration(migrations.Migration):

    def add_initial_providers(apps, schema_editor):
        import pdb;pdb.set_trace()
        call_command(
            'loaddata',
            os.path.join(settings.BASE_DIR,         'fixtures/social_auth.json'),
        verbosity=0)

dependencies = [
    ('my_app', '001_auto_20160128_1846'),
]


operations = [
    migrations.RunPython(add_initial_providers),
]

Upvotes: 0

kreld
kreld

Reputation: 752

Where inside tests.py do you instantiate this app object? If it's inside the setUpModule() method, there shouldn't be a problem.

Personally, I would create a fixture init_facebook_app.json with the relevant information and then inside tests.py (before the test cases) define:

from django.core.management import call_command    

def setUpModule():
    call_command('loaddata', 'init_facebook_app.json', verbosity=0)

This ensures that the data in the fixture are loaded before the tests are run, and that they are loaded only once, i.e. not before each test. See this for reference regarding call_command.

Lastly, posting your Facebook app secret key anywhere on the internet is not a good idea - I would reset it if I were you.

Upvotes: 3

Related Questions