我想通过使用脚本更轻松地在Google App Engine实例中测试端点。根据这些信息https://webapp-improved.appspot.com/guide/testing.html,我写了一个这样的简单脚本:
from main import app
params = {
'top': 'true',
'sort_by': 'most-recent',
}
query = urllib.urlencode(params)
url = '/activities?' + query
request = webapp2.Request.blank(url)
response = request.get_response(app)
但是存在一个问题:我的处理程序进行了安全检查,以确保只有登录用户才能调用端点。如果Cookie HTTPUnauthorized
未设置属性,它将返回状态代码401(__auth__
)
HTTPUnauthorized: This server could not verify that you are authorized to access the document you requested. Either you supplied the wrong credentials (e.g., bad password), or your browser does not understand how to supply the credentials required.
以下是相关的webapp2配置
'webapp2_extras.sessions': {
'cookie_name': '__session__',
'secret_key': login.secrets.SESSION_KEY,
'cookie_args': {
'max_age': 30 * 24 * 60 * 60
}
},
'webapp2_extras.auth': {
'cookie_name': '__auth__',
# Use with 'remember' flag to make persistent cookies
'token_max_age': 30 * 24 * 60 * 60,
'user_attributes': []
},
我试图'猴子修补'我的处理程序类来绕过检查。
以下是我的处理程序类get
的{{1}}函数(它扩展为ActivitiesHandler
)
webapp2.RequestHandler
我的钱补丁代码是这样的:
def get(self):
# Checking if user is logged in
if self.secure and not self.logged_in:
self.abort(401)
# ...
然而它没有任何效果。我认为这是因为作为模块范围的变量的ActivitiesHandler.secure = False
变量在我的货币补丁代码执行之前已经与所有处理程序一起初始化。
作为替代方案,我想以编程方式为有效的app
实体创建__auth__
。但我无法找到有关此问题的相关信息。
欢迎任何指针或示例代码。