如何测试金字塔安全设置?

问题描述 投票:4回答:2

是否有推荐的方法来测试Pyramid应用程序中的安全设置?更具体地说,我正在使用路线和自定义路线工厂。使用细粒度的ACL,可以将安全设置分为不同的位置:配置设置,工厂,@ view_config中设置的权限以及视图中权限的事件显式检查。

单元和功能测试(http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/testing.html)上的页面似乎没有表明测试用户A是否只能查看和修改允许其访问的数据的方法。

security testing pyramid
2个回答
5
投票
myapp = pyramid.paster.get_app('testing.ini') app = TestApp(myapp) resp = app.post('/login', params={'login': 'foo', 'password': 'seekrit'}) # this may be a redirect in which case you may want to follow it resp = app.get('/protected/resource') assert resp.status_code == 200

就仅测试应用程序的某些部分而言,您可以使用自定义项覆盖身份验证策略(或仅使用自定义组查找器。)>

def make_test_groupfinder(principals=None):
    def _groupfinder(u, r):
        return principals
    return _groupfinder

然后您可以使用此功能来模拟各种主体。如果您的应用还依赖于任何地方的authenticated_userid(request),则此操作不会处理用户ID。为此,您必须将认证策略替换为虚拟策略。

class DummyAuthenticationPolicy(object):
    def __init__(self, userid, extra_principals=()):
        self.userid = userid
        self.extra_principals = extra_principals

    def authenticated_userid(self, request):
        return self.userid

    def effective_principals(self, request):
        principals = [Everyone]
        if self.userid:
            principals += [Authenticated]
            principals += list(self.extra_principals)
        return principals

    def remember(self, request, userid, **kw):
        return []

    def forget(self, request):
        return []

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.