Thank you Sylvain,<br><br>I made it work, but I still have some questions.<br><br>For some tests, I need to use commit method to make them work, while in other ones it is not necessary.<br><br>This code just works if I use commit method.<br>
<br>(Line 172 of pastebin link)<br> # user1 cannot change others calendar events<br>rql = 'SET C description "description test" WHERE C is CalendarEvent'\<br>       ', C title "Calendar Event 1 Admin"'<br>
rset = req.execute(rql)<br>self.assertRaises(Unauthorized, self.commit) <br><br>and this one works without the commit method ....<br><br>(Line 184 of pastebin link)<br> # user1 can add calendar event type ONLY to his own calendar events<br>
 rql = 'SET C event_type T WHERE C is CalendarEvent'\<br>         ', C title "Calendar Event 1 Admin"'\<br>         ', T is CalendarEventType, T type "Phone Call"'<br>self.assertRaises(Unauthorized, req.execute, rql) <br>
<br>Both try to make changes to database, one to an attribute, the other one to make a new relation, but I don't understand the behaivor.<br><br>the test file<br><a href="http://pastebin.com/HZg3GL32">http://pastebin.com/HZg3GL32</a><br>
<br>the schema file<br><a href="http://pastebin.com/ESgNvPxz">http://pastebin.com/ESgNvPxz</a><br><br>Just for additional information...<br><br>This code is for a calendar cube + jquery fullcalendar plugin.<br>
<br>We'll put this cube at crealibre hg repository as soon as possible (I think by the end of this week) , so you can make a hg clone if you want to.<br>
<br>Thank you<br>Carlos Balderas<br><br><br><div class="gmail_quote">On Mon, Aug 16, 2010 at 2:29 PM, Sylvain Thénault <span dir="ltr"><<a href="mailto:sylvain.thenault@logilab.fr" target="_blank">sylvain.thenault@logilab.fr</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On 16 août 11:24, Carlos Balderas wrote:<br>
> Hi List!<br>
<br>
Hi Carlos,<br>
<div><br>
> I am working on unnitest for a cube, especially testing users permissions .<br>
><br>
> I want to test an 'Unauthorized' error using this:<br>
><br>
> # rql update sentence, this query must fail<br>
> rql = 'SET C description "description test" WHERE ....'<br>
><br>
> if I execute the rql as this:<br>
> rset = req.execute(rql)<br>
><br>
> When I run the test this is what I get:<br>
> Unauthorized: You are not allowed to perform update operation on ...<br>
><br>
> (so, the error shows as it should)<br>
><br>
> but exception does no raise if I use assertRaises method:<br>
><br>
> rql = 'SET C description "description test" WHERE ....'<br>
> self.assertRaises(Unauthorized, req.execute, rql)<br>
><br>
> this is what i get:<br>
> AssertionError: Unauthorized not raised<br>
<br>
</div>huum, I suspect there is something different in the two queries... There is no reason<br>
explaining that<br>
<br>
   req.execute(rql) # raise Unauthorized<br>
   self.assertRaises(Unauthorized, req.execute, rql) # assertion error<br>
<div><br>
> My first question<br>
><br>
> 1.- what am I missing to make this exception raise and let it be caught by<br>
> assertRaises method?<br>
<br>
</div>As I said, I suspect something not in this mail :) Copy and paste the<br>
whole test code if you want more eyes to check it.<br>
<div><br>
> 2.- would this be a good method to test cubicweb users permissions or do you<br>
> recommend me another one for this purpose?<br>
<br>
</div>Yup<br>
<font color="#888888"><br>
--<br>
Sylvain Thénault                               LOGILAB, Paris (France)<br>
Formations Python, Debian, Méth. Agiles: <a href="http://www.logilab.fr/formations" target="_blank">http://www.logilab.fr/formations</a><br>
Développement logiciel sur mesure:       <a href="http://www.logilab.fr/services" target="_blank">http://www.logilab.fr/services</a><br>
CubicWeb, the semantic web framework:    <a href="http://www.cubicweb.org" target="_blank">http://www.cubicweb.org</a><br>
<br>
</font></blockquote></div><br>