Google App Engine настраивает пользователя при использовании испытательного стенда - PullRequest
13 голосов
/ 03 июня 2011

Я использую сервис GAE testbed , и когда я запускаю users.get_current_user(), я получаю None т.е.

>>> import sys
>>> sys.path.append("/usr/local/google_appengine") # for Mac OS X
>>> from google.appengine.api import users
>>> from google.appengine.ext import testbed
>>> testbed = testbed.Testbed()
>>> testbed.activate()
>>> testbed.init_user_stub()
>>> users.get_current_user() == None
True

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

Если это возможно (и я ожидаю, что это будет), как можно войти в систему при запуске testbed из командной строки, чтобы get_current_user() вернул действительного пользователя?

Спасибо за чтение.

Ответы [ 2 ]

18 голосов
/ 01 июня 2012

Чтобы смоделировать вход в систему пользователя с правами администратора, вы можете вызвать в любом месте вашей тестовой функции:

self.testbed.setup_env(
    USER_EMAIL = 'test@example.com',
    USER_ID = '123',
    USER_IS_ADMIN = '1',
    overwrite = True)

Обратите внимание, что вам нужно использовать параметр overwrite=True!

3 голосов
/ 03 июня 2011

После некоторых экспериментов у меня сработало следующее:

>>> os.environ['USER_EMAIL'] = 'a@b.c'
>>> os.environ['USER_ID'] = '123'
>>> users.get_current_user()
users.User(email='a@b.c',_user_id='123')

Я надеюсь, что это хорошее решение, и этот ответ поможет следующему человеку столкнуться с этой проблемой.

РЕДАКТИРОВАТЬ: Связанные переменные

Во избежание /google/appengine/api/users.py:115 - AssertionError: assert _auth_domain

>>> os.environ['AUTH_DOMAIN'] = 'testbed'

За комментарий Эллиота де Вриза для администратора:

>>> os.environ['USER_IS_ADMIN'] = '1'
...