コード例 #1
0
    def setUp(self):
        super(RepositoryToBeCreatedTestSuite, self).setUp()

        self.repo_organizer_username = "******"
        self.repo_organizer_password = "******"
        self.repo_organizer_display_name = "Repository Organizer"
        self.repo_organizer_email = "*****@*****.**"

        self.driver.get(urljoin(self.root_url, "/register"))
        fill_signup_form(self.driver, self.repo_organizer_username,
                         self.repo_organizer_password,
                         self.repo_organizer_display_name,
                         self.repo_organizer_email)

        with login_as(self.driver, self.root_url, self.org_manager_username,
                      self.org_manager_password):
            self.driver.get(
                urljoin(
                    self.root_url,
                    "organizations/{}/settings/members".format(self.org_id)))
            fill_add_member_form(self.driver, self.repo_organizer_username)

        with login_as(self.driver, self.root_url, self.repo_organizer_username,
                      self.repo_organizer_password):
            # It is very tricky that the local SSH key need to be setup as the person
            # who is doing git command. As we only have one SSH key (in the selenium
            # machine) and the actual key is unique (and used to distinguish who the
            # user) is. If another user is having the same SSH key:
            # > fatal: Could not read from remote repository.
            # >
            # > Please make sure you have the correct access rights
            # > and the repository exists.
            # It is actually because `check_if_can_edit_repository.py` returns false.
            self.driver.get(urljoin(self.root_url, "/settings/ssh"))
            add_ssh_key(self.driver, self.profile.get_ssh_key())
コード例 #2
0
    def test_valid_commit_display_image(self):
        with login_as(self.driver, self.root_url, self.repo_organizer_username,
                      self.repo_organizer_password):
            git_commit_datapack = GitCommitDatapack("add commit setup file")
            git_commit_datapack.add_file(
                AddToGitConcreteFile(
                    "gitenter.yml", """version: 1
documents:
traceability:
    markdown:"""))
            git_commit_datapack.add_file(
                AddToGitConcreteFile("file.md",
                                     "![alt text](image.jpg \"image title\")"))
            git_commit_datapack.add_file(
                AddToGitSymlinkFile("image.jpg",
                                    "resources/sample_files/sample.jpg"))

            local_path = self._clone_repo_and_return_local_path()
            git_commit_datapack.commit_to_repo(local_path)

            repo_link = urljoin(
                self.root_url, "/organizations/{}/repositories/{}".format(
                    self.org_id, self.repo_id))

            self.driver.get(repo_link)
            document_link = self.driver.find_element_by_xpath(
                "//input[@value='file.md']/parent::form").get_attribute(
                    "action")
            self.driver.get(document_link)
            image_element = self.driver.find_element_by_xpath(
                "//img[@src='../../blobs/directories/image.jpg']")
            self.assertEqual(image_element.get_attribute("alt"), "alt text")
            self.assertEqual(image_element.get_attribute("title"),
                             "image title")
コード例 #3
0
    def test_repo_with_no_commit(self):
        with login_as(self.driver, self.root_url, self.repo_organizer_username,
                      self.repo_organizer_password):
            self.driver.get(
                urljoin(
                    self.root_url, "/organizations/{}/repositories/{}".format(
                        self.org_id, self.repo_id)))
            assert "Setup a new repository" in self.driver.page_source

            # TODO:
            # Should later on aviod return code 500, but to catch the error and redirect
            # to 404 error properly.
            self.driver.get(
                urljoin(
                    self.root_url,
                    "/organizations/{}/repositories/{}/branches/master".format(
                        self.org_id, self.repo_id)))
            assert "status=500" in self.driver.page_source
            assert "Branch master is not existing yet!" in self.driver.page_source
            self.driver.get(
                urljoin(
                    self.root_url,
                    "/organizations/{}/repositories/{}/branches/master/commits"
                    .format(self.org_id, self.repo_id)))
            assert "status=500" in self.driver.page_source
            assert "Branch master is not existing yet!" in self.driver.page_source
コード例 #4
0
    def test_valid_commit_two_files_in_root(self):
        with login_as(self.driver, self.root_url, self.repo_organizer_username,
                      self.repo_organizer_password):
            git_commit_datapack = GitCommitDatapack("add commit setup file")
            git_commit_datapack.add_file(
                AddToGitConcreteFile(
                    "gitenter.yml", """version: 1
documents:
traceability:
    markdown:"""))
            git_commit_datapack.add_file(
                AddToGitConcreteFile("file1.md", "- [tag1] a traceable item."))
            git_commit_datapack.add_file(
                AddToGitConcreteFile("file2.md",
                                     "- [tag2]{tag1} another traceable item."))

            local_path = self._clone_repo_and_return_local_path()
            git_commit_datapack.commit_to_repo(local_path)

            repo_link = urljoin(
                self.root_url, "/organizations/{}/repositories/{}".format(
                    self.org_id, self.repo_id))

            self.driver.get(repo_link)
            document_link = self.driver.find_element_by_xpath(
                "//input[@value='file1.md']/parent::form").get_attribute(
                    "action")
            self.driver.get(document_link)
            self.assertEqual(
                self.driver.find_element_by_class_name("nav-current").text,
                "file1.md")
            self.assertEqual(
                self.driver.find_element_by_xpath(
                    "//input[@value='tag1' and @class='original']/parent::form"
                ).get_attribute("action"), "{}#tag1".format(document_link))
            self.assertEqual(
                self.driver.find_element_by_xpath(
                    "//input[@value='tag2' and @class='downstream']/parent::form"
                ).get_attribute("action"),
                "{}/branches/master/documents/directories/file2.md#tag2".
                format(repo_link))

            self.driver.get(repo_link)
            document_link = self.driver.find_element_by_xpath(
                "//input[@value='file2.md']/parent::form").get_attribute(
                    "action")
            self.driver.get(document_link)
            self.assertEqual(
                self.driver.find_element_by_class_name("nav-current").text,
                "file2.md")
            self.assertEqual(
                self.driver.find_element_by_xpath(
                    "//input[@value='tag2' and @class='original']/parent::form"
                ).get_attribute("action"), "{}#tag2".format(document_link))
            self.assertEqual(
                self.driver.find_element_by_xpath(
                    "//input[@value='tag1' and @class='upstream']/parent::form"
                ).get_attribute("action"),
                "{}/branches/master/documents/directories/file1.md#tag1".
                format(repo_link))
コード例 #5
0
    def test_organization_manager_remove_member(self):
        with login_as(self.driver, self.root_url, self.org_manager_username,
                      self.org_manager_password):
            self.driver.get(
                urljoin(
                    self.root_url,
                    "organizations/{}/settings/members".format(self.org_id)))

            assert self.org_manager_display_name in self.driver.find_element_by_class_name(
                "user").text
            assert self.org_member_display_name in self.driver.find_element_by_class_name(
                "user-deletable").text

            form_start = self.driver.find_element_by_xpath(
                "//form[@action='/organizations/{}/settings/members/remove']/input[@name='{}']"
                .format(self.org_id, "to_be_remove_username"))
            self.assertEqual(form_start.get_attribute("value"),
                             self.org_member_username)
            form_start.submit()

            self.assertEqual(
                urlparse(self.driver.current_url).path,
                "/organizations/{}/settings/members".format(self.org_id))
            assert self.org_manager_display_name in self.driver.find_element_by_class_name(
                "user").text
            self.assertEqual(
                len(self.driver.find_elements_by_class_name("user-deletable")),
                0)
            self.assertFalse(
                self.driver.find_elements_by_xpath(
                    "//form[@action='/organizations/{}/settings/members/remove']/input"
                    .format(self.org_id)))
コード例 #6
0
    def test_change_user_profile(self):
        display_name_append = "Jr."
        email_append = ".com"

        with login_as(self.driver, self.root_url, self.username, self.password):
            self.driver.get(urljoin(self.root_url, "/settings/profile"))
            display_name_form_fill = self.driver.find_element_by_id("displayName")
            email_form_fill = self.driver.find_element_by_id("email")

            self.assertEqual(self.driver.find_element_by_id("username").get_attribute("value"), self.username)
            self.assertEqual(display_name_form_fill.get_attribute("value"), self.display_name)
            self.assertEqual(email_form_fill.get_attribute("value"), self.email)

            # To move the cursor to the very right. By unknow reasons
            # the cursor will starts to the right for "display_name_form_fill"
            # but will starts to the left for "email_form_fill".
            for i in range(50):
                display_name_form_fill.send_keys(Keys.ARROW_RIGHT)
                email_form_fill.send_keys(Keys.ARROW_RIGHT)
            display_name_form_fill.send_keys(display_name_append)
            email_form_fill.send_keys(email_append)
            display_name_form_fill.submit()

            self.assertEqual(urlparse(self.driver.current_url).path, "/settings/profile")
            assert "Changes has been saved successfully!" in self.driver.page_source
            self.assertEqual(
                self.driver.find_element_by_id("displayName").get_attribute("value"),
                self.display_name+display_name_append)
            self.assertEqual(self.driver.find_element_by_id("email").get_attribute("value"), self.email+email_append)
コード例 #7
0
    def test_organization_manager_modify_organization_profile(self):
        display_name_append = " v2"

        with login_as(self.driver, self.root_url, self.org_manager_username,
                      self.org_manager_password):
            self.driver.get(
                urljoin(
                    self.root_url,
                    "/organizations/{}/settings/profile".format(self.org_id)))
            display_name_form_fill = self.driver.find_element_by_id(
                "displayName")

            self.assertEqual(
                self.driver.find_element_by_id("name").get_attribute("value"),
                self.org_name)
            self.assertEqual(display_name_form_fill.get_attribute("value"),
                             self.org_display_name)

            for i in range(50):
                display_name_form_fill.send_keys(Keys.ARROW_RIGHT)
            display_name_form_fill.send_keys(display_name_append)
            display_name_form_fill.submit()

            self.assertEqual(
                urlparse(self.driver.current_url).path,
                "/organizations/{}/settings/profile".format(self.org_id))
            assert "Changes has been saved successfully!" in self.driver.page_source
            self.assertEqual(
                self.driver.find_element_by_id("displayName").get_attribute(
                    "value"), self.org_display_name + display_name_append)
コード例 #8
0
 def test_non_repo_organizer_cannot_access_repo_setting(self):
     with login_as(self.driver, self.root_url, self.org_member_username, self.org_member_password):
         self.driver.get(
             urljoin(self.root_url, "/organizations/{}/repositories/{}".format(self.org_id, self.repo_id)))
         self.assertFalse(
             self.driver.find_elements_by_xpath(
                 "//form[@action='/organizations/{}/repositories/{}/settings']".format(self.org_id, self.repo_id)))
コード例 #9
0
    def test_repo_organizer_modify_repository_profile(self):
        display_name_append = " v2"
        description_append = " (version 2)"

        with login_as(self.driver, self.root_url, self.repo_organizer_username, self.repo_organizer_password):
            self.driver.get(urljoin(
                self.root_url,
                "/organizations/{}/repositories/{}/settings/profile".format(self.org_id, self.repo_id)))
            display_name_form_fill = self.driver.find_element_by_id("displayName")
            description_form_fill = self.driver.find_element_by_id("description")
            # TODO:
            # test for display and modify `isPublic`

            self.assertEqual(self.driver.find_element_by_id("name").get_attribute("value"), self.repo_name)
            self.assertEqual(display_name_form_fill.get_attribute("value"), self.repo_display_name)
            self.assertEqual(description_form_fill.get_attribute("value"), self.repo_description)

            for i in range(50):
                display_name_form_fill.send_keys(Keys.ARROW_RIGHT)
                description_form_fill.send_keys(Keys.ARROW_RIGHT)
            display_name_form_fill.send_keys(display_name_append)
            description_form_fill.send_keys(description_append)
            display_name_form_fill.submit()

            self.assertEqual(
                urlparse(self.driver.current_url).path,
                "/organizations/{}/repositories/{}/settings/profile".format(self.org_id, self.repo_id))
            assert "Changes has been saved successfully!" in self.driver.page_source
            self.assertEqual(
                self.driver.find_element_by_id("displayName").get_attribute("value"),
                self.repo_display_name+display_name_append)
            self.assertEqual(
                self.driver.find_element_by_id("description").get_attribute("value"),
                self.repo_description+description_append)
コード例 #10
0
    def test_add_ssh_key_base64_encoded_key_error(self):
        ssh_key = "ssh-rsa AAAAB3 [email protected]"

        with login_as(self.driver, self.root_url, self.username, self.password):
            self.driver.get(urljoin(self.root_url, "/settings/ssh"))
            add_ssh_key(self.driver, ssh_key)

            self.assertEqual(urlparse(self.driver.current_url).path, "/settings/ssh")
            assert "The SSH key does not have a valid format!" in self.driver.find_element_by_class_name("error").text
コード例 #11
0
    def test_add_ssh_key_invalid_format(self):
        ssh_key = "invalid_ssh_key"

        with login_as(self.driver, self.root_url, self.username, self.password):
            self.driver.get(urljoin(self.root_url, "/settings/ssh"))
            add_ssh_key(self.driver, ssh_key)

            self.assertEqual(urlparse(self.driver.current_url).path, "/settings/ssh")
            assert "The SSH key does not have a valid format!" in self.driver.find_element_by_id("value.errors").text
コード例 #12
0
    def test_add_valid_ssh_key(self):
        ssh_key = self.profile.get_ssh_key()

        with login_as(self.driver, self.root_url, self.username, self.password):
            self.driver.get(urljoin(self.root_url, "/settings/ssh"))
            add_ssh_key(self.driver, ssh_key)

            self.assertEqual(urlparse(self.driver.current_url).path, "/settings/ssh")
            assert ssh_key[:10] in self.driver.page_source
コード例 #13
0
    def test_non_member_cannot_create_repository(self):
        with login_as(self.driver, self.root_url, self.username, self.password):
            self.driver.get(urljoin(self.root_url, "/organizations/{}".format(self.org_id)))
            self.assertFalse(
                self.driver.find_elements_by_xpath("//form[@action='/organizations/{}/repositories/create']".format(self.org_id)))

            self.driver.get(urljoin(self.root_url, "/organizations/{}/repositories/create".format(self.org_id)))
            fill_create_repository_form(self.driver, self.repo_name, self.repo_display_name, self.repo_description)
            assert "type=Forbidden, status=403" in self.driver.page_source
コード例 #14
0
 def test_non_project_organizer_is_not_allowed_to_modify_repository_profile(self):
     with login_as(self.driver, self.root_url, self.org_member_username, self.org_member_password):
         self.driver.get(urljoin(
             self.root_url,
             "/organizations/{}/repositories/{}/settings/profile".format(self.org_id, self.repo_id)))
         display_name_form_fill = self.driver.find_element_by_id("displayName")
         display_name_form_fill.send_keys(" v2")
         display_name_form_fill.submit()
         assert "type=Forbidden, status=403" in self.driver.page_source
コード例 #15
0
    def test_repository_organizer_create_private_repository_and_view_by_organization_member_and_non_member(self):
        with login_as(self.driver, self.root_url, self.repo_organizer_username, self.repo_organizer_password):
            self.driver.get(urljoin(self.root_url, "/organizations/{}/repositories/create".format(self.org_id)))
            fill_create_repository_form(
                self.driver, self.repo_name, self.repo_display_name, self.repo_description, is_public=False)

            self.driver.get(urljoin(self.root_url, "/organizations/{}".format(self.org_id)))
            assert "Private" in self.driver.page_source

            repo_link = self.driver.find_element_by_link_text(self.repo_display_name).get_attribute("href")
            repo_id = urlparse(repo_link).path.split("/")[-1]

            self.driver.get(urljoin(self.root_url, "/organizations/{}/repositories/{}".format(self.org_id, repo_id)))
            assert self.repo_display_name in self.driver.page_source
            assert "Setup a new repository" in self.driver.page_source

        # Organization member can access
        with login_as(self.driver, self.root_url, self.org_member_username, self.org_member_password):
            self.driver.get(urljoin(self.root_url, "/organizations/{}".format(self.org_id)))
            assert self.repo_display_name in self.driver.page_source
            assert "Private" in self.driver.page_source

            self.driver.get(urljoin(self.root_url, "/organizations/{}/repositories/{}".format(self.org_id, repo_id)))
            assert self.repo_display_name in self.driver.page_source

            # TODO:
            # Should see an customized page saying that you can read, but this is a empty repository.
            # No need to talk about setup as the user cannot edit no matter what, and/or where to ask
            # to be added as an editor.

        # Non member cannot access
        with login_as(self.driver, self.root_url, self.username, self.password):
            self.driver.get(urljoin(self.root_url, "/organizations/{}/repositories/{}".format(self.org_id, repo_id)))
            assert self.repo_display_name not in self.driver.page_source
            assert "type=Forbidden, status=403" in self.driver.page_source

        # Delete repository
        with login_as(self.driver, self.root_url, self.repo_organizer_username, self.repo_organizer_password):
            self.driver.get(urljoin(
                self.root_url,
                "/organizations/{}/repositories/{}/settings/delete".format(self.org_id, repo_id)))
            fill_delete_repository_form(self.driver, self.repo_name)
            self.assertEqual(urlparse(self.driver.current_url).path, "/organizations/{}".format(self.org_id))
            assert self.repo_display_name not in self.driver.page_source
コード例 #16
0
    def test_non_member_cannot_add_members(self):
        with login_as(self.driver, self.root_url, self.username,
                      self.password):
            self.driver.get(
                urljoin(
                    self.root_url,
                    "organizations/{}/settings/members".format(self.org_id)))
            fill_add_member_form(self.driver, self.username)

            assert "type=Forbidden, status=403" in self.driver.page_source
コード例 #17
0
    def tearDown(self):
        with login_as(self.driver, self.root_url, self.org_manager_username,
                      self.org_manager_password):
            self.driver.get(
                urljoin(self.root_url,
                        "/organizations/{}/settings/delete").format(
                            self.org_id))
            fill_delete_organization_form(self.driver, self.org_name)

        super(OrganizationCreatedTestSuite, self).tearDown()
コード例 #18
0
 def test_repo_organizer_can_access_repo_setting(self):
     with login_as(self.driver, self.root_url, self.repo_organizer_username, self.repo_organizer_password):
         # TODO:
         # So this is actually in "Setup a new repository" page.
         # It is not proved that for a general index page (repo
         # with commit) this `Setting` is also displayed properly.
         self.driver.get(
             urljoin(self.root_url, "/organizations/{}/repositories/{}".format(self.org_id, self.repo_id)))
         self.assertTrue(
             self.driver.find_elements_by_xpath(
                 "//form[@action='/organizations/{}/repositories/{}/settings']".format(self.org_id, self.repo_id)))
コード例 #19
0
    def test_wrong_old_password_deny_change_password(self):
        with login_as(self.driver, self.root_url, self.username, self.password):
            self.driver.get(urljoin(self.root_url, "/settings/account/password"))
            form_start = self.driver.find_element_by_id("old_password")
            form_start.send_keys("wrong_password")
            self.driver.find_element_by_id("password").send_keys("whatever")
            form_start.submit()

            self.assertEqual(urlparse(self.driver.current_url).path, "/settings/account/password")
            self.assertEqual(self.driver.find_element_by_id("username").get_attribute("value"), self.username)
            assert "Old password doesn't match!" in self.driver.page_source
コード例 #20
0
    def tearDown(self):
        with login_as(self.driver, self.root_url, self.repo_organizer_username,
                      self.repo_organizer_password):
            self.driver.get(
                urljoin(
                    self.root_url,
                    "/organizations/{}/repositories/{}/settings/delete".format(
                        self.org_id, self.repo_id)))
            fill_delete_repository_form(self.driver, self.repo_name)

        super(RepositoryCreatedTestSuite, self).tearDown()
コード例 #21
0
    def test_change_password_valid(self):
        new_password = "******"

        with login_as(self.driver, self.root_url, self.username, self.password):
            self.driver.get(urljoin(self.root_url, "/settings/account/password"))
            self.assertEqual(self.driver.find_element_by_id("username").get_attribute("value"), self.username)

            self._change_password_form(self.driver, self.password, new_password)

            self.assertEqual(urlparse(self.driver.current_url).path, "/settings/account/password")
            assert "Changes has been saved successfully!" in self.driver.page_source

        self.driver.get(urljoin(self.root_url, "/login"))
        fill_login_form(self.driver, self.username, self.password)
        assert "Invalid username and password!" in self.driver.page_source

        with login_as(self.driver, self.root_url, self.username, new_password):
            assert "Logged in as {}".format(self.username) in self.driver.page_source

            # Reset state, so this test is idempotent and `tearDown` can successfully delete
            # the user account.
            self.driver.get(urljoin(self.root_url, "/settings/account/password"))
            self._change_password_form(self.driver, new_password, self.password)
コード例 #22
0
    def test_organization_normal_member_cannot_add_member(self):
        with login_as(self.driver, self.root_url, self.org_member_username,
                      self.org_member_password):
            # TODO:
            # Should we forbidden it from the page level (do not let the user to access this
            # page), or from the method level (do not allow user to call the real "add user
            # to database" method)?
            self.driver.get(
                urljoin(
                    self.root_url,
                    "organizations/{}/settings/members".format(self.org_id)))
            fill_add_member_form(self.driver, self.username)

            assert "type=Forbidden, status=403" in self.driver.page_source
コード例 #23
0
    def test_organization_member_cannot_modify_organization_profile(self):
        display_name_append = " v2"

        with login_as(self.driver, self.root_url, self.org_member_username,
                      self.org_member_password):
            self.driver.get(
                urljoin(
                    self.root_url,
                    "/organizations/{}/settings/profile".format(self.org_id)))
            display_name_form_fill = self.driver.find_element_by_id(
                "displayName")

            display_name_form_fill.send_keys(display_name_append)
            display_name_form_fill.submit()
            assert "type=Forbidden, status=403" in self.driver.page_source
コード例 #24
0
    def test_invalid_commit(self):
        with login_as(self.driver, self.root_url, self.repo_organizer_username,
                      self.repo_organizer_password):
            git_commit_datapack = GitCommitDatapack("add commit setup file")
            git_commit_datapack.add_file(
                AddToGitConcreteFile(
                    "gitenter.yml", """version: 1
documents:
traceability:
    markdown:"""))
            git_commit_datapack.add_file(
                AddToGitConcreteFile(
                    "file.md", "- [tag]{refer-not-exist} a traceable item."))

            local_path = self._clone_repo_and_return_local_path()
            git_commit_datapack.commit_to_repo(local_path)

            self.driver.get(
                urljoin(
                    self.root_url, "/organizations/{}/repositories/{}".format(
                        self.org_id, self.repo_id)))
            self.assertEqual(
                urlparse(self.driver.current_url).path,
                "/organizations/{}/repositories/{}/branches/master".format(
                    self.org_id, self.repo_id))
            assert "Trace Analyzer Error" in self.driver.page_source
            assert "Browse Historical Commits" in self.driver.page_source

            self.driver.get(
                urljoin(
                    self.root_url,
                    "/organizations/{}/repositories/{}/branches/master/commits"
                    .format(self.org_id, self.repo_id)))
            assert self.repo_display_name in self.driver.page_source
            assert git_commit_datapack.commit_message in self.driver.page_source

            commit_web_elements = self.driver.find_elements_by_class_name(
                "commit-in-list")
            self.assertEqual(len(commit_web_elements), 1)
            commit_link = commit_web_elements[0].get_attribute("action")
            self.driver.get(commit_link)
            assert "Trace Analyzer Error" in self.driver.page_source
            assert "Browse Historical Commits" not in self.driver.page_source
コード例 #25
0
    def test_repo_organizer_add_and_remove_collaborator(self):
        with login_as(self.driver, self.root_url, self.repo_organizer_username, self.repo_organizer_password):
            collaborator_url = urljoin(
                self.root_url,
                "/organizations/{}/repositories/{}/settings/collaborators".format(self.org_id, self.repo_id))
            self.driver.get(collaborator_url)

            assert self.repo_organizer_display_name in self.driver.find_element_by_class_name("user").text
            self.assertEqual(len(self.driver.find_elements_by_class_name("user-deletable")), 0)

            fill_add_collaborator_form(self.driver, self.org_member_username, "Document editor")

            self.assertEqual(self.driver.current_url, collaborator_url)
            assert self.repo_organizer_display_name in self.driver.find_element_by_class_name("user").text
            assert self.org_member_display_name in self.driver.find_element_by_class_name("user-deletable").text

            # `self.username` is not in that organization, therefore, shouldn't
            # be able to add as collaborator.
            self.driver.get(collaborator_url)
            fill_add_collaborator_form(self.driver, self.username, "Document editor")
            assert "You are attempting an invalid operation." in self.driver.page_source

            # TODO:
            # Right now not existing SQL queries all goes to "Not Found", no matter whether it is
            # a GET or a POST. For POST we should give more explicit error message in the form.
            self.driver.get(collaborator_url)
            fill_add_collaborator_form(self.driver, "non_existing_username", "Document editor")
            assert "Not Found" in self.driver.page_source

            self.driver.get(collaborator_url)
            form_start = self.driver.find_element_by_xpath(
                "//form[@action='/organizations/{}/repositories/{}/settings/collaborators/remove']/input[@name='{}']".format(
                    self.org_id, self.repo_id, "to_be_remove_username"))
            self.assertEqual(form_start.get_attribute("value"), self.org_member_username)
            form_start.submit()

            self.assertEqual(self.driver.current_url, collaborator_url)

            assert self.repo_organizer_display_name in self.driver.find_element_by_class_name("user").text
            self.assertEqual(len(self.driver.find_elements_by_class_name("user-deletable")), 0)
            self.assertFalse(self.driver.find_elements_by_xpath(
                "//form[@action='/organizations/{}/repositories/{}/settings/collaborators/remove']/input".format(
                    self.org_id, self.repo_id)))
コード例 #26
0
    def test_organization_manager_add_manager(self):
        with login_as(self.driver, self.root_url, self.org_manager_username,
                      self.org_manager_password):
            self.driver.get(
                urljoin(
                    self.root_url,
                    "organizations/{}/settings/managers".format(self.org_id)))
            self.assertFalse(
                self.driver.find_elements_by_xpath(
                    "//form[@action='/organizations/{}/settings/managers/remove']/input"
                    .format(self.org_id)))
            form_start = self.driver.find_element_by_xpath(
                "//form[@action='/organizations/{}/settings/managers/add']/input"
                .format(self.org_id))
            self.assertEqual(form_start.get_attribute("value"),
                             self.org_member_username)
            form_start.submit()

            self.assertEqual(
                urlparse(self.driver.current_url).path,
                "/organizations/{}/settings/managers".format(self.org_id))
            self.assertFalse(
                self.driver.find_elements_by_xpath(
                    "//form[@action='/organizations/{}/settings/managers/add']/input"
                    .format(self.org_id)))
            form_start = self.driver.find_element_by_xpath(
                "//form[@action='/organizations/{}/settings/managers/remove']/input"
                .format(self.org_id))
            self.assertEqual(form_start.get_attribute("value"),
                             self.org_member_username)
            form_start.submit()

            self.assertEqual(
                urlparse(self.driver.current_url).path,
                "/organizations/{}/settings/managers".format(self.org_id))
            self.assertFalse(
                self.driver.find_elements_by_xpath(
                    "//form[@action='/organizations/{}/settings/managers/remove']/input"
                    .format(self.org_id)))
            self.assertTrue(
                self.driver.find_elements_by_xpath(
                    "//form[@action='/organizations/{}/settings/managers/add']/input"
                    .format(self.org_id)))
コード例 #27
0
    def setUp(self):
        super(OrganizationCreatedTestSuite, self).setUp()

        self.org_name = "org"
        self.org_display_name = "A Organization"

        with login_as(self.driver, self.root_url, self.org_manager_username,
                      self.org_manager_password):
            self.driver.get(urljoin(self.root_url, "/organizations/create"))
            fill_create_organization_form(self.driver, self.org_name,
                                          self.org_display_name)
            org_link = self.driver.find_element_by_link_text(
                self.org_display_name).get_attribute("href")

            self.org_id = urlparse(org_link).path.split("/")[-1]

            self.driver.get(
                urljoin(
                    self.root_url,
                    "organizations/{}/settings/members".format(self.org_id)))
            fill_add_member_form(self.driver, self.org_member_username)
コード例 #28
0
    def test_organization_manager_add_member(self):
        with login_as(self.driver, self.root_url, self.org_manager_username,
                      self.org_manager_password):
            self.driver.get(
                urljoin(self.root_url,
                        "/organizations/{}".format(self.org_id)))
            self.assertTrue(
                self.driver.find_elements_by_xpath(
                    "//form[@action='/organizations/{}/settings']".format(
                        self.org_id)))

            self.driver.get(
                urljoin(
                    self.root_url,
                    "organizations/{}/settings/members".format(self.org_id)))
            assert self.display_name not in self.driver.page_source

            fill_add_member_form(self.driver, self.username)

            self.assertEqual(
                urlparse(self.driver.current_url).path,
                "/organizations/{}/settings/members".format(self.org_id))
            assert self.display_name in self.driver.page_source
コード例 #29
0
    def setUp(self):
        super(RepositoryCreatedTestSuite, self).setUp()

        self.repo_name = "repo"
        self.repo_display_name = "A Repository"
        self.repo_description = "A Repository Description"

        with login_as(self.driver, self.root_url, self.repo_organizer_username,
                      self.repo_organizer_password):
            self.driver.get(
                urljoin(
                    self.root_url,
                    "/organizations/{}/repositories/create".format(
                        self.org_id)))
            fill_create_repository_form(self.driver,
                                        self.repo_name,
                                        self.repo_display_name,
                                        self.repo_description,
                                        is_public=False)
            repo_link = self.driver.find_element_by_link_text(
                self.repo_display_name).get_attribute("href")

            self.repo_id = urlparse(repo_link).path.split("/")[-1]
コード例 #30
0
    def test_ignored_commit(self):
        with login_as(self.driver, self.root_url, self.repo_organizer_username,
                      self.repo_organizer_password):
            git_commit_datapack = GitCommitDatapack(
                "add commit without setup file")
            git_commit_datapack.add_file(
                AddToGitConcreteFile("a_irrelevant_file.txt",
                                     "A irrelevant file"))

            local_path = self._clone_repo_and_return_local_path()
            git_commit_datapack.commit_to_repo(local_path)

            self.driver.get(
                urljoin(
                    self.root_url, "/organizations/{}/repositories/{}".format(
                        self.org_id, self.repo_id)))
            self.assertEqual(
                urlparse(self.driver.current_url).path,
                "/organizations/{}/repositories/{}/branches/master".format(
                    self.org_id, self.repo_id))
            assert "Commit Turned off" in self.driver.page_source

            self.driver.get(
                urljoin(
                    self.root_url,
                    "/organizations/{}/repositories/{}/branches/master/commits"
                    .format(self.org_id, self.repo_id)))
            assert self.repo_display_name in self.driver.page_source
            assert git_commit_datapack.commit_message in self.driver.page_source

            commit_web_elements = self.driver.find_elements_by_class_name(
                "commit-in-list")
            self.assertEqual(len(commit_web_elements), 1)
            commit_link = commit_web_elements[0].get_attribute("action")
            self.driver.get(commit_link)
            assert "Commit Turned off" in self.driver.page_source
            assert "Browse Historical Commits" not in self.driver.page_source