Yesterday, while I was working on LifeInLjubljana.si, I had to test if some data was correctly written to Plone’s session. I couldn’t use the standard ptc.FunctionalTestCase test case as it does not have a session and I would get errors like this:
(Pdb) self.context.session_data_manager
*** AttributeError: session_data_manager
(Pdb) self.context.REQUEST.SESSION
*** AttributeError: SESSION
Following a tip on the Plone-Users mailing list and some trail-and-error I have come up with a solution. Below is my test case with which I can build functional tests for sessions:
class SessionFunctionalTestCase(ptc.FunctionalTestCase): """ We use this base class for all the session-related tests in this package. """ def afterSetUp(self): # Set up sessioning objects ztc.utils.setupCoreSessions(self.app) class Session(dict): def set(self, key, value): self[key] = value def _setup(self): ptc.FunctionalTestCase._setup(self) self.app.REQUEST['SESSION'] = self.Session()