2014-07-22 15 views
5

Sto provando a testare la mia app ma non sono sicuro di come configurare django-allauth nell'ambiente di test. Io sono sempre:Test di Django allauth

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

Il mio approccio finora è di creare un'istanza di oggetti app all'interno tests.py con effettivi parametri di applicazione Facebook, un'applicazione che funziona in modo corretto a livello locale nel 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') 

Come posso far funzionare questi test? Grazie

risposta

3

Dove all'interno di tests.py si crea un'istanza di questo oggetto app? Se è all'interno del metodo setUpModule(), non dovrebbe esserci un problema.

Personalmente, creare un apparecchio init_facebook_app.json le informazioni pertinenti e poi dentro tests.py (prima dei casi di test) definiscono:

from django.core.management import call_command  

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

Questo assicura che i dati della fixture vengono caricati prima i test vengono eseguiti e che vengono caricati una sola volta, cioè non prima di ogni test. Vedi questo per reference per quanto riguarda call_command.

Infine, pubblicare la tua chiave segreta dell'app Facebook ovunque su Internet non è una buona idea - lo ripristinerei se fossi in te.

+1

avevo istanziato l'oggetto applicazione all'interno di un Testcase 'def'. Le fixture sarebbero grandiose, tranne che mi sto procurando infiniti dolori lungo le linee di: http://stackoverflow.com/questions/19857406/django-unable-to-load-test-fixtures-integrityerror che è quello che ottengo quando usando la soluzione setUpModule. Altre idee? Re: Chiave segreta: apprezzo la preoccupazione ma l'ho randomizzata prima di postare. – KindOfGuy

+1

Hmm, sono a perdita. Prova a creare il dispositivo manualmente, solo per vedere se funziona. Qualcosa sulla falsariga di '[{" pk ": 1," model ":" sites.site "," fields ": {" domain ":" 127.0.0.1:8000 "," name ":" creyu.org " }}, {"pk": 1, "model": "socialaccount.socialapp", "fields": {"name": "Facebook", "sites": [1], "secret": "XXX", " client_id ":" XXX "," chiave ":" "," fornitore ":" facebook "}}]' – kreld

+0

Ancora, questo si strozza con 'ImproperlyConfigured'. Ho preso i segmenti specifici delle fixture direttamente dai dump di dati per garantire la validità. Deve richiedere più in qualche modo. Forse devo affrontare gli errori principali riportati sopra. Altre idee? Grazie! – KindOfGuy

0

vorrei creare una migrazione in modo che tutti gli ambienti hanno i dati

esempio

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), 
] 
Problemi correlati