9
votes

Django Test client HTTP Basic Auth pour la demande postale

tout le monde. J'essaie d'écrire des tests pour une API reposante implémentée à l'aide de Django-Tastypie avec HTTP Basic Auth. Donc, j'ai le code suivant:

def http_auth(username, password):
    credentials = base64.encodestring('%s:%s' % (username, password)).strip()
    auth_string = 'Basic %s' % credentials
    return auth_string

class FileApiTest(TestCase):

    fixtures = ['test/fixtures/test_users.json']

    def setUp(self):
        self.extra = {
            'HTTP_AUTHORIZATION': http_auth('testuser', 'qwerty')
        }

    def test_folder_resource(self):
        response = self.client.get('/api/1.0/folder/', **self.extra)
        self.assertEqual(response.status_code, 200)

    def test_folder_resource_post(self):
        response = self.client.post('/api/1.0/folder/', **self.extra)
        self.assertNotEqual(response.status_code, 401)


4 commentaires

Peut-être vérifier votre méta: autorisation sur votre ressource? Ça dit quoi?


autorisation = djangoauthorization ()


aw, merde, je voulais dire "authentification" c'est ce que vous testez ici. La différence est l'authentification == "Qui es-tu", autorisation == "Pouvez-vous faire cela?"


Authentification = BasicAuthentication (RealM = Paramètres.social_api_realm)


3 Réponses :


7
votes

Vérifiez Cette question . J'ai utilisé ce code pour les tests utilisant à la fois d'obtenir et de poster et cela a fonctionné. La seule différence que je peux voir est que vous avez utilisé base64.encodestring au lieu de base64.b64encode.

Sinon, si cela ne fonctionne pas, comment exécutez-vous l'authentification HTTP? J'ai écrit et utilisez ce décorateur de fonction: xxx


2 commentaires

J'utilise Django-Tastypie, il possède une authentification intégrée à HTTP Bash et cela fonctionne bien. Je ne peux pas seulement faire des demandes postales avec le client de test Django et je n'ai aucune idée d'où le problème est


Ce fichier semble gérer l'authentification. Regardez-vous à travers et voyez si vous pouvez suivre ce qui ne va pas? Github.com/Toastdriven/django-tastypie/blob/master/ TASTYPIE / ...



1
votes

J'ai trouvé une raison de mon problème. Djangoauthorisation vérifie les autorisations avec le cadre de prémissions Django, car je ne l'utilise pas dans mon projet - toutes les demandes post-up / delete de non superutilisateur sont non autorisées. Mon mauvais.

Quoi qu'il en soit, merci beaucoup à vous, les gars, pour les réponses.


0 commentaires

0
votes

sur Python 3 xxx


0 commentaires