Google App Engine:Webtest模拟登录用户和管理员

Pic*_*els 4 python google-app-engine

从webtest文档中我了解到:

模拟身份验证的最佳方法是,如果您的应用程序在environ ['REMOTE_USER']中查看是否有人通过身份验证.然后你可以简单地设置该值,如:

app.get('/secret', extra_environ=dict(REMOTE_USER='bob'))
Run Code Online (Sandbox Code Playgroud)

我试图在Google App引擎环境中做同样的事情.我想模拟登录用户和管理员用户.

如果可能,我必须在extra_environ中设置哪些字典值来完成此操作?

Pic*_*els 6

设置用户:

os.environ['USER_EMAIL'] = 'info@example.com'
Run Code Online (Sandbox Code Playgroud)

设置管理员:

os.environ['USER_IS_ADMIN'] = '1'
Run Code Online (Sandbox Code Playgroud)

这就是我整个测试的样子.我的例子使用webtest,nose,nosegae和gaetestbed.

class TestingRoutes(WebTestCase, unittest.TestCase):

    APPLICATION = application()

    def tearDown(self):
        os.environ['USER_EMAIL'] = ''
        os.environ['USER_IS_ADMIN'] = ''

    #AdminIndex .....
    def test_adminindex_no_user(self):
        #No user: redirect to login form
        response = app.get( url_map['adminindex'] )
        self.assertRedirects(response)

    def test_adminindex_user(self):      
        os.environ['USER_EMAIL'] = 'info@example.com'
        response = app.get( url_map['adminindex'] )
        self.assertForbidden(response)

    def test_adminindex_admin(self):
        os.environ['USER_EMAIL'] = 'info@example.com'
        os.environ['USER_IS_ADMIN'] = '1'
        response = app.get( url_map['adminindex'] )
        self.assertOK(response)
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.