<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi<div>I am testing some security issues and written the test as such:</div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span style="color: #2c2cfb">import</span> zope.configuration.xmlconfig</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span style="color: #2c2cfb">import</span> flats.security</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span style="color: #2c2cfb">class</span> TestStatusCodes(unittest.TestCase):</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"> <br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> <span style="color: #2c2cfb">def</span> test_authenticated(self):</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> zope.configuration.xmlconfig.file(<span style="color: #00b623">"ftesting.zcml"</span>, <span style="text-decoration: underline">flats</span>.security)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> request = TestRequest()</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> request.setPrincipal(principalRegistry.getPrincipal(<span style="color: #00b623">"flats.owner"</span>))</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> newInteraction(request)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> interaction = getInteraction()</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> <span style="color: #2c2cfb">for</span> permission <span style="color: #2c2cfb">in</span> [<span style="color: #00b623">"flats.flat.Add"</span>,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> ]:</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"> <br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> self.assertTrue(interaction.checkPermission(<span style="color: #00b623">"flats.user.user.Add"</span>,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "> ProxyFactory(object())), permission)</div></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">And the zcml as such:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><configure</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">xmlns=</span>"<a href="http://namespaces.zope.org/zope">http://namespaces.zope.org/zope</a>"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"> </span>i18n_domain=<span style="color: #009019">"flats"</span><span style="text-decoration: underline">></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(147, 6, 0); "><span style="color: #000000"> </span><!-- This file contains sample security policy definition --></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490"><include</span><span style="color: #000000"> </span><span style="color: #151490">package=</span>"zope.securitypolicy"<span style="color: #000000"> </span><span style="color: #151490">file=</span>"meta.zcml"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490"><include</span><span style="color: #000000"> </span><span style="color: #151490">package=</span>"zope.app.zcmlfiles"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490"><include</span><span style="color: #000000"> </span><span style="color: #151490">package=</span>"zope.securitypolicy"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"> </span><securityPolicy<span style="color: #000000"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">component=</span>"zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"> </span><unauthenticatedPrincipal</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">id=</span>"zope.anybody"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">title=</span>"Unauthenticated User"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"> </span><unauthenticatedGroup</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">id=</span>"zope.Anybody"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">title=</span>"Unauthenticated Users"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"> </span><authenticatedGroup</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">id=</span>"zope.Authenticated"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">title=</span>"Authenticated Users"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"> </span><everybodyGroup</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">id=</span>"zope.Everybody"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490">title=</span>"All Users"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> </span><span style="color: #151490"><permission</span><span style="color: #000000"> </span><span style="color: #151490">id=</span>"flats.flat.Add"<span style="color: #000000"> </span><span style="color: #151490">title=</span>"Flat Add"<span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #151490"><role</span><span style="color: #000000"> </span><span style="color: #151490">id=</span>"flats.Owner"<span style="color: #000000"> </span><span style="color: #151490">title=</span>"Owner of the resource"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"> <span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #151490"><grant</span><span style="color: #000000"> </span><span style="color: #151490">permission=</span>"flats.flat.Add"<span style="color: #000000"> </span><span style="color: #151490">role=</span>"flats.Owner"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><principal</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #151490">id=</span>"flats.owner"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #151490">title=</span>"Owner"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #151490">login=</span>"owner"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span>password=<span style="color: #009019">"owner"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><grant</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #151490">role=</span>"flats.Owner"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(0, 144, 25); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span><span style="color: #151490">principal=</span>"flats.owner"<span style="color: #000000"> </span><span style="color: #151490">/></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(21, 20, 144); "></configure></div><div><br></div><div>The test fails. I simply can't get what did I do wrong… I defined the permission, role, principal. Did all grants. Included security policy. Started interaction. What is missing?</div></div></body></html>