def test_private_project_contributor_access(self): page = helpers.get_new_project() user = helpers.create_user() page.add_contributor(user) self._test_can_access(page, user)
def test_project_add_file_logged(self): # log says "component"; expected "project" page = get_new_project() _url = page.driver.current_url user = page.contributors[0] expected_log = ( u'{user} added file {filename} to {node_type} {node_name}'.format( user=user.full_name, filename='test.jpg', node_type='project', node_name=page.title, ) ) page.add_file([x for x in FILES if x.name == 'test.jpg'][0]) page.driver.get(_url) self.assertEqual( page.logs[0].text, expected_log ) page.close()
def test_project_delete_file_logged(self): # log says "component"; expected "project" page = get_new_project() _url = page.driver.current_url user = page.contributors[0] page.add_file([x for x in FILES if x.name == 'test.jpg'][0]) # make sure it's there - this triggers the necessary wait. self.assertIn( 'test.jpg', [x.name for x in page.files] ) page.delete_file('test.jpg') expected_log = ( u'{user} removed file {filename} ' u'from {node_type} {node_name}'.format( user=user.full_name, filename='test.jpg', node_type='project', node_name=page.title, ) ) page.driver.get(_url) self.assertEqual( page.logs[0].text, expected_log # actual: 'component" ) page.close()
def test_private_project_privacy_contributor(self): page = helpers.get_new_project() page.public = True page.reload() self.assertTrue(page.public) page.close()
def test_public_project_privacy_contributor(self): page = helpers.get_new_project() page.public = True page.public = False self.assertFalse(page.public) page.close()
def _component(self): """ Create and return a (sub)project which is the child of a project. The ``current_url`` of the driver is the subproject's overview. """ return get_new_project().add_component( title='New Component', component_type='Other', )
def test_private_project_title_change_contributor(self): page = helpers.get_new_project() page.title = 'changed' page.reload() self.assertEqual(page.title, 'changed') page.close()
def _test_backlink_to_parent(self, component_type): page = helpers.get_new_project('New Project') parent_project_url = page.driver.current_url page = page.add_component(title='New Component') self.assertEqual( page.parent_link, parent_project_url, )
def test_public_project_title_change_anonymous(self): page = helpers.get_new_project() page.public = True _url = page.driver.current_url page.log_out() page.driver.get(_url) with self.assertRaises(NoSuchElementException): page.title = 'changed' page.close()
def test_public_project_title_anonymous(self): page = helpers.get_new_project() page.public = True _url = page.driver.current_url page.log_out() page.driver.get(_url) page = ProjectPage(driver=page.driver) self._test_title(page, can_modify=False)
def test_public_project_title_non_contributor(self): page = helpers.get_new_project() page.public = True _url = page.driver.current_url page.close() page = LoginPage().log_in(user=helpers.create_user()) page.driver.get(_url) page = ProjectPage(driver=page.driver) self._test_title(page, can_modify=False)
def test_node_title_injection_creation(self): """A node's title should allow < and >, but should HTML encode them. This test verifies that when a project is created, the title is properly encoded.""" page = helpers.get_new_project( title='Bad <script>alert("xss");</script>Project') self.assertEqual( page.driver.find_element_by_id( 'node-title-editable').get_attribute('innerHTML'), 'Bad <script>alert("xss");</script>Project', ) page.close()
def test_node_description_injection_creation(self): """A node's description should allow < and >, but should HTML encode them. This test verifies that when a project is created, the description is properly encoded.""" page = helpers.get_new_project( description='Bad <script>alert("xss");</script>Project') self.assertIn( 'Bad <script>alert("xss");</script>Project', page.driver.find_element_by_id('contributors').get_attribute( 'innerHTML'), ) page.close()
def test_node_title_injection_creation(self): """A node's title should allow < and >, but should HTML encode them. This test verifies that when a project is created, the title is properly encoded.""" page = helpers.get_new_project( title='Bad <script>alert("xss");</script>Project' ) self.assertEqual( page.driver.find_element_by_id( 'node-title-editable' ).get_attribute('innerHTML'), 'Bad <script>alert("xss");</script>Project', ) page.close()
def test_public_project_title_change_non_contributor(self): page = helpers.get_new_project() page.public = True _url = page.driver.current_url page.log_out() page.close() page = LoginPage() page.log_in(helpers.create_user()) page.driver.get(_url) page = ProjectPage(driver=page.driver) with self.assertRaises(NoSuchElementException): page.title = 'changed' page.close()
def test_public_project_privacy_non_contributor(self): page = helpers.get_new_project() page.public = True _url = page.driver.current_url page.close() page = LoginPage().log_in(user=helpers.create_user()) page.driver.get(_url) page = ProjectPage(driver=page.driver) with self.assertRaises(NoSuchElementException): page.public = False page.close()
def test_node_description_injection_creation(self): """A node's description should allow < and >, but should HTML encode them. This test verifies that when a project is created, the description is properly encoded.""" page = helpers.get_new_project( description='Bad <script>alert("xss");</script>Project' ) self.assertIn( 'Bad <script>alert("xss");</script>Project', page.driver.find_element_by_id( 'contributors' ).get_attribute('innerHTML'), ) page.close()
def test_project_file_update_logged(self): # log says "component", expected "project" page, filename = self._test_file_update_logged(get_new_project()) user = page.contributors[0] expected_log = ( u'{user} updated file {filename} in {node_type} {node_name}'.format( user=user.full_name, filename=filename, node_type='project', node_name=page.title, ) ) self.assertEqual( page.logs[0].text, expected_log ) page.close()
def test_project_file_extensions(self): self._test_file_extensions(get_new_project())
def _project(self): """ Create and return a top-level project. The ``current_url`` of the driver is the project's overview. """ return helpers.get_new_project('New Project')
def test_project_delete_file(self): self._test_delete_file(get_new_project())
def test_private_project_title_contributor(self): self._test_title( page=helpers.get_new_project(), can_modify=True )
def test_project_add_contributors_listed(self): self._test_add_contributor_listed(helpers.get_new_project())
def test_project_add_contributors_access(self): self._test_add_contributor_access(helpers.get_new_project())
def test_public_project_anonymous_access(self): page = helpers.get_new_project() page.public = True self._test_can_access(page)
def test_private_project_anonymous_access(self): page = helpers.get_new_project() self._test_can_access(page, can_access=False)
def test_project_add_file(self): self._test_add_file(get_new_project())
def test_project_file_download_count(self): self._test_file_download_count(get_new_project())
def test_project_file_controls_not_present_anonymous(self): self._test_file_controls_not_present(get_new_project())
def test_public_project_title_contributor(self): page = helpers.get_new_project() page.public = True self._test_title(page, can_modify=True)
def test_private_project_non_contributor_access(self): page = helpers.get_new_project() user = helpers.create_user() self._test_can_access(page, user, False)
def test_public_project_non_contributor_access(self): page = helpers.get_new_project() user = helpers.create_user() page.public = True self._test_can_access(page, user)