I found the answer. I was setting cherrypy.root for each test. This was
triggering the following code in turbogears.testutil.create_request():
if not hasattr(cherrypy.root, "started"):
startup.startTurboGears()
cherrypy.root.started = True
Starting TurboGears a second time doesn't work - it resets the list of cherrypy
filters, but visit tracking knows it's already running and therefore did not
add itself to the list of cherrypy filters:
# Bail out if this extension is already running
global _manager
if _manager:
return
log.info("Visit Tracking starting")
# How long may the visit be idle before a new visit ID is assigned?
# The default is 20 minutes.
timeout = timedelta(minutes=turbogears.config.get("visit.timeout", 20))
# Create the thread that manages updating the visits
_manager = _create_visit_manager(timeout)
filter = VisitFilter()
# Temporary until tg-admin can call create_extension_model
create_extension_model()
# Install Filter into the root filter chain
if not hasattr(cherrypy.root, "_cp_filters"):
cherrypy.root._cp_filters = list()
cherrypy.root._cp_filters.append(filter)
Solution: set cherrypy.root *once* for the whole test run, not for each
individual test.
Barry
----- Original Message ----
From: Barry Hart <[EMAIL PROTECTED]>
To: [email protected]
Sent: Thursday, January 17, 2008 5:54:53 PM
Subject: [TurboGears] Writing unit tests at the TG controller level
I've written some controller unit tests that use the class
turbogears.testutil.BrowsingSession. When I run one test at a time, everything
is fine. But when I run all the tests at once, the second and subsequent tests
fail with a 403 when they hit the login URL. I added some debug messages to the
CherryPy applyFilters() function and I see that after the first test,
'VisitFilter' is no longer in CherryPy's list of filters. I think this explains
the 403, but I have no idea why the filter disappeared. I also added a debug
message to shutdown_extension() of turbogears.visit.api but that's not being
printed.
I'm running TurboGears 1.0.3 and CherryPy 2.2.1.
Any ideas what is going wrong?
Thanks,
Barry
Never miss a thing. Make Yahoo your homepage.
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---