Beispiel #1
0
    def test_fork_and_watch_project(self):
        p6 = CodeDoubanProject.add('project6', owner_id="admin_user",
                                   summary="test", product="fire")
        p7 = CodeDoubanProject.add('project7', owner_id="other_user",
                                   summary="test", product="fire")

        fork_count = CodeDoubanProject.get_forked_count(p6.id)
        p6fork = p6.fork('project6_other_user', 'other_user')
        fork_count2 = CodeDoubanProject.get_forked_count(p6.id)
        ok_(fork_count2 == fork_count + 1)
        ok_(CodeDoubanProject.get_forked_count(p6fork.id) == 0)

        p6fork2 = p6fork.fork('project6_fork_other_user', 'other_user')
        ok_(CodeDoubanProject.get_forked_count(p6.id) == fork_count + 2)
        ok_(CodeDoubanProject.get_forked_count(p6fork.id) == 1)
        ok_(CodeDoubanProject.get_forked_count(p6fork2.id) == 0)

        watch_count = CodeDoubanProject.get_watched_count(p7.id)
        CodeDoubanProject.add_watch(p7.id, 'admin_user')
        watch_count2 = CodeDoubanProject.get_watched_count(p7.id)
        ok_(watch_count2 == watch_count + 1)

        ok_(len(p7.get_watch_users()) == watch_count2)

        p6.delete()
        p7.delete()
Beispiel #2
0
 def test_multiple_project_index(self):
     skip_test()
     for i in range(5):
         CodeDoubanProject.add('test%s' % i, 'owner', create_trac=False)
     _reposearch.RepoSearch.index_repos()
     objs = _reposearch.RepoSearch.query_repo_objs()
     assert len(objs) == 5
Beispiel #3
0
 def test_multiple_project_index(self):
     skip_test()
     for i in range(5):
         CodeDoubanProject.add('test%s' % i, 'owner', create_trac=False)
     _reposearch.RepoSearch.index_repos()
     objs = _reposearch.RepoSearch.query_repo_objs()
     assert len(objs) == 5
Beispiel #4
0
def get_temp_project(origin=None, repo_path=BARE_REPO_PATH):
    if origin:
        prefix_path = get_repo_root()
        temp_repo_path = tempfile.mkdtemp(suffix=".git",
                                          prefix="test_",
                                          dir=prefix_path)
        project_name = temp_repo_path[len(prefix_path) + 1:][:-4]
        project = CodeDoubanProject.add(project_name,
                                        TEMP_PROJECT_OWNER,
                                        TEMP_PROJECT_DESCRIPTION,
                                        fork_from=origin.id,
                                        create_trac=False)
        return project

    prefix_path = get_repo_root()
    temp_repo_path = tempfile.mkdtemp(suffix=".git",
                                      prefix="test_",
                                      dir=prefix_path)
    project_name = temp_repo_path[len(prefix_path) + 1:][:-4]
    project = CodeDoubanProject.add(project_name, TEMP_PROJECT_OWNER,
                                    TEMP_PROJECT_DESCRIPTION)

    shutil.rmtree(temp_repo_path)
    repo = Jagare(repo_path)
    repo.clone(temp_repo_path, bare=True)

    return project
Beispiel #5
0
def get_temp_project(origin=None, repo_path=BARE_REPO_PATH):
    if origin:
        prefix_path = get_repo_root()
        temp_repo_path = tempfile.mkdtemp(suffix=".git",
                                          prefix="test_",
                                          dir=prefix_path)
        project_name = temp_repo_path[len(prefix_path) + 1:][:-4]
        project = CodeDoubanProject.add(project_name,
                                        TEMP_PROJECT_OWNER,
                                        TEMP_PROJECT_DESCRIPTION,
                                        fork_from=origin.id,
                                        create_trac=False)
        return project

    prefix_path = get_repo_root()
    temp_repo_path = tempfile.mkdtemp(suffix=".git",
                                      prefix="test_",
                                      dir=prefix_path)
    project_name = temp_repo_path[len(prefix_path) + 1:][:-4]
    project = CodeDoubanProject.add(project_name, TEMP_PROJECT_OWNER,
                                    TEMP_PROJECT_DESCRIPTION)

    shutil.rmtree(temp_repo_path)
    repo = Jagare(repo_path)
    repo.clone(temp_repo_path, bare=True)

    return project
Beispiel #6
0
    def test_fork_and_watch_project(self):
        p6 = CodeDoubanProject.add('project6',
                                   owner_id="admin_user",
                                   summary="test",
                                   product="fire")
        p7 = CodeDoubanProject.add('project7',
                                   owner_id="other_user",
                                   summary="test",
                                   product="fire")

        fork_count = CodeDoubanProject.get_forked_count(p6.id)
        p6fork = p6.fork('project6_other_user', 'other_user')
        fork_count2 = CodeDoubanProject.get_forked_count(p6.id)
        ok_(fork_count2 == fork_count + 1)
        ok_(CodeDoubanProject.get_forked_count(p6fork.id) == 0)

        p6fork2 = p6fork.fork('project6_fork_other_user', 'other_user')
        ok_(CodeDoubanProject.get_forked_count(p6.id) == fork_count + 2)
        ok_(CodeDoubanProject.get_forked_count(p6fork.id) == 1)
        ok_(CodeDoubanProject.get_forked_count(p6fork2.id) == 0)

        watch_count = CodeDoubanProject.get_watched_count(p7.id)
        CodeDoubanProject.add_watch(p7.id, 'admin_user')
        watch_count2 = CodeDoubanProject.get_watched_count(p7.id)
        ok_(watch_count2 == watch_count + 1)

        ok_(len(p7.get_watch_users()) == watch_count2)

        p6.delete()
        p7.delete()
Beispiel #7
0
 def test_multiple_project_index(self):
     skip_test()
     for i in range(5):
         CodeDoubanProject.add(
             'test%s' % i, 'owner%s' % i, create_trac=False)
     _usersearch.UserSearch.index_users()
     objs = _usersearch.UserSearch.query_user_objs()
     assert len(objs) == 5
Beispiel #8
0
 def test_multiple_project_index(self):
     skip_test()
     for i in range(5):
         CodeDoubanProject.add('test%s' % i,
                               'owner%s' % i,
                               create_trac=False)
     _usersearch.UserSearch.index_users()
     objs = _usersearch.UserSearch.query_user_objs()
     assert len(objs) == 5
Beispiel #9
0
 def test_transfer_project(self):
     pname1 = 'project6'
     pname2 = 'project7'
     proj_owner = 'admin_user'
     to_user = '******'
     p = CodeDoubanProject.add(pname1, owner_id=proj_owner,
                               summary="test", product="fire")
     _ = CodeDoubanProject.add(pname2, owner_id=proj_owner,
                               summary="test", product="fire")
     p.transfer_to(to_user)
     p1 = CodeDoubanProject.get_by_name(pname1)
     assert p1.owner_id == to_user
     p2 = CodeDoubanProject.get_by_name(pname2)
     assert p2.owner_id == proj_owner
Beispiel #10
0
 def test_update_can_push(self):
     project_name = "project11"
     owner_id = "testuser"
     summary = "a summary"
     product = "fire"
     CodeDoubanProject.add(project_name, owner_id, summary, product)
     p = CodeDoubanProject.get_by_name('project11')
     assert p.can_push == 1
     p.update_can_push(False)
     p = CodeDoubanProject.get_by_name('project11')
     assert p.can_push == 0
     p.update_can_push(True)
     p = CodeDoubanProject.get_by_name('project11')
     assert p.can_push == 1
Beispiel #11
0
def setup_repos(tmpdir, prj_name='test_proj'):
    origin_project = CodeDoubanProject.add(prj_name, 1,
                                           create_trac=False)
    path = origin_project.git_real_path
    with clone(path) as workdir:
        with open(os.path.join(workdir, 'origin'), 'w') as f:
            f.write(content_a)
    fork_project = CodeDoubanProject.add(prj_name + '_fork', 2,
                                         fork_from=origin_project.id,
                                         create_trac=False)
    fork_path = fork_project.git_real_path
    repo = origin_project
    fork_repo = fork_project
    return path, repo, fork_path, fork_repo
Beispiel #12
0
 def test_get_my_projects(self):
     project_name = "code"
     product_name = "fire"
     summary = "test"
     owner_id = "xingben"
     for i in range(5):
         delete_project("%s%d" % (project_name, i))
         CodeDoubanProject.add("%s%d" % (project_name, i), owner_id=owner_id, summary=summary, product=product_name)
     api_token = self.create_api_token("xingben")
     ret = self.app.get(
         "/api/user/repos", headers=dict(Authorization="Bearer %s" % api_token.token), status=200
     ).json
     self.assertEquals(len(ret), 5)
     self.assertTrue("name" in ret[0])
     self.assertTrue("description" in ret[0])
Beispiel #13
0
 def test_project_meta_dict(self):
     project_name = "project3"
     owner_id = "testuser"
     summary = "a summary"
     product = "fire"
     project = CodeDoubanProject.add(project_name, owner_id, summary,
                                     product)
     # hookfile_path = "%s/hooks/post-receive" % project.git_real_path
     project = CodeDoubanProject.get_by_name(project_name)
     data = {
         'url': "%s/%s" % (DOMAIN, project_name),
         'name': project_name,
         'description': summary,
         'product': product,
         'committers_count': 0,
         'forked_count': 0,
         'open_issues_count': 0,
         'open_tickets_count': 0,
         'watched_count': 0,
         'owner': {
             'name': owner_id,
             'avatar': gravatar_url(owner_id + '@douban.com'),
         },
     }
     commits = project.git.get_revisions("HEAD~1", "HEAD")
     if commits:
         data['last_commit'] = commits[0]
     ok_(project.get_info() == data)
     project.delete()
Beispiel #14
0
def setup_repos(tmpdir, prj_name='test_proj'):
    delete_project(prj_name)
    origin_project = CodeDoubanProject.add(prj_name, 1, create_trac=False)
    path = origin_project.git_real_path
    with clone(path) as workdir:
        with open(os.path.join(workdir, 'origin'), 'w') as f:
            f.write(content_a)
    delete_project(prj_name + '_fork')
    fork_project = CodeDoubanProject.add(prj_name + '_fork',
                                         2,
                                         fork_from=origin_project.id,
                                         create_trac=False)
    fork_path = fork_project.git_real_path
    repo = origin_project
    fork_repo = fork_project
    return path, repo, fork_path, fork_repo
Beispiel #15
0
 def test_can_set_undefined_second_level_entry(self):
     project = CodeDoubanProject.add(
         'tp', owner_id="test1", create_trac=False)
     u = self.addUser()
     project.git.commit_one_file(PROJECT_CONF_FILE,
                                 'docs: {unexisting_key: aaa}', 'm', u)
     assert project.conf['docs']['unexisting_key'] == 'aaa'
Beispiel #16
0
    def test_personal_project(self):
        project_name = "lisong_intern/code"
        summary = "test"
        owner_id = "lisong_intern"
        delete_project(project_name)
        CodeDoubanProject.add(project_name, owner_id=owner_id, summary=summary)

        ret = self.app.get("/api/%s/" % project_name, status=200).json
        self.assertEqual(ret["name"], project_name)
        self.assertEqual(ret["owner"]["name"], owner_id)
        self.assertEqual(ret["description"], summary)
        self.assertEqual(ret["committers_count"], 0)
        self.assertEqual(ret["watched_count"], 0)
        self.assertEqual(ret["forked_count"], 0)
        self.assertEqual(ret["open_issues_count"], 0)
        self.assertEqual(ret["open_tickets_count"], 0)
 def setUp(self):
     super(ProjectIssueCommentsTest, self).setUp()
     project_name = "code"
     product_name = "fire"
     summary = "test"
     owner_id = "lisong_intern"
     delete_project(project_name)
     project = CodeDoubanProject.add(
         project_name,
         owner_id=owner_id,
         summary=summary,
         product=product_name
     )
     self.project = project
     title = "test title"
     description = "test desc"
     creator = "test"
     issue = ProjectIssue.add(
         title,
         description,
         creator,
         project=self.project.id
     )
     self.issue = issue
     self.project = project
     self.comment1 = IssueComment.add(
         self.issue.issue_id, 'content1', 'test1')
     self.comment2 = IssueComment.add(
         self.issue.issue_id, 'content2', 'test2')
     self.api_token = self.create_api_token('test1')
     self.api_token2 = self.create_api_token('test2')
Beispiel #18
0
    def test_project_stat(self):
        store.execute("delete from codedouban_projects where project_id < 5")
        project_rs = get_all_project()
        assert len(project_rs) == 0
        project_fork_count = len(filter(lambda x: x[1] is not None,
                                        project_rs))
        assert project_fork_count == 0

        project_name = "project"
        project = CodeDoubanProject.add(project_name,
                                        owner_id="test1",
                                        summary="test",
                                        product="fire")
        git_path = os.path.join(get_repo_root(), '%s.git' % project_name)
        ok_(os.path.exists(git_path))
        project_rs = get_all_project()
        assert len(project_rs) == 1
        project_fork_count = len(filter(lambda x: x[1] is not None,
                                        project_rs))
        assert project_fork_count == 0

        project_fork = project.fork('project_test_fork', 'test_fork')
        project_rs = get_all_project()
        assert len(project_rs) == 2
        project_fork_count = len(filter(lambda x: x[1] is not None,
                                        project_rs))
        assert project_fork_count == 1

        project.delete()
        project_fork.delete()
Beispiel #19
0
 def test_project_meta_dict(self):
     project_name = "project3"
     owner_id = "testuser"
     summary = "a summary"
     product = "fire"
     project = CodeDoubanProject.add(
         project_name, owner_id, summary, product)
     # hookfile_path = "%s/hooks/post-receive" % project.git_real_path
     project = CodeDoubanProject.get_by_name(project_name)
     data = {
         'url': "%s/%s" % (DOMAIN, project_name),
         'name': project_name,
         'description': summary,
         'product': product,
         'committers_count': 0,
         'forked_count': 0,
         'open_issues_count': 0,
         'open_tickets_count': 0,
         'watched_count': 0,
         'owner': {
             'name': owner_id,
             'avatar': gravatar_url(owner_id + '@douban.com'),
         },
     }
     commits = project.git.get_revisions("HEAD~1", "HEAD")
     if commits:
         data['last_commit'] = commits[0]
     ok_(project.get_info() == data)
     project.delete()
Beispiel #20
0
 def test_broken_conf(self):
     project = CodeDoubanProject.add(
         'tp', owner_id="test1", create_trac=False)
     u = self.addUser()
     project.git.commit_one_file(PROJECT_CONF_FILE,
                                 'docs {dir: other_dir', 'm', u)
     assert project.conf['docs']['dir'] == 'other_dir'
Beispiel #21
0
    def test_project_stat(self):
        store.execute("delete from codedouban_projects where project_id < 5")
        project_rs = get_all_project()
        assert len(project_rs) == 0
        project_fork_count = len(filter(lambda x: x[1] is not None,
                                        project_rs))
        assert project_fork_count == 0

        project_name = "project"
        project = CodeDoubanProject.add(
            project_name, owner_id="test1", summary="test", product="fire")
        git_path = os.path.join(get_repo_root(), '%s.git' % project_name)
        ok_(os.path.exists(git_path))
        project_rs = get_all_project()
        assert len(project_rs) == 1
        project_fork_count = len(filter(lambda x: x[1] is not None,
                                        project_rs))
        assert project_fork_count == 0

        project_fork = project.fork('project_test_fork', 'test_fork')
        project_rs = get_all_project()
        assert len(project_rs) == 2
        project_fork_count = len(filter(lambda x: x[1] is not None,
                                        project_rs))
        assert project_fork_count == 1

        project.delete()
        project_fork.delete()
Beispiel #22
0
 def test_permissions_check(self):
     project_name = "project4"
     project = CodeDoubanProject.add(project_name, owner_id="admin_user",
                                     summary="test", product="fire")
     ok_(project.is_admin("admin_user"))
     ok_(not project.is_admin("other_user"))
     project.delete()
Beispiel #23
0
 def add_people_project(project):
     name = "%s/%s" % (project.owner_id, project.name)
     _project = CodeDoubanProject.add(
         name=name, owner_id=project.owner_id,
         summary=project.summary, product=project.product,
         intern_banned=project.intern_banned)
     return _project
Beispiel #24
0
    def test_personal_project(self):
        project_name = "lisong_intern/code"
        summary = "test"
        owner_id = "lisong_intern"
        delete_project(project_name)
        CodeDoubanProject.add(project_name, owner_id=owner_id, summary=summary)

        ret = self.app.get("/api/%s/" % project_name, status=200).json
        self.assertEqual(ret['name'], project_name)
        self.assertEqual(ret['owner']['name'], owner_id)
        self.assertEqual(ret['description'], summary)
        self.assertEqual(ret['committers_count'], 0)
        self.assertEqual(ret['watched_count'], 0)
        self.assertEqual(ret['forked_count'], 0)
        self.assertEqual(ret['open_issues_count'], 0)
        self.assertEqual(ret['open_tickets_count'], 0)
Beispiel #25
0
    def test_fork_project(self):
        orig = CodeDoubanProject.add('orig', owner_id="user1")
        fork = orig.fork('fork', 'user2')

        ok_(os.path.exists(fork.git_real_path))
        ok_(os.path.exists(os.path.join(fork.git_real_path, 'HEAD')))

        eq_(fork.owner_id, 'user2')
Beispiel #26
0
    def test_fork_project(self):
        orig = CodeDoubanProject.add('orig', owner_id="user1")
        fork = orig.fork('fork', 'user2')

        ok_(os.path.exists(fork.git_real_path))
        ok_(os.path.exists(os.path.join(fork.git_real_path, 'HEAD')))

        eq_(fork.owner_id, 'user2')
Beispiel #27
0
    def test_create_project(self):
        project_name = "project"
        project = CodeDoubanProject.add(
            project_name, owner_id="test1", summary="test", product="fire")

        git_path = os.path.join(get_repo_root(), '%s.git' % project_name)
        ok_(os.path.exists(git_path))
        project.delete()
Beispiel #28
0
 def test_update_can_push(self):
     project_name = "project11"
     owner_id = "testuser"
     summary = "a summary"
     product = "fire"
     CodeDoubanProject.add(project_name,
                           owner_id,
                           summary,
                           product)
     p = CodeDoubanProject.get_by_name('project11')
     assert p.can_push == 1
     p.update_can_push(False)
     p = CodeDoubanProject.get_by_name('project11')
     assert p.can_push == 0
     p.update_can_push(True)
     p = CodeDoubanProject.get_by_name('project11')
     assert p.can_push == 1
Beispiel #29
0
 def test_conf_add_wrong_keys(self):
     project = CodeDoubanProject.add(
         'tp', owner_id="test1", create_trac=False)
     u = self.addUser()
     project.git.commit_one_file(
         PROJECT_CONF_FILE,
         'unexisting_key_argl1: 1\nunexisting_key_argl2: 2', 'm', u)
     assert 'unexisting_key_argl1' not in project.conf
Beispiel #30
0
 def test_cannot_set_undefined_first_level_entry(self):
     project = CodeDoubanProject.add(
         'tp', owner_id="test1", create_trac=False)
     u = self.addUser()
     project.git.commit_one_file(PROJECT_CONF_FILE,
                                 'unexisting_key: 123', 'm', u)
     # First level key need to be defined in default_code_config.yaml
     assert 'unexisting_key' not in project.conf
Beispiel #31
0
 def add_org_project(project):
     _project = CodeDoubanProject.add(
         name=name,
         owner_id=project.owner_id,
         summary=project.summary,
         product=project.product,
         intern_banned=project.intern_banned)
     return _project
Beispiel #32
0
 def test_permissions_check(self):
     project_name = "project4"
     project = CodeDoubanProject.add(project_name,
                                     owner_id="admin_user",
                                     summary="test",
                                     product="fire")
     ok_(project.is_admin("admin_user"))
     ok_(not project.is_admin("other_user"))
     project.delete()
Beispiel #33
0
 def test_rename_bad_project(self):
     pname1 = 'project10'
     pname2 = '/dad13/'
     proj_owner = 'admin_user'
     p = CodeDoubanProject.add(pname1, owner_id=proj_owner,
                               summary="test", product="fire")
     assert p.rename(pname2) is False
     git_path = os.path.join(get_repo_root(), '%s.git' % pname1)
     ok_(os.path.exists(git_path))
Beispiel #34
0
 def test_get_forked_from_should_return_origin_project(self):
     prj = CodeDoubanProject.get_by_name('orig')
     prj.delete()
     prj = CodeDoubanProject.get_by_name('fork')
     prj.delete()
     orig = CodeDoubanProject.add('orig', owner_id="test1")
     fork = orig.fork('fork', 'user2')
     source = fork.get_forked_from()
     eq_(source, orig)
Beispiel #35
0
 def add_people_project(project):
     name = "%s/%s" % (project.owner_id, project.name)
     _project = CodeDoubanProject.add(
         name=name,
         owner_id=project.owner_id,
         summary=project.summary,
         product=project.product,
         intern_banned=project.intern_banned)
     return _project
Beispiel #36
0
 def test_transfer_project(self):
     pname1 = 'project6'
     pname2 = 'project7'
     proj_owner = 'admin_user'
     to_user = '******'
     p = CodeDoubanProject.add(pname1,
                               owner_id=proj_owner,
                               summary="test",
                               product="fire")
     _ = CodeDoubanProject.add(pname2,
                               owner_id=proj_owner,
                               summary="test",
                               product="fire")
     p.transfer_to(to_user)
     p1 = CodeDoubanProject.get_by_name(pname1)
     assert p1.owner_id == to_user
     p2 = CodeDoubanProject.get_by_name(pname2)
     assert p2.owner_id == proj_owner
Beispiel #37
0
 def test_get_forked_from_should_return_origin_project(self):
     prj = CodeDoubanProject.get_by_name('orig')
     prj.delete()
     prj = CodeDoubanProject.get_by_name('fork')
     prj.delete()
     orig = CodeDoubanProject.add('orig', owner_id="test1")
     fork = orig.fork('fork', 'user2')
     source = fork.get_forked_from()
     eq_(source, orig)
Beispiel #38
0
 def test_can_set_undefined_second_level_entry(self):
     self.clean_up()
     project = CodeDoubanProject.add('tp',
                                     owner_id="test1",
                                     create_trac=False)
     u = self.addUser()
     project.git.commit_one_file(PROJECT_CONF_FILE,
                                 'docs: {unexisting_key: aaa}', 'm', u)
     assert project.conf['docs']['unexisting_key'] == 'aaa'
Beispiel #39
0
 def test_broken_conf(self):
     self.clean_up()
     project = CodeDoubanProject.add('tp',
                                     owner_id="test1",
                                     create_trac=False)
     u = self.addUser()
     project.git.commit_one_file(PROJECT_CONF_FILE, 'docs {dir: other_dir',
                                 'm', u)
     assert project.conf['docs']['dir'] == 'other_dir'
Beispiel #40
0
 def test_rename_project(self):
     pname1 = 'project8'
     pname2 = 'project9'
     proj_owner = 'admin_user'
     p = CodeDoubanProject.add(pname1, owner_id=proj_owner,
                               summary="test", product="fire")
     p.rename(pname2)
     assert p.name == pname2
     git_path = os.path.join(get_repo_root(), '%s.git' % pname2)
     ok_(os.path.exists(git_path))
Beispiel #41
0
    def test_create_project(self):
        project_name = "project"
        project = CodeDoubanProject.add(project_name,
                                        owner_id="test1",
                                        summary="test",
                                        product="fire")

        git_path = os.path.join(get_repo_root(), '%s.git' % project_name)
        ok_(os.path.exists(git_path))
        project.delete()
Beispiel #42
0
 def test_conf_add_wrong_keys(self):
     self.clean_up()
     project = CodeDoubanProject.add('tp',
                                     owner_id="test1",
                                     create_trac=False)
     u = self.addUser()
     project.git.commit_one_file(
         PROJECT_CONF_FILE,
         'unexisting_key_argl1: 1\nunexisting_key_argl2: 2', 'm', u)
     assert 'unexisting_key_argl1' not in project.conf
Beispiel #43
0
 def test_cannot_set_undefined_first_level_entry(self):
     self.clean_up()
     project = CodeDoubanProject.add('tp',
                                     owner_id="test1",
                                     create_trac=False)
     u = self.addUser()
     project.git.commit_one_file(PROJECT_CONF_FILE, 'unexisting_key: 123',
                                 'm', u)
     # First level key need to be defined in default_code_config.yaml
     assert 'unexisting_key' not in project.conf
Beispiel #44
0
 def test_get_my_projects(self):
     project_name = "code"
     product_name = "fire"
     summary = "test"
     owner_id = "xingben"
     for i in range(5):
         delete_project("%s%d" % (project_name, i))
         CodeDoubanProject.add("%s%d" % (project_name, i),
                               owner_id=owner_id,
                               summary=summary,
                               product=product_name)
     api_token = self.create_api_token('xingben')
     ret = self.app.get("/api/user/repos",
                        headers=dict(Authorization="Bearer %s" %
                                     api_token.token),
                        status=200).json
     self.assertEquals(len(ret), 5)
     self.assertTrue('name' in ret[0])
     self.assertTrue('description' in ret[0])
Beispiel #45
0
    def test_get_fork_network_should_return_all_projects_with_same_origin(self):  # noqa
        orig = CodeDoubanProject.add('orig', owner_id="test1")
        fork = orig.fork('fork', 'user1')
        fork2 = orig.fork('fork2', 'user2')
        fork3 = fork.fork('fork3', 'user3')

        expected_network = set([orig, fork, fork2, fork3])

        for proj in [orig, fork, fork2, fork3]:
            network = proj.get_fork_network()
            eq_(set(network), expected_network)
Beispiel #46
0
 def test_rename_bad_project(self):
     pname1 = 'project10'
     pname2 = '/dad13/'
     proj_owner = 'admin_user'
     p = CodeDoubanProject.add(pname1,
                               owner_id=proj_owner,
                               summary="test",
                               product="fire")
     assert p.rename(pname2) is False
     git_path = os.path.join(get_repo_root(), '%s.git' % pname1)
     ok_(os.path.exists(git_path))
Beispiel #47
0
 def setUp(self):
     super(ProjectIssueTest, self).setUp()
     project_name = "code"
     product_name = "fire"
     summary = "test"
     owner_id = "lisong_intern"
     project = CodeDoubanProject.add(project_name, owner_id=owner_id, summary=summary, product=product_name)
     self.project = project
     self.username = "******"
     self.username2 = "zhangchi"
     self.api_token = self.create_api_token(self.username)
     self.api_token2 = self.create_api_token(self.username2)
Beispiel #48
0
 def test_rename_project(self):
     pname1 = 'project8'
     pname2 = 'project9'
     proj_owner = 'admin_user'
     p = CodeDoubanProject.add(pname1,
                               owner_id=proj_owner,
                               summary="test",
                               product="fire")
     p.rename(pname2)
     assert p.name == pname2
     git_path = os.path.join(get_repo_root(), '%s.git' % pname2)
     ok_(os.path.exists(git_path))
Beispiel #49
0
 def add_mirror_project(project):
     name = "mirror/%s" % (project.name)
     _project = CodeDoubanProject.add(
         name=name, owner_id='mirror', summary=project.summary,
         product=project.product, intern_banned=project.intern_banned,
         mirror=project.mirror_url)
     if _project:
         CodeDoubanMirror.add(url=project.mirror_url,
                              state=MIRROR_STATE_CLONING,
                              project_id=_project.id,
                              with_proxy=project.mirror_proxy)
     return _project
    def test_zero_vote_and_zero_comment_display(self):
        app = TestApp(M.app)
        project_name = "project"
        project = CodeDoubanProject.add(
            project_name, owner_id="test1", summary="test", product="fire")
        issue = ProjectIssue.add('test', 'test description', 'test',
                                 project=project.id)
        resp = app.get(project.url + "/issues/")

        assert resp.status_int == 200
        assert 'Issues' in resp.body
        assert '0 vote' not in resp.body
        assert '0 comment' not in resp.body
    def test_new_project_issue_participant_count(self):
        app = TestApp(M.app)
        project_name = "project"
        project = CodeDoubanProject.add(
            project_name, owner_id="test1", summary="test", product="fire")
        issue = ProjectIssue.add(
            'test', 'test description', 'test', project=project.id)
        resp = app.get(issue.url)

        assert resp.status_int == 200
        assert 'Issues' in resp.body
        assert '<strong>1</strong> participant' in resp.text
        assert '<strong>1</strong> participants' not in resp.text
Beispiel #52
0
 def add_fork_project(project):
     name = "%s/%s" % (project.owner_id, project.name)
     _project = CodeDoubanProject.add(
         name=name, owner_id=project.owner_id, summary=project.summary,
         product=project.product, fork_from=project.fork_from,
         intern_banned=project.intern_banned)
     if _project:
         fork_from_project = CodeDoubanProject.get(project.fork_from)
         _project.update(project.summary,
                         project.product,
                         name,
                         fork_from_project.intern_banned)
     return _project
    def test_two_comments_display(self):
        app = TestApp(M.app)
        project_name = "project4"
        project = CodeDoubanProject.add(
            project_name, owner_id="test1", summary="test", product="fire")
        issue = ProjectIssue.add('test', 'test description', 'test',
                                 project=project.id)
        issue.add_comment('this is a comment', 'test')
        issue.add_comment('this is also a comment', 'test')
        resp = app.get(project.url + "/issues/")

        assert resp.status_int == 200
        assert "Issues" in resp.body
        assert "2 comments" in resp.body
Beispiel #54
0
    def test_get_fork_network_should_return_all_projects_with_same_origin(
            self):  # noqa
        prj = CodeDoubanProject.get_by_name('orig')
        prj.delete()
        orig = CodeDoubanProject.add('orig', owner_id="test1")
        fork = orig.fork('fork1', 'user1')
        fork2 = orig.fork('fork2', 'user2')
        fork3 = fork.fork('fork3', 'user3')

        expected_network = set([orig, fork, fork2, fork3])

        for proj in [orig, fork, fork2, fork3]:
            network = proj.get_fork_network()
            eq_(set(network), expected_network)
Beispiel #55
0
 def add_fork_project(project):
     name = "%s/%s" % (project.owner_id, project.name)
     _project = CodeDoubanProject.add(
         name=name,
         owner_id=project.owner_id,
         summary=project.summary,
         product=project.product,
         fork_from=project.fork_from,
         intern_banned=project.intern_banned)
     if _project:
         fork_from_project = CodeDoubanProject.get(project.fork_from)
         _project.update(project.summary, project.product, name,
                         fork_from_project.intern_banned)
     return _project
Beispiel #56
0
 def add_mirror_project(project):
     name = "mirror/%s" % (project.name)
     _project = CodeDoubanProject.add(
         name=name,
         owner_id='mirror',
         summary=project.summary,
         product=project.product,
         intern_banned=project.intern_banned,
         mirror=project.mirror_url)
     if _project:
         CodeDoubanMirror.add(url=project.mirror_url,
                              state=MIRROR_STATE_CLONING,
                              project_id=_project.id,
                              with_proxy=project.mirror_proxy)
     return _project
Beispiel #57
0
    def create_project_and_a_fork(self):
        from nose import SkipTest
        raise SkipTest(
            "These tests have Segmentation Fault")  # guibog 20121105
        orig = CodeDoubanProject.add('orig', 'origuser')
        with clone(orig.git_real_path) as workdir:
            with open(os.path.join(workdir, 'a'), 'w') as f:
                f.write("a line of code\n")

        fork = orig.fork('fork', 'forkuser')
        with clone(fork.git_real_path) as workdir:
            with open(os.path.join(workdir, 'b'), 'w') as f:
                f.write("another line of code\n")

        return orig, fork
Beispiel #58
0
 def setUp(self):
     super(ProjectIssueTest, self).setUp()
     project_name = "code"
     product_name = "fire"
     summary = "test"
     owner_id = "lisong_intern"
     delete_project(project_name)
     project = CodeDoubanProject.add(project_name,
                                     owner_id=owner_id,
                                     summary=summary,
                                     product=product_name)
     self.project = project
     self.username = "******"
     self.username2 = "zhangchi"
     self.api_token = self.create_api_token(self.username)
     self.api_token2 = self.create_api_token(self.username2)
Beispiel #59
0
    def test_zero_vote_and_zero_comment_display(self):
        app = TestApp(M.app)
        project_name = "project"
        delete_project(project_name)
        project = CodeDoubanProject.add(project_name,
                                        owner_id="test1",
                                        summary="test",
                                        product="fire")
        ProjectIssue.add('test',
                         'test description',
                         'test',
                         project=project.id)
        resp = app.get(project.url + "/issues/")

        assert resp.status_int == 200
        assert 'Issues' in resp.body
        assert '0 vote' not in resp.body
        assert '0 comment' not in resp.body