Ejemplo n.º 1
0
 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",
         },
     )
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
 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"}
Ejemplo n.º 8
0
 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>&nbsp; Šource", output_text)
     self.assertIn("<strong>Add row 0 to Šource file</strong>", output_text)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
    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>&nbsp; Šource', output_text)
        self.assertIn(
            '<pre class="syntaxhighlightblock"><code>Row 0\n</code></pre>',
            output_text)
Ejemplo n.º 11
0
    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>&nbsp; Š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)
Ejemplo n.º 12
0
    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>&nbsp; Šource", output_text)
        self.assertIn(
            '<pre class="syntaxhighlightblock">'
            '<code class="lang-plaintext">Row 0\n</code></pre>',
            output_text,
        )
Ejemplo n.º 13
0
 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>&nbsp; Š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)
Ejemplo n.º 14
0
    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,
        )
Ejemplo n.º 15
0
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()
Ejemplo n.º 16
0
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()
Ejemplo n.º 17
0
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()
Ejemplo n.º 18
0
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()