Commit 9af1ae70 authored by Arnaud Fontaine's avatar Arnaud Fontaine

Don't log in automatically to be able to run test suites as anonymous user for example

parent 7e9642a6
......@@ -12,6 +12,9 @@ def createPerson(result, browser):
script and userInfo.py. Further information about performance_tester_erp5
options and arguments are available by specifying ``--help''.
"""
# Log in unless already logged in by a previous test suite
browser.mainForm.submitLogin()
# Go to Persons module (person_module)
result('Go to person module',
browser.mainForm.submitSelectModule(value='/person_module'))
......
......@@ -182,8 +182,6 @@ class Browser(ExtendedTestBrowser):
super(Browser, self).__init__()
self.login()
def open(self, url_or_path=None, data=None):
"""
Open a relative (to the ERP5 base URL) or absolute URL. If the
......@@ -200,27 +198,6 @@ class Browser(ExtendedTestBrowser):
self._logger.debug("Opening url: " + absolute_url)
super(Browser, self).open(absolute_url, data)
def login(self, force=False):
"""
Log in only if not already logged in unless explicitely specified
to do so.
@param force: Log in even if already logged in
@type force: bool
"""
if force or not self._is_logged_in:
try:
url_before_login = self.url
except:
url_before_login = None
self.open('login_form')
self.mainForm.submitLogin()
# Go back to the page before trying to log in if any URL, or to
# the homepage otherwise
self.open(url_before_login)
def getCookieValue(self, name, default=None):
"""
Get the cookie value of the given cookie name.
......@@ -685,22 +662,35 @@ class MainForm(Form):
"""
Log into ERP5 using the username and password provided in the
browser. It is assumed that the current page is the login page (by
calling C{open('login_form')} beforehand).
calling C{open('login_form')} beforehand), otherwise it will open
that page before logging in.
This method should rarely be used by scripts as login is already
performed upon instanciation of Browser class.
Note that if the user is already logged in, it will do nothing.
@raise LoginError: Login failed
@todo: Use information sent back as headers rather than looking
into the page content?
"""
if 'Logged In as' in self.browser.contents:
self.browser._logger.debug("Already logged in")
# TODO: Perhaps zope.testbrowser should be patched instead?
self.browser.timer.start_time = self.browser.timer.end_time = 0
return
self.browser._logger.debug("Logging in: username='%s', password='%s'" % \
(self.browser._username, self.browser._password))
self.getControl(name='__ac_name').value = self.browser._username
self.getControl(name='__ac_password').value = self.browser._password
self.submit()
def login(form):
form.getControl(name='__ac_name').value = self.browser._username
form.getControl(name='__ac_password').value = self.browser._password
form.submit()
try:
login(self)
except LookupError:
self.browser.open('login_form')
login(self.browser.mainForm)
if 'Logged In as' not in self.browser.contents:
raise LoginError("%s: Could not log in as '%s:%s'" % \
......@@ -708,8 +698,6 @@ class MainForm(Form):
self.browser._username,
self.browser._password))
self.browser._is_logged_in = True
def submitSelectFavourite(self, label=None, value=None, **kw):
"""
Select and submit a favourite, given either by its label (such as
......
......@@ -13,8 +13,9 @@ def benchmarkAddPerson(iteration_counter, result_dict):
browser = Browser('http://localhost:18080/', 'erp5',
username='zope', password='zope')
# Open ERP5 homepage
# Open ERP5 homepage and log in
browser.open()
browser.mainForm.submitLogin()
# Go to Persons module (person_module)
browser.mainForm.submitSelectModule(value='/person_module')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment