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_private_project_contributor_access(self):
        page = helpers.get_new_project()
        user = helpers.create_user()

        page.add_contributor(user)

        self._test_can_access(page, user)
示例#3
0
    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()
示例#4
0
    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()
示例#5
0
    def test_private_project_privacy_contributor(self):
        page = helpers.get_new_project()

        page.public = True
        page.reload()
        self.assertTrue(page.public)

        page.close()
示例#6
0
    def test_public_project_privacy_contributor(self):
        page = helpers.get_new_project()

        page.public = True
        page.public = False

        self.assertFalse(page.public)

        page.close()
示例#7
0
    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',
        )
示例#8
0
    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()
示例#9
0
    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_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,
        )
示例#11
0
    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()
示例#12
0
    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)
示例#13
0
    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)
示例#14
0
    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 &lt;script&gt;alert("xss");&lt;/script&gt;Project',
        )

        page.close()
示例#15
0
    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 &lt;script&gt;alert("xss");&lt;/script&gt;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 &lt;script&gt;alert("xss");&lt;/script&gt;Project',
        )

        page.close()
示例#17
0
    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()
示例#18
0
    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 &lt;script&gt;alert("xss");&lt;/script&gt;Project',
            page.driver.find_element_by_id(
                'contributors'
            ).get_attribute('innerHTML'),
        )

        page.close()
示例#20
0
    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()
示例#21
0
 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')
示例#23
0
 def test_project_delete_file(self):
     self._test_delete_file(get_new_project())
示例#24
0
 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)
示例#29
0
 def test_project_add_file(self):
     self._test_add_file(get_new_project())
示例#30
0
 def test_project_file_download_count(self):
     self._test_file_download_count(get_new_project())
 def test_project_add_contributors_access(self):
     self._test_add_contributor_access(helpers.get_new_project())
示例#32
0
 def test_project_file_controls_not_present_anonymous(self):
     self._test_file_controls_not_present(get_new_project())
示例#33
0
 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_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)
    def test_private_project_anonymous_access(self):
        page = helpers.get_new_project()

        self._test_can_access(page, can_access=False)
 def test_project_add_contributors_listed(self):
     self._test_add_contributor_listed(helpers.get_new_project())
    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)
    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_public_project_anonymous_access(self):
        page = helpers.get_new_project()
        page.public = True

        self._test_can_access(page)