<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">&nbsp;&nbsp; &nbsp;<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; ">&nbsp; &nbsp; <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; ">&nbsp; &nbsp; &nbsp; &nbsp; 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; ">&nbsp; &nbsp; &nbsp; &nbsp; request = TestRequest()</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">&nbsp; &nbsp; &nbsp; &nbsp; 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; ">&nbsp; &nbsp; &nbsp; &nbsp; newInteraction(request)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">&nbsp; &nbsp; &nbsp; &nbsp; interaction = getInteraction()</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">&nbsp; &nbsp; &nbsp; &nbsp; <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; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]:</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<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; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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); ">&lt;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">&nbsp;&nbsp; </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">&nbsp;&nbsp; </span>i18n_domain=<span style="color: #009019">"flats"</span><span style="text-decoration: underline">&gt;</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">&nbsp; </span>&lt;!-- This file contains sample security policy definition --&gt;</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">&nbsp; </span><span style="color: #151490">&lt;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">/&gt;</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">&nbsp; </span><span style="color: #151490">&lt;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">/&gt;</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">&nbsp; </span><span style="color: #151490">&lt;include</span><span style="color: #000000"> </span><span style="color: #151490">package=</span>"zope.securitypolicy"<span style="color: #000000"> </span><span style="color: #151490">/&gt;</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">&nbsp; </span>&lt;securityPolicy<span style="color: #000000">&nbsp;</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">&nbsp;&nbsp; &nbsp; </span><span style="color: #151490">component=</span>"zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"<span style="color: #000000"> </span><span style="color: #151490">/&gt;</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">&nbsp; </span>&lt;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">&nbsp;&nbsp; &nbsp; </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">&nbsp;&nbsp; &nbsp; </span><span style="color: #151490">title=</span>"Unauthenticated User"<span style="color: #000000"> </span><span style="color: #151490">/&gt;</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">&nbsp; </span>&lt;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">&nbsp;&nbsp; &nbsp; </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">&nbsp;&nbsp; &nbsp; </span><span style="color: #151490">title=</span>"Unauthenticated Users"<span style="color: #000000"> </span><span style="color: #151490">/&gt;</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">&nbsp; </span>&lt;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">&nbsp;&nbsp; &nbsp; </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">&nbsp;&nbsp; &nbsp; </span><span style="color: #151490">title=</span>"Authenticated Users"<span style="color: #000000"> </span><span style="color: #151490">/&gt;</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">&nbsp; </span>&lt;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">&nbsp;&nbsp; &nbsp; </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">&nbsp;&nbsp; &nbsp; </span><span style="color: #151490">title=</span>"All Users"<span style="color: #000000"> </span><span style="color: #151490">/&gt;</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">&nbsp; &nbsp; </span><span style="color: #151490">&lt;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">/&gt;</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">&lt;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">/&gt;</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">&nbsp; <span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #151490">&lt;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">/&gt;</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>&lt;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">/&gt;</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>&lt;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">/&gt;</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); ">&lt;/configure&gt;</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>