def test_view_file_non_ascii_name(self): # View file with a non-ascii name tests.add_commit_git_repo( os.path.join(self.path, "repos", "test.git"), ncommits=1, filename="Šource", ) output = self.app.get("/api/0/test/tree") self.assertEqual(output.status_code, 200) data = json.loads(output.get_data(as_text=True).encode("utf-8")) self.assertDictEqual( data, { "content": [ { "content_url": "http://localhost/test/raw/master/f/" "README.rst", "name": "README.rst", "path": "README.rst", "type": "file", }, { "content_url": "http://localhost/test/raw/master/f/%C5%A0ource", "name": "Šource", "path": "Šource", "type": "file", }, ], "name": None, "type": "folder", }, )
def test_view_history_file_fork_of_a_fork(self): """ Test the view_history_file endpoint """ item = pagure.lib.model.Project( user_id=1, # pingou name="test3", description="test project #3", is_fork=True, parent_id=1, hook_token="aaabbbppp", ) self.session.add(item) self.session.commit() tests.add_content_git_repo( os.path.join(self.path, "repos", "forks", "pingou", "test3.git")) tests.add_readme_git_repo( os.path.join(self.path, "repos", "forks", "pingou", "test3.git")) tests.add_commit_git_repo( os.path.join(self.path, "repos", "forks", "pingou", "test3.git"), ncommits=10, ) tests.add_content_to_git( os.path.join(self.path, "repos", "forks", "pingou", "test3.git"), content="✨☃🍰☃✨", ) output = self.app.get("/fork/pingou/test3/history/sources") self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) self.assertIn("<strong>Add row 2 to sources file</strong>", output_text)
def setUp(self): """ Set up the environnment, ran before every tests. """ super(PagureFlaskRepoViewFileForktests, self).setUp() tests.create_projects(self.session) tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True) # Add some content to the git repo tests.add_content_git_repo(os.path.join(self.path, 'repos', 'test.git')) tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git')) tests.add_binary_git_repo(os.path.join(self.path, 'repos', 'test.git'), 'test.jpg') tests.add_binary_git_repo(os.path.join(self.path, 'repos', 'test.git'), 'test_binary') # Add a fork of a fork item = pagure.lib.model.Project( user_id=1, # pingou name='test', description='test project #3', is_fork=True, parent_id=1, hook_token='aaabbbppp', ) self.session.add(item) self.session.commit() tests.add_content_git_repo( os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git')) tests.add_readme_git_repo( os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git')) tests.add_commit_git_repo(os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git'), ncommits=10)
def add_repo_tag(repo, tags, repo_name): """ Use a list to create multiple tags on a git repo """ for tag in reversed(tags): time.sleep(1) tests.add_commit_git_repo(os.path.join(tests.HERE, 'repos', repo_name), ncommits=1) first_commit = repo.revparse_single('HEAD') tagger = pygit2.Signature('Alice Doe', '*****@*****.**', 12347, 0) repo.create_tag(tag, first_commit.oid.hex, pygit2.GIT_OBJ_COMMIT, tagger, "Release " + tag)
def test_view_history_file_folder(self): """ Test the view_history_file endpoint """ tests.add_commit_git_repo( os.path.join(self.path, "repos", "test.git/folder1"), ncommits=1, filename="sources", ) output = self.app.get("/test/history/folder1") self.assertEqual(output.status_code, 400) output_text = output.get_data(as_text=True) self.assertIn("No history could be found for this file", output_text)
def add_repo_tag(repo, tags, repo_name): """ Use a list to create multiple tags on a git repo """ for tag in reversed(tags): time.sleep(1) tests.add_commit_git_repo( os.path.join(tests.HERE, 'repos', repo_name), ncommits=1) first_commit = repo.revparse_single('HEAD') tagger = pygit2.Signature('Alice Doe', '*****@*****.**', 12347, 0) repo.create_tag( tag, first_commit.oid.hex, pygit2.GIT_OBJ_COMMIT, tagger, "Release " + tag)
def setUp(self): """ Set up the environnment, ran before every tests. """ super(PagureFlaskApiProjectGitTagstests, self).setUp() tests.create_projects(self.session) tests.create_projects_git(os.path.join(self.path, "repos"), bare=True) tests.add_commit_git_repo( folder=os.path.join(self.path, "repos", "test.git")) tests.create_tokens(self.session) tests.create_tokens_acl(self.session) # token for user = pingou (user_id = 1) self.headers = {"Authorization": "token aaabbbcccddd"}
def test_view_history_file_non_ascii_name(self): """ Test the view_history_file endpoint """ tests.add_commit_git_repo( os.path.join(self.path, "repos", "test.git"), ncommits=1, filename="Šource", ) output = self.app.get("/test/history/Šource") self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) self.assertEqual(output.headers["Content-Type"].lower(), "text/html; charset=utf-8") self.assertIn("</span> Šource", output_text) self.assertIn("<strong>Add row 0 to Šource file</strong>", output_text)
def test_view_blame_file_folder(self): """ Test the view_blame_file endpoint """ tests.add_commit_git_repo( os.path.join(self.path, "repos", "test.git/folder1"), ncommits=1, filename="sources", ) output = self.app.get("/test/blame/folder1") self.assertEqual(output.status_code, 404) output_text = output.get_data(as_text=True) self.assertIn("<title>Page not found :'( - Pagure</title>", output_text) self.assertIn("<h2>Page not found (404)</h2>", output_text) self.assertIn("<p>File not found</p>", output_text)
def test_view_file_non_ascii_file(self): """ Test the view_file with a non-ascii file name. """ # View file with a non-ascii name tests.add_commit_git_repo(os.path.join(self.path, 'repos', 'test.git'), ncommits=1, filename='Šource') output = self.app.get('/test/blob/master/f/Šource') self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) self.assertEqual(output.headers['Content-Type'].lower(), 'text/html; charset=utf-8') self.assertIn('</span> Šource', output_text) self.assertIn( '<pre class="syntaxhighlightblock"><code>Row 0\n</code></pre>', output_text)
def test_view_file_non_ascii_file(self): """ Test the view_file with a non-ascii file name. """ # View file with a non-ascii name tests.add_commit_git_repo(os.path.join(self.path, 'repos', 'test.git'), ncommits=1, filename='Šource') output = self.app.get('/test/blob/master/f/Šource') self.assertEqual(output.status_code, 200) self.assertEqual(output.headers['Content-Type'].lower(), 'text/html; charset=utf-8') self.assertIn('</span> Šource', output.data) self.assertIn('<table class="code_table">', output.data) self.assertIn( '<tr><td class="cell1"><a id="_1" href="#_1" ' 'data-line-number="1"></a></td>', output.data) self.assertTrue( '<td class="cell2"><pre><span></span>Row 0</pre></td>' in output.data or '<td class="cell2"><pre>Row 0</pre></td>' in output.data)
def test_view_file_non_ascii_file(self): """ Test the view_file with a non-ascii file name. """ # View file with a non-ascii name tests.add_commit_git_repo( os.path.join(self.path, "repos", "test.git"), ncommits=1, filename="Šource", ) output = self.app.get("/test/blob/master/f/Šource") self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) self.assertEqual(output.headers["Content-Type"].lower(), "text/html; charset=utf-8") self.assertIn("</span> Šource", output_text) self.assertIn( '<pre class="syntaxhighlightblock">' '<code class="lang-plaintext">Row 0\n</code></pre>', output_text, )
def test_view_blame_file_non_ascii_name(self): """ Test the view_blame_file endpoint """ tests.add_commit_git_repo( os.path.join(self.path, "repos", "test.git"), ncommits=1, filename="Šource", ) output = self.app.get("/test/blame/Šource") self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) self.assertEqual(output.headers["Content-Type"].lower(), "text/html; charset=utf-8") self.assertIn("</span> Šource", output_text) self.assertIn('<table class="code_table">', output_text) self.assertTrue('<tr><td class="cell1"><a id="1" href="#1" ' 'data-line-number="1"></a></td>' in output_text or '<tr><td class="cell1"><a data-line-number="1" ' 'href="#1" id="1"></a></td>' in output_text) self.assertIn('<td class="cell2"><pre><code>Row 0</code></pre></td>', output_text)
def test_view_blame_file_fork_of_a_fork(self): """ Test the view_blame_file endpoint """ item = pagure.lib.model.Project( user_id=1, # pingou name="test3", description="test project #3", is_fork=True, parent_id=1, hook_token="aaabbbppp", ) self.session.add(item) self.session.commit() tests.add_content_git_repo( os.path.join(self.path, "repos", "forks", "pingou", "test3.git")) tests.add_readme_git_repo( os.path.join(self.path, "repos", "forks", "pingou", "test3.git")) tests.add_commit_git_repo( os.path.join(self.path, "repos", "forks", "pingou", "test3.git"), ncommits=10, ) tests.add_content_to_git( os.path.join(self.path, "repos", "forks", "pingou", "test3.git"), content="✨☃🍰☃✨", ) output = self.app.get("/fork/pingou/test3/blame/sources") self.assertEqual(output.status_code, 200) output_text = output.get_data(as_text=True) self.assertIn('<table class="code_table">', output_text) self.assertTrue('<tr><td class="cell1"><a id="1" href="#1" ' 'data-line-number="1"></a></td>' in output_text or '<tr><td class="cell1"><a data-line-number="1" ' 'href="#1" id="1"></a></td>' in output_text) self.assertIn( '<td class="cell2"><pre><code> barRow 0</code></pre></td>', output_text, )
def insert_data(session, username, user_email): _config["EMAIL_SEND"] = False _config["TESTING"] = True ###################################### # tags item = pagure.lib.model.Tag(tag="tag1") session.add(item) session.commit() ###################################### # Users # Create a couple of users pingou = item = pagure.lib.model.User( user="******", fullname="PY C", password=generate_hashed_value("testing123"), token=None, default_email="*****@*****.**", ) session.add(item) session.commit() print( "User created: {} <{}>, {}".format( item.user, item.default_email, "testing123" ) ) foo = item = pagure.lib.model.User( user="******", fullname="foo bar", password=generate_hashed_value("testing123"), token=None, default_email="*****@*****.**", ) session.add(item) session.commit() print( "User created: {} <{}>, {}".format( item.user, item.default_email, "testing123" ) ) you = item = pagure.lib.model.User( user=username, fullname=username, password=generate_hashed_value("testing123"), token=None, default_email=user_email, ) session.add(item) session.commit() print( "User created: {} <{}>, {}".format( item.user, item.default_email, "testing123" ) ) ###################################### # pagure_group item = pagure.lib.model.PagureGroup( group_name="admin", group_type="admin", user_id=pingou.id, display_name="admin", description="Admin Group", ) session.add(item) session.commit() print('Created "admin" group. Pingou is a member.') # Add a couple of groups so that we can list them item = pagure.lib.model.PagureGroup( group_name="group", group_type="user", user_id=pingou.id, display_name="group group", description="this is a group group", ) session.add(item) session.commit() print('Created "group" group. Pingou is a member.') item = pagure.lib.model.PagureGroup( group_name="rel-eng", group_type="user", user_id=pingou.id, display_name="Release Engineering", description="The group of release engineers", ) session.add(item) session.commit() print('Created "rel-eng" group. Pingou is a member.') ###################################### # projects import shutil # delete folder from local instance to start from a clean slate if os.path.exists(_config["GIT_FOLDER"]): shutil.rmtree(_config["GIT_FOLDER"]) # Create projects item = project1 = pagure.lib.model.Project( user_id=pingou.id, name="test", is_fork=False, parent_id=None, description="test project #1", hook_token="aaabbbccc", ) item.close_status = ["Invalid", "Insufficient data", "Fixed", "Duplicate"] session.add(item) session.flush() tests.create_locks(session, item) item = project2 = pagure.lib.model.Project( user_id=pingou.id, name="test2", is_fork=False, parent_id=None, description="test project #2", hook_token="aaabbbddd", ) item.close_status = ["Invalid", "Insufficient data", "Fixed", "Duplicate"] session.add(item) item = project3 = pagure.lib.model.Project( user_id=pingou.id, name="test3", is_fork=False, parent_id=None, description="namespaced test project", hook_token="aaabbbeee", namespace="somenamespace", ) item.close_status = ["Invalid", "Insufficient data", "Fixed", "Duplicate"] session.add(item) session.commit() tests.create_projects_git(_config["GIT_FOLDER"], bare=True) add_content_git_repo(os.path.join(_config["GIT_FOLDER"], "test.git")) tests.add_readme_git_repo(os.path.join(_config["GIT_FOLDER"], "test.git")) # Add some content to the git repo add_content_git_repo( os.path.join(_config["GIT_FOLDER"], "forks", "pingou", "test.git") ) tests.add_readme_git_repo( os.path.join(_config["GIT_FOLDER"], "forks", "pingou", "test.git") ) tests.add_commit_git_repo( os.path.join(_config["GIT_FOLDER"], "forks", "pingou", "test.git"), ncommits=10, ) ###################################### # user_emails item = pagure.lib.model.UserEmail( user_id=pingou.id, email="*****@*****.**" ) session.add(item) item = pagure.lib.model.UserEmail( user_id=pingou.id, email="*****@*****.**" ) session.add(item) item = pagure.lib.model.UserEmail(user_id=foo.id, email="*****@*****.**") session.add(item) item = pagure.lib.model.UserEmail(user_id=you.id, email=user_email) session.add(item) session.commit() ###################################### # user_emails_pending email_pend = pagure.lib.model.UserEmailPending( user_id=pingou.id, email="[email protected]", token="abcdef" ) session.add(email_pend) session.commit() ###################################### # issues # Add an issue and tag it so that we can list them item = pagure.lib.model.Issue( id=1001, uid="foobar", project_id=project1.id, title="Problem with jenkins build", content="For some reason the tests fail at line:24", user_id=pingou.id, ) session.add(item) session.commit() item = pagure.lib.model.Issue( id=1002, uid="foobar2", project_id=project1.id, title="Unit tests failing", content="Need to fix code for the unit tests to " "pass so jenkins build can complete.", user_id=pingou.id, ) session.add(item) session.commit() item = pagure.lib.model.Issue( id=1003, uid="foobar3", project_id=project1.id, title="Segfault during execution", content="Index out of bounds for variable i?", user_id=you.id, ) session.add(item) session.commit() ###################################### # pagure_user_group group = pagure.lib.query.search_groups( session, pattern=None, group_name="rel-eng", group_type=None ) item = pagure.lib.model.PagureUserGroup( user_id=pingou.id, group_id=group.id ) session.add(item) session.commit() group = pagure.lib.query.search_groups( session, pattern=None, group_name="admin", group_type=None ) item = pagure.lib.model.PagureUserGroup(user_id=you.id, group_id=group.id) session.add(item) session.commit() group = pagure.lib.query.search_groups( session, pattern=None, group_name="group", group_type=None ) item = pagure.lib.model.PagureUserGroup(user_id=foo.id, group_id=group.id) session.add(item) session.commit() ###################################### # projects_groups group = pagure.lib.query.search_groups( session, pattern=None, group_name="rel-eng", group_type=None ) repo = pagure.lib.query.get_authorized_project(session, "test") item = pagure.lib.model.ProjectGroup( project_id=repo.id, group_id=group.id, access="commit" ) session.add(item) session.commit() group = pagure.lib.query.search_groups( session, pattern=None, group_name="admin", group_type=None ) repo = pagure.lib.query.get_authorized_project(session, "test2") item = pagure.lib.model.ProjectGroup( project_id=repo.id, group_id=group.id, access="admin" ) session.add(item) session.commit() ###################################### # pull_requests repo = pagure.lib.query.get_authorized_project(session, "test") forked_repo = pagure.lib.query.get_authorized_project(session, "test") req = pagure.lib.query.new_pull_request( session=session, repo_from=forked_repo, branch_from="master", repo_to=repo, branch_to="master", title="Fixing code for unittest", user=username, status="Open", ) session.commit() repo = pagure.lib.query.get_authorized_project(session, "test") forked_repo = pagure.lib.query.get_authorized_project(session, "test") req = pagure.lib.query.new_pull_request( session=session, repo_from=forked_repo, branch_from="master", repo_to=repo, branch_to="master", title="add very nice README", user=username, status="Open", ) session.commit() repo = pagure.lib.query.get_authorized_project(session, "test") forked_repo = pagure.lib.query.get_authorized_project(session, "test") req = pagure.lib.query.new_pull_request( session=session, repo_from=forked_repo, branch_from="master", repo_to=repo, branch_to="master", title="Add README", user=username, status="Closed", ) session.commit() repo = pagure.lib.query.get_authorized_project(session, "test") forked_repo = pagure.lib.query.get_authorized_project(session, "test") req = pagure.lib.query.new_pull_request( session=session, repo_from=forked_repo, branch_from="master", repo_to=repo, branch_to="master", title="Fix some containers", user=username, status="Merged", ) session.commit() repo = pagure.lib.query.get_authorized_project(session, "test") forked_repo = pagure.lib.query.get_authorized_project(session, "test") req = pagure.lib.query.new_pull_request( session=session, repo_from=forked_repo, branch_from="master", repo_to=repo, branch_to="master", title="Fix pull request statuses", user=username, status="Closed", ) session.commit() repo = pagure.lib.query.get_authorized_project(session, "test") forked_repo = pagure.lib.query.get_authorized_project(session, "test") req = pagure.lib.query.new_pull_request( session=session, repo_from=forked_repo, branch_from="master", repo_to=repo, branch_to="master", title="Fixing UI of issue", user=username, status="Merged", ) session.commit() ##################################### # tokens tests.create_tokens(session, user_id=pingou.id, project_id=project1.id) ###################################### # user_projects repo = pagure.lib.query.get_authorized_project(session, "test") item = pagure.lib.model.ProjectUser( project_id=repo.id, user_id=foo.id, access="commit" ) session.add(item) session.commit() repo = pagure.lib.query.get_authorized_project(session, "test2") item = pagure.lib.model.ProjectUser( project_id=repo.id, user_id=you.id, access="commit" ) session.add(item) session.commit() ###################################### # issue_comments item = pagure.lib.model.IssueComment( user_id=pingou.id, issue_uid="foobar", comment="We may need to adjust the unittests instead of the code.", ) session.add(item) session.commit() ###################################### # issue_to_issue repo = pagure.lib.query.get_authorized_project(session, "test") all_issues = pagure.lib.query.search_issues(session, repo) pagure.lib.query.add_issue_dependency( session, all_issues[0], all_issues[1], "pingou" ) ###################################### # pull_request_comments user = pagure.lib.query.search_user(session, username="******") # only 1 pull request available atm pr = pagure.lib.query.get_pull_request_of_user(session, "pingou")[0] item = pagure.lib.model.PullRequestComment( pull_request_uid=pr.uid, user_id=user.id, comment="+1 for me. Btw, could you rebase before you merge?", notification=0, ) session.add(item) session.commit() ###################################### # pull_request_flags # only 1 pull request available atm pr = pagure.lib.query.get_pull_request_of_user(session, "pingou")[0] item = pagure.lib.model.PullRequestFlag( uid="random_pr_flag_uid", pull_request_uid=pr.uid, user_id=pingou.id, username=pingou.user, percent=80, comment="Jenkins build passes", url=str(pr.id), status="success", ) session.add(item) session.commit() pr = pagure.lib.query.get_pull_request_of_user(session, "foo")[1] item = pagure.lib.model.PullRequestFlag( uid="oink oink uid", pull_request_uid=pr.uid, user_id=pingou.id, username=pingou.user, percent=80, comment="Jenkins does not pass", url=str(pr.id), status="failure", ) session.add(item) session.commit() ###################################### # pull_request_assignee pr = pagure.lib.query.search_pull_requests(session, requestid="1006") pr.assignee_id = pingou.id session.commit() pr = pagure.lib.query.search_pull_requests(session, requestid="1007") pr.assignee_id = you.id session.commit() pr = pagure.lib.query.search_pull_requests(session, requestid="1004") pr.assignee_id = foo.id session.commit() ###################################### # tags_issues repo = pagure.lib.query.get_authorized_project(session, "test") issues = pagure.lib.query.search_issues(session, repo) item = pagure.lib.model.TagIssue(issue_uid=issues[0].uid, tag="tag1") session.add(item) session.commit() ###################################### # tokens_acls tests.create_tokens_acl(session) ###################################### # Fork a project # delete fork data fork_proj_location = "forks/foo/test.git" try: shutil.rmtree(os.path.join(_config["GIT_FOLDER"], fork_proj_location)) except: print("git folder already deleted") try: shutil.rmtree(os.path.join(_config["DOCS_FOLDER"], fork_proj_location)) except: print("docs folder already deleted") try: shutil.rmtree( os.path.join(_config["TICKETS_FOLDER"], fork_proj_location) ) except: print("tickets folder already deleted") try: shutil.rmtree( os.path.join(_config["REQUESTS_FOLDER"], fork_proj_location) ) except: print("requests folder already deleted") repo = pagure.lib.query.get_authorized_project(session, "test") result = pagure.lib.query.fork_project(session, "foo", repo) if result == 'Repo "test" cloned to "foo/test"': session.commit()
def insert_data(session, username, user_email): pagure.APP.config['EMAIL_SEND'] = False pagure.APP.config['TESTING'] = True ###################################### # tags item = pagure.lib.model.Tag(tag='tag1', ) session.add(item) session.commit() ###################################### # Users # Create a couple of users item = pagure.lib.model.User( user='******', fullname='PY C', password='******', default_email='*****@*****.**', ) session.add(item) session.commit() item = pagure.lib.model.User( user='******', fullname='foo bar', password='******', default_email='*****@*****.**', ) session.add(item) session.commit() item = pagure.lib.model.User( user=username, fullname=username, password='******', default_email=user_email, ) session.add(item) session.commit() ###################################### # pagure_group item = pagure.lib.model.PagureGroup( group_name='admin', user_id=1, display_name='admin', description='Admin Group', ) session.add(item) session.commit() # Add a couple of groups so that we can list them item = pagure.lib.model.PagureGroup( group_name='group', group_type='user', user_id=1, # pingou display_name='group group', description='this is a group group', ) session.add(item) session.commit() item = pagure.lib.model.PagureGroup( group_name='rel-eng', group_type='user', user_id=1, # pingou display_name='Release Engineering', description='The group of release engineers', ) session.add(item) session.commit() ###################################### # projects import shutil # delete folder from local instance to start from a clean slate if os.path.exists(pagure.APP.config['GIT_FOLDER']): shutil.rmtree(pagure.APP.config['GIT_FOLDER']) tests.create_projects(session) tests.create_projects_git(pagure.APP.config['GIT_FOLDER'], bare=True) tests.add_content_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'test.git')) tests.add_readme_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'test.git')) # Add some content to the git repo tests.add_content_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'forks', 'pingou', 'test.git')) tests.add_readme_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'forks', 'pingou', 'test.git')) tests.add_commit_git_repo(os.path.join(pagure.APP.config['GIT_FOLDER'], 'forks', 'pingou', 'test.git'), ncommits=10) ###################################### # user_emails item = pagure.lib.model.UserEmail(user_id=1, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail(user_id=1, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail(user_id=2, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail(user_id=3, email=user_email) session.add(item) session.commit() ###################################### # user_emails_pending user = pagure.lib.search_user(session, username='******') email_pend = pagure.lib.model.UserEmailPending( user_id=user.id, email='[email protected]', token='abcdef', ) session.add(email_pend) session.commit() ###################################### # issues # Add an issue and tag it so that we can list them item = pagure.lib.model.Issue( id=1, uid='foobar', project_id=1, title='Problem with jenkins build', content='For some reason the tests fail at line:24', user_id=1, # pingou ) session.add(item) session.commit() item = pagure.lib.model.Issue( id=2, uid='foobar2', project_id=1, title='Unit tests failing', content='Need to fix code for the unit tests to ' 'pass so jenkins build can complete.', user_id=1, # pingou ) session.add(item) session.commit() user = pagure.lib.search_user(session, username=username) item = pagure.lib.model.Issue( id=3, uid='foobar3', project_id=1, title='Segfault during execution', content='Index out of bounds for variable i?', user_id=user.id, # current user ) session.add(item) session.commit() ###################################### # pagure_user_group group = pagure.lib.search_groups(session, pattern=None, group_name="rel-eng", group_type=None) user = pagure.lib.search_user(session, username='******') item = pagure.lib.model.PagureUserGroup(user_id=user.id, group_id=group.id) session.add(item) session.commit() user = pagure.lib.search_user(session, username=username) group = pagure.lib.search_groups(session, pattern=None, group_name="admin", group_type=None) item = pagure.lib.model.PagureUserGroup(user_id=user.id, group_id=group.id) session.add(item) session.commit() user = pagure.lib.search_user(session, username='******') group = pagure.lib.search_groups(session, pattern=None, group_name="group", group_type=None) item = pagure.lib.model.PagureUserGroup(user_id=user.id, group_id=group.id) session.add(item) session.commit() ###################################### # projects_groups group = pagure.lib.search_groups(session, pattern=None, group_name="rel-eng", group_type=None) repo = pagure.get_authorized_project(session, 'test') item = pagure.lib.model.ProjectGroup(project_id=repo.id, group_id=group.id) session.add(item) session.commit() group = pagure.lib.search_groups(session, pattern=None, group_name="admin", group_type=None) repo = pagure.get_authorized_project(session, 'test2') item = pagure.lib.model.ProjectGroup(project_id=repo.id, group_id=group.id) session.add(item) session.commit() ###################################### # pull_requests repo = pagure.get_authorized_project(session, 'test') forked_repo = pagure.get_authorized_project(session, 'test') req = pagure.lib.new_pull_request( session=session, repo_from=forked_repo, branch_from='master', repo_to=repo, branch_to='master', title='Fixing code for unittest', user=username, requestfolder=None, ) session.commit() ###################################### # tokens tests.create_tokens(session) ###################################### # user_projects user = pagure.lib.search_user(session, username='******') repo = pagure.get_authorized_project(session, 'test') item = pagure.lib.model.ProjectUser(project_id=repo.id, user_id=user.id) session.add(item) session.commit() user = pagure.lib.search_user(session, username=username) repo = pagure.get_authorized_project(session, 'test2') item = pagure.lib.model.ProjectUser(project_id=repo.id, user_id=user.id) session.add(item) session.commit() ###################################### # issue_comments item = pagure.lib.model.IssueComment( user_id=1, issue_uid='foobar', comment='We may need to adjust the unittests instead of the code.', ) session.add(item) session.commit() ###################################### # issue_to_issue repo = pagure.get_authorized_project(session, 'test') all_issues = pagure.lib.search_issues(session, repo) pagure.lib.add_issue_dependency(session, all_issues[0], all_issues[1], 'pingou', pagure.APP.config['GIT_FOLDER']) ###################################### # pull_request_comments user = pagure.lib.search_user(session, username='******') # only 1 pull request available atm pr = pagure.lib.get_pull_request_of_user(session, "pingou")[0] item = pagure.lib.model.PullRequestComment( pull_request_uid=pr.uid, user_id=user.id, comment="+1 for me. Btw, could you rebase before you merge?", notification=0) session.add(item) session.commit() ###################################### # pull_request_flags user = pagure.lib.search_user(session, username='******') # only 1 pull request available atm pr = pagure.lib.get_pull_request_of_user(session, "pingou")[0] item = pagure.lib.model.PullRequestFlag(uid="random_pr_flag_uid", pull_request_uid=pr.uid, user_id=user.id, username=user.user, percent=80, comment="Jenkins build passes", url=str(pr.id)) session.add(item) session.commit() ###################################### # tags_issues repo = pagure.get_authorized_project(session, 'test') issues = pagure.lib.search_issues(session, repo) item = pagure.lib.model.TagIssue( issue_uid=issues[0].uid, tag='Blocker', ) session.add(item) session.commit() ###################################### # tokens_acls tests.create_tokens_acl(session) ###################################### # Fork a project # delete fork data fork_proj_location = "forks/foo/test.git" try: shutil.rmtree( os.path.join(pagure.APP.config['GIT_FOLDER'], fork_proj_location)) except: print('git folder already deleted') try: shutil.rmtree( os.path.join(pagure.APP.config['DOCS_FOLDER'], fork_proj_location)) except: print('docs folder already deleted') try: shutil.rmtree( os.path.join(pagure.APP.config['TICKETS_FOLDER'], fork_proj_location)) except: print('tickets folder already deleted') try: shutil.rmtree( os.path.join(pagure.APP.config['REQUESTS_FOLDER'], fork_proj_location)) except: print('requests folder already deleted') repo = pagure.get_authorized_project(session, 'test') result = pagure.lib.fork_project(session, 'foo', repo, pagure.APP.config['GIT_FOLDER'], pagure.APP.config['DOCS_FOLDER'], pagure.APP.config['TICKETS_FOLDER'], pagure.APP.config['REQUESTS_FOLDER']) if result == 'Repo "test" cloned to "foo/test"': session.commit()
def insert_data(session, username, user_email): _config['EMAIL_SEND'] = False _config['TESTING'] = True # Populate with default statuses create_default_status(session) print('Default statuses populated') ###################################### # tags item = pagure.lib.model.Tag(tag='tag1', ) session.add(item) session.commit() ###################################### # Users # Create a couple of users pingou = item = pagure.lib.model.User( user='******', fullname='PY C', password=generate_hashed_value(u'testing123'), token=None, default_email='*****@*****.**', ) session.add(item) session.commit() print("User created: {} <{}>, {}".format(item.user, item.default_email, 'testing123')) foo = item = pagure.lib.model.User( user='******', fullname='foo bar', password=generate_hashed_value(u'testing123'), token=None, default_email='*****@*****.**', ) session.add(item) session.commit() print("User created: {} <{}>, {}".format(item.user, item.default_email, 'testing123')) you = item = pagure.lib.model.User( user=username, fullname=username, password=generate_hashed_value(u'testing123'), token=None, default_email=user_email, ) session.add(item) session.commit() print("User created: {} <{}>, {}".format(item.user, item.default_email, 'testing123')) ###################################### # pagure_group item = pagure.lib.model.PagureGroup( group_name='admin', group_type='admin', user_id=pingou.id, display_name='admin', description='Admin Group', ) session.add(item) session.commit() print('Created "admin" group. Pingou is a member.') # Add a couple of groups so that we can list them item = pagure.lib.model.PagureGroup( group_name='group', group_type='user', user_id=pingou.id, display_name='group group', description='this is a group group', ) session.add(item) session.commit() print('Created "group" group. Pingou is a member.') item = pagure.lib.model.PagureGroup( group_name='rel-eng', group_type='user', user_id=pingou.id, display_name='Release Engineering', description='The group of release engineers', ) session.add(item) session.commit() print('Created "rel-eng" group. Pingou is a member.') ###################################### # projects import shutil # delete folder from local instance to start from a clean slate if os.path.exists(_config['GIT_FOLDER']): shutil.rmtree(_config['GIT_FOLDER']) # Create projects item = project1 = pagure.lib.model.Project( user_id=pingou.id, name='test', is_fork=False, parent_id=None, description='test project #1', hook_token='aaabbbccc', ) item.close_status = ['Invalid', 'Insufficient data', 'Fixed', 'Duplicate'] session.add(item) session.flush() tests.create_locks(session, item) item = project2 = pagure.lib.model.Project( user_id=pingou.id, name='test2', is_fork=False, parent_id=None, description='test project #2', hook_token='aaabbbddd', ) item.close_status = ['Invalid', 'Insufficient data', 'Fixed', 'Duplicate'] session.add(item) item = project3 = pagure.lib.model.Project( user_id=pingou.id, name='test3', is_fork=False, parent_id=None, description='namespaced test project', hook_token='aaabbbeee', namespace='somenamespace', ) item.close_status = ['Invalid', 'Insufficient data', 'Fixed', 'Duplicate'] session.add(item) session.commit() tests.create_projects_git(_config['GIT_FOLDER'], bare=True) add_content_git_repo(os.path.join(_config['GIT_FOLDER'], 'test.git')) tests.add_readme_git_repo(os.path.join(_config['GIT_FOLDER'], 'test.git')) # Add some content to the git repo add_content_git_repo( os.path.join(_config['GIT_FOLDER'], 'forks', 'pingou', 'test.git')) tests.add_readme_git_repo( os.path.join(_config['GIT_FOLDER'], 'forks', 'pingou', 'test.git')) tests.add_commit_git_repo(os.path.join(_config['GIT_FOLDER'], 'forks', 'pingou', 'test.git'), ncommits=10) ###################################### # user_emails item = pagure.lib.model.UserEmail(user_id=pingou.id, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail(user_id=pingou.id, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail(user_id=foo.id, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail(user_id=you.id, email=user_email) session.add(item) session.commit() ###################################### # user_emails_pending email_pend = pagure.lib.model.UserEmailPending( user_id=pingou.id, email='[email protected]', token='abcdef', ) session.add(email_pend) session.commit() ###################################### # issues # Add an issue and tag it so that we can list them item = pagure.lib.model.Issue( id=1001, uid='foobar', project_id=project1.id, title='Problem with jenkins build', content='For some reason the tests fail at line:24', user_id=pingou.id, ) session.add(item) session.commit() item = pagure.lib.model.Issue( id=1002, uid='foobar2', project_id=project1.id, title='Unit tests failing', content='Need to fix code for the unit tests to ' 'pass so jenkins build can complete.', user_id=pingou.id, ) session.add(item) session.commit() item = pagure.lib.model.Issue( id=1003, uid='foobar3', project_id=project1.id, title='Segfault during execution', content='Index out of bounds for variable i?', user_id=you.id, ) session.add(item) session.commit() ###################################### # pagure_user_group group = pagure.lib.query.search_groups(session, pattern=None, group_name="rel-eng", group_type=None) item = pagure.lib.model.PagureUserGroup(user_id=pingou.id, group_id=group.id) session.add(item) session.commit() group = pagure.lib.query.search_groups(session, pattern=None, group_name="admin", group_type=None) item = pagure.lib.model.PagureUserGroup(user_id=you.id, group_id=group.id) session.add(item) session.commit() group = pagure.lib.query.search_groups(session, pattern=None, group_name="group", group_type=None) item = pagure.lib.model.PagureUserGroup(user_id=foo.id, group_id=group.id) session.add(item) session.commit() ###################################### # projects_groups group = pagure.lib.query.search_groups(session, pattern=None, group_name="rel-eng", group_type=None) repo = pagure.lib.query.get_authorized_project(session, 'test') item = pagure.lib.model.ProjectGroup(project_id=repo.id, group_id=group.id, access="commit") session.add(item) session.commit() group = pagure.lib.query.search_groups(session, pattern=None, group_name="admin", group_type=None) repo = pagure.lib.query.get_authorized_project(session, 'test2') item = pagure.lib.model.ProjectGroup(project_id=repo.id, group_id=group.id, access="admin") session.add(item) session.commit() ###################################### # pull_requests repo = pagure.lib.query.get_authorized_project(session, 'test') forked_repo = pagure.lib.query.get_authorized_project(session, 'test') req = pagure.lib.query.new_pull_request(session=session, repo_from=forked_repo, branch_from='master', repo_to=repo, branch_to='master', title='Fixing code for unittest', user=username) session.commit() ###################################### # tokens tests.create_tokens(session, user_id=pingou.id, project_id=project1.id) ###################################### # user_projects repo = pagure.lib.query.get_authorized_project(session, 'test') item = pagure.lib.model.ProjectUser(project_id=repo.id, user_id=foo.id, access="commit") session.add(item) session.commit() repo = pagure.lib.query.get_authorized_project(session, 'test2') item = pagure.lib.model.ProjectUser(project_id=repo.id, user_id=you.id, access="commit") session.add(item) session.commit() ###################################### # issue_comments item = pagure.lib.model.IssueComment( user_id=pingou.id, issue_uid='foobar', comment='We may need to adjust the unittests instead of the code.', ) session.add(item) session.commit() ###################################### # issue_to_issue repo = pagure.lib.query.get_authorized_project(session, 'test') all_issues = pagure.lib.query.search_issues(session, repo) pagure.lib.query.add_issue_dependency(session, all_issues[0], all_issues[1], 'pingou') ###################################### # pull_request_comments user = pagure.lib.query.search_user(session, username='******') # only 1 pull request available atm pr = pagure.lib.query.get_pull_request_of_user(session, "pingou")[0] item = pagure.lib.model.PullRequestComment( pull_request_uid=pr.uid, user_id=user.id, comment="+1 for me. Btw, could you rebase before you merge?", notification=0) session.add(item) session.commit() ###################################### # pull_request_flags # only 1 pull request available atm pr = pagure.lib.query.get_pull_request_of_user(session, "pingou")[0] item = pagure.lib.model.PullRequestFlag(uid="random_pr_flag_uid", pull_request_uid=pr.uid, user_id=pingou.id, username=pingou.user, percent=80, comment="Jenkins build passes", url=str(pr.id), status="Open") session.add(item) session.commit() ###################################### # tags_issues repo = pagure.lib.query.get_authorized_project(session, 'test') issues = pagure.lib.query.search_issues(session, repo) item = pagure.lib.model.TagIssue( issue_uid=issues[0].uid, tag='tag1', ) session.add(item) session.commit() ###################################### # tokens_acls tests.create_tokens_acl(session) ###################################### # Fork a project # delete fork data fork_proj_location = "forks/foo/test.git" try: shutil.rmtree(os.path.join(_config['GIT_FOLDER'], fork_proj_location)) except: print('git folder already deleted') try: shutil.rmtree(os.path.join(_config['DOCS_FOLDER'], fork_proj_location)) except: print('docs folder already deleted') try: shutil.rmtree( os.path.join(_config['TICKETS_FOLDER'], fork_proj_location)) except: print('tickets folder already deleted') try: shutil.rmtree( os.path.join(_config['REQUESTS_FOLDER'], fork_proj_location)) except: print('requests folder already deleted') repo = pagure.lib.query.get_authorized_project(session, 'test') result = pagure.lib.query.fork_project(session, 'foo', repo) if result == 'Repo "test" cloned to "foo/test"': session.commit()
def insert_data(session, username, user_email): pagure.APP.config['EMAIL_SEND'] = False pagure.APP.config['TESTING'] = True ###################################### # tags item = pagure.lib.model.Tag( tag='tag1', ) session.add(item) session.commit() ###################################### # Users # Create a couple of users item = pagure.lib.model.User( user='******', fullname='PY C', password='******', default_email='*****@*****.**', ) session.add(item) session.commit() item = pagure.lib.model.User( user='******', fullname='foo bar', password='******', default_email='*****@*****.**', ) session.add(item) session.commit() item = pagure.lib.model.User( user=username, fullname=username, password='******', default_email=user_email, ) session.add(item) session.commit() ###################################### # pagure_group item = pagure.lib.model.PagureGroup( group_name='admin', user_id=1, ) session.add(item) session.commit() # Add a couple of groups so that we can list them item = pagure.lib.model.PagureGroup( group_name='group', group_type='user', user_id=1, # pingou ) session.add(item) session.commit() item = pagure.lib.model.PagureGroup( group_name='rel-eng', group_type='user', user_id=1, # pingou ) session.add(item) session.commit() ###################################### # projects import shutil # delete folder from local instance to start from a clean slate if os.path.exists(pagure.APP.config['GIT_FOLDER']): shutil.rmtree(pagure.APP.config['GIT_FOLDER']) tests.create_projects(session) tests.create_projects_git(pagure.APP.config['GIT_FOLDER'], bare=True) tests.add_content_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'test.git')) tests.add_readme_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'test.git')) # Add some content to the git repo tests.add_content_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'forks', 'pingou', 'test.git')) tests.add_readme_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'forks', 'pingou', 'test.git')) tests.add_commit_git_repo( os.path.join(pagure.APP.config['GIT_FOLDER'], 'forks', 'pingou', 'test.git'), ncommits=10) ###################################### # user_emails item = pagure.lib.model.UserEmail( user_id=1, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail( user_id=1, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail( user_id=2, email='*****@*****.**') session.add(item) item = pagure.lib.model.UserEmail( user_id=3, email=user_email) session.add(item) session.commit() ###################################### # user_emails_pending user = pagure.lib.search_user(session, username='******') email_pend = pagure.lib.model.UserEmailPending( user_id=user.id, email='[email protected]', token='abcdef', ) session.add(email_pend) session.commit() ###################################### # issues # Add an issue and tag it so that we can list them item = pagure.lib.model.Issue( id=1, uid='foobar', project_id=1, title='Problem with jenkins build', content='For some reason the tests fail at line:24', user_id=1, # pingou ) session.add(item) session.commit() item = pagure.lib.model.Issue( id=2, uid='foobar2', project_id=1, title='Unit tests failing', content='Need to fix code for the unit tests to ' 'pass so jenkins build can complete.', user_id=1, # pingou ) session.add(item) session.commit() user = pagure.lib.search_user(session, username=username) item = pagure.lib.model.Issue( id=3, uid='foobar3', project_id=1, title='Segfault during execution', content='Index out of bounds for variable i?', user_id=user.id, # current user ) session.add(item) session.commit() ###################################### # pagure_user_group group = pagure.lib.search_groups(session, pattern=None, group_name="rel-eng", group_type=None) user = pagure.lib.search_user(session, username='******') item = pagure.lib.model.PagureUserGroup( user_id=user.id, group_id=group.id ) session.add(item) session.commit() user = pagure.lib.search_user(session, username=username) group = pagure.lib.search_groups(session, pattern=None, group_name="admin", group_type=None) item = pagure.lib.model.PagureUserGroup( user_id=user.id, group_id=group.id ) session.add(item) session.commit() user = pagure.lib.search_user(session, username='******') group = pagure.lib.search_groups(session, pattern=None, group_name="group", group_type=None) item = pagure.lib.model.PagureUserGroup( user_id=user.id, group_id=group.id ) session.add(item) session.commit() ###################################### # projects_groups group = pagure.lib.search_groups(session, pattern=None, group_name="rel-eng", group_type=None) repo = pagure.lib.get_project(session, 'test') item = pagure.lib.model.ProjectGroup( project_id=repo.id, group_id=group.id ) session.add(item) session.commit() group = pagure.lib.search_groups(session, pattern=None, group_name="admin", group_type=None) repo = pagure.lib.get_project(session, 'test2') item = pagure.lib.model.ProjectGroup( project_id=repo.id, group_id=group.id ) session.add(item) session.commit() ###################################### # pull_requests repo = pagure.lib.get_project(session, 'test') forked_repo = pagure.lib.get_project(session, 'test') req = pagure.lib.new_pull_request( session=session, repo_from=forked_repo, branch_from='master', repo_to=repo, branch_to='master', title='Fixing code for unittest', user=username, requestfolder=None, ) session.commit() ###################################### # tokens tests.create_tokens(session) ###################################### # user_projects user = pagure.lib.search_user(session, username='******') repo = pagure.lib.get_project(session, 'test') item = pagure.lib.model.ProjectUser( project_id=repo.id, user_id=user.id ) session.add(item) session.commit() user = pagure.lib.search_user(session, username=username) repo = pagure.lib.get_project(session, 'test2') item = pagure.lib.model.ProjectUser( project_id=repo.id, user_id=user.id ) session.add(item) session.commit() ###################################### # issue_comments item = pagure.lib.model.IssueComment( user_id=1, issue_uid='foobar', comment='We may need to adjust the unittests instead of the code.', ) session.add(item) session.commit() ###################################### # issue_to_issue repo = pagure.lib.get_project(session, 'test') all_issues = pagure.lib.search_issues(session, repo) pagure.lib.add_issue_dependency(session, all_issues[0], all_issues[1], 'pingou', pagure.APP.config['GIT_FOLDER']) ###################################### # pull_request_comments user = pagure.lib.search_user(session, username='******') # only 1 pull request available atm pr = pagure.lib.get_pull_request_of_user(session, "pingou")[0] item = pagure.lib.model.PullRequestComment( pull_request_uid=pr.uid, user_id=user.id, comment="+1 for me. Btw, could you rebase before you merge?", notification=0 ) session.add(item) session.commit() ###################################### # pull_request_flags user = pagure.lib.search_user(session, username='******') # only 1 pull request available atm pr = pagure.lib.get_pull_request_of_user(session, "pingou")[0] item = pagure.lib.model.PullRequestFlag( uid="random_pr_flag_uid", pull_request_uid=pr.uid, user_id=user.id, username=user.user, percent=80, comment="Jenkins build passes", url=str(pr.id) ) session.add(item) session.commit() ###################################### # tags_issues repo = pagure.lib.get_project(session, 'test') issues = pagure.lib.search_issues(session, repo) item = pagure.lib.model.TagIssue( issue_uid=issues[0].uid, tag='Blocker', ) session.add(item) session.commit() ###################################### # tokens_acls tests.create_tokens_acl(session) ###################################### # Fork a project # delete fork data fork_proj_location = "forks/foo/test.git" try: shutil.rmtree(os.path.join(pagure.APP.config['GIT_FOLDER'], fork_proj_location)) except: print('git folder already deleted') try: shutil.rmtree(os.path.join(pagure.APP.config['DOCS_FOLDER'], fork_proj_location)) except: print('docs folder already deleted') try: shutil.rmtree(os.path.join(pagure.APP.config['TICKETS_FOLDER'], fork_proj_location)) except: print('tickets folder already deleted') try: shutil.rmtree(os.path.join(pagure.APP.config['REQUESTS_FOLDER'], fork_proj_location)) except: print('requests folder already deleted') repo = pagure.lib.get_project(session, 'test') result = pagure.lib.fork_project(session, 'foo', repo, pagure.APP.config['GIT_FOLDER'], pagure.APP.config['DOCS_FOLDER'], pagure.APP.config['TICKETS_FOLDER'], pagure.APP.config['REQUESTS_FOLDER']) if result == 'Repo "test" cloned to "foo/test"': session.commit()