def do_register(self, *numbers): for i in numbers: print("Registering user %d" % i) self.get("/ucp.php?mode=register") self.assert_successish() assert "Registration" in self.response.body form = self.response.form(id="agreement") elements = form.elements.mutable elements.submit("agreed") self.post(form.computed_action, body=elements.params.list) self.assert_successish() assert "Username:"******"register") # for repeated runs suffix = self.random_suffix() params = { "username": "******" % i, "new_password": "******", "password_confirm": "test42", "email": "*****@*****.**" % i, "lang": "en", "tz": "UTC", "confirm_id": "", "confirm_code": "", } if self.phpbb_version < (3, 1, 0): params["email_confirm"] = params["email"] self.check_form_key_delay() elements = form.elements.mutable elements.submit("submit") params = webracer.extend_params(elements.params.dict, params) self.post(form.computed_action, body=params) self.assert_successish() assert "Registration" not in self.response.body assert "Thank you for registering" in self.response.body # check that there are no further actions needed assert "You may now login with your username" in self.response.body self.logout()
def test_register(self): self.get('/ucp.php?mode=register') self.assert_successish() assert 'Registration' in self.response.body form = self.response.form(id='agreement') elements = form.elements.mutable elements.submit('agreed') self.post(form.computed_action, body=elements.params.list) self.assert_successish() assert 'Username:'******'register') # for repeated runs #suffix = self.random_suffix() suffix = '43' params = { 'username': '******' + suffix, 'new_password': '******', 'password_confirm': 'test42', 'email': '*****@*****.**' % suffix, 'lang': 'en', 'tz': 'UTC', 'confirm_id': '', 'confirm_code': '', } if self.phpbb_version < (3, 1, 0): params['email_confirm'] = params['email'] self.check_form_key_delay() elements = form.elements.mutable elements.submit('submit') params = webracer.extend_params(elements.params.dict, params) self.post(form.computed_action, body=params) self.assert_successish() assert 'Registration' not in self.response.body assert 'Thank you for registering' in self.response.body # check that there are no further actions needed assert 'You may now login with your username' in self.response.body
def test_acp_login(self): self.login('morpheus', 'morpheus') self.get('/') self.assert_successish() doc = self.response.lxml_etree acp_link = webracer.utils.xpath_first_check(doc, '//div[@class="copyright"]//a[text() = "Administration Control Panel"]').attrib['href'] acp_link = self.response.urljoin(acp_link) self.get(acp_link) self.assert_successish() assert 'To administer the board you must re-authenticate yourself.' in self.response.body form = self.response.form(id='login') doc = self.response.lxml_etree password_name = webracer.utils.xpath_first_check(doc, '//input[@type="password"]').attrib['name'] params = { 'username': '******', password_name: 'morpheus', } params = webracer.extend_params(form.params.list, params) self.post(form.computed_action, body=params) self.assert_successish() assert 'You have successfully authenticated' in self.response.body doc = self.response.lxml_etree acp_link = webracer.utils.xpath_first_check(doc, '//div[@class="copyright"]//a[text() = "Administration Control Panel"]').attrib['href'] # note: uses previous page's form's computed action acp_link = self.response.urljoin(acp_link) self.get(acp_link) self.assert_successish() assert 'Board statistics' in self.response.body
def acp_login(self, username, password): self.get_with_sid('/adm/index.php') self.assert_successish() assert 'To administer the board you must re-authenticate yourself.' in self.response.body form = self.response.form(id='login') doc = self.response.lxml_etree password_name = xpath_first_check(doc, '//input[@type="password"]').attrib['name'] params = { 'username': username, password_name: password, } params = webracer.extend_params(form.params.list, params) self.post(form.computed_action, body=params) self.assert_successish() assert 'You have successfully authenticated' in self.response.body self.find_sid()
def test_install(self): self.get('/') self.assert_redirected_to_uri('/install/index.php') self.follow_redirect() self.assert_successish() # clicking on install link self.get('/install/index.php?mode=install&language=en') self.assert_successish() assert 'Welcome to Installation' in self.response.body form = self.response.form(id='install_install') self.post(form.computed_action, body=form.params.list) self.assert_successish() assert 'Test again' not in self.response.body assert 'Start install' in self.response.body form = self.response.form() self.post(form.computed_action, body=form.params.list) self.assert_successish() assert 'Database type' in self.response.body #dbms = utils.current.dbms or self.conf.db.driver dbms = os.environ.get('DBMS') or self.conf.db.driver if dbms == 'postgres': assert 'PostgreSQL' in self.response.body else: assert 'MySQL with MySQLi Extension' in self.response.body db_params = { 'dbms': dbms, 'table_prefix': self.conf.db.table_prefix, } attr_map = dict(host='dbhost', port='dbport', dbname='dbname', user='******', password='******') attrs = getattr(self.conf, dbms) for fk in attr_map: lk = attr_map[fk] if fk in attrs: db_params[lk] = attrs.get(fk) form = self.response.form() params = webracer.extend_params(form.params.list, db_params) self.post(form.computed_action, body=params) self.assert_successish() if 'Could not connect to the database' in self.response.body: self._fail_db_connection() if 'Successful connection' not in self.response.body: self._fail_db_connection() form = self.response.form() self.post(form.computed_action, body=form.params.list) self.assert_successish() assert 'Administrator configuration' in self.response.body admin_params = { 'admin_name': 'morpheus', 'admin_pass1': 'morpheus', 'admin_pass2': 'morpheus', 'board_email': '*****@*****.**', } if self.phpbb_version < (3, 1, 0): admin_params['board_email1'] = admin_params['board_email'] admin_params['board_email2'] = admin_params['board_email'] form = self.response.form() params = webracer.extend_params(form.params.list, admin_params) self.post(form.computed_action, body=params) self.assert_successish() assert 'Tests passed' in self.response.body form = self.response.form() self.post(form.computed_action, body=form.params.list) self.assert_successish() assert 'The configuration file has been written' in self.response.body form = self.response.form() self.post(form.computed_action, body=form.params.list) self.assert_successish() assert 'The settings on this page are only necessary' in self.response.body # it's a giant form that we don't care for, just submit it form = self.response.form() self.post(form.computed_action, body=form.params.list) self.assert_successish() assert 'Proceed to the next screen to finish installing' in self.response.body form = self.response.form() self.post(form.computed_action, body=form.params.list) self.assert_successish() assert 'You have successfully installed' in self.response.body # have to submit this form also form = self.response.form() self.post(form.computed_action, body=form.params.list) self.assert_successish() assert 'Send statistical information' in self.response.body self._enable_debug()
def _check(self, target, extra, expected): actual = webracer.extend_params(target, extra) self.assertEqual(utils.listit(expected), utils.listit(actual))