Как правильно протестировать промежуточное ПО, для которого требуются сессии в Django? - PullRequest
0 голосов
/ 22 июня 2011

Я пытаюсь выяснить, как протестировать промежуточное ПО в django.Промежуточное программное обеспечение, которое я пишу, регистрирует пользователя при определенных условиях (если ключ, отправленный по электронной почте, действителен).Очевидно, что я зависим от django.contrib.auth и django.contrib.sessions.

У меня проблемы с проверкой части входа в систему.Я делаю запрос, как это:

user = User.objects.create_user('user', 'user@example.org', 'password')
key = LoginKey.objects.create(user=user)
request = self.factory.get('/', data={'auth_key': key.hash}) # self.factory is a RequestFactory()
self.middleware.process_request(request) # self.middleware is MyMiddleware()

Это не удается из-за не установлен сеанса.Итак, я написал небольшой фрагмент в своем тестовом классе:

def make_session(self, request):
    SessionMiddleware().process_request(request)

, и это не удалось из-за 'User' object has no attribute 'backend'.Я не уверен в смысле этого, но подозреваю, что мне нужно запустить все промежуточное программное обеспечение, которое я установил.

На самом деле я не хочу выдумывать для этого просто запуск промежуточного программного обеспечения, но я пока не вижу другого варианта.

Так что я просто хотел знатьПрежде чем я буду преследовать этого кролика до самого конца, есть ли способ сделать это, не требуя такого большого количества клейкой ленты?

1 Ответ

1 голос
/ 22 июня 2011

Вы должны использовать тестовый клиент для этого. Это обеспечит запуск промежуточного программного обеспечения и создание ключей сеанса.

response = self.client.get('/?auth_key=%s' % key.hash)
self.assertTrue(response.context['user'].is_authenticated()) # for example
...