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())
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")
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
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))
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)))
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)
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)
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)))
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)
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
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
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
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
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
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
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
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()
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)))
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
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()
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)
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
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
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
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)))
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)))
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)
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
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]
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