|
Pierre-Yves Chibon |
33b534 |
# -*- coding: utf-8 -*-
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Pierre-Yves Chibon |
d88010 |
"""
|
|
Pierre-Yves Chibon |
baaf54 |
(c) 2015-2018 - Copyright Red Hat Inc
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Pierre-Yves Chibon |
d88010 |
Authors:
|
|
Pierre-Yves Chibon |
d88010 |
Pierre-Yves Chibon <pingou@pingoured.fr>
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Pierre-Yves Chibon |
d88010 |
"""
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Aurélien Bompard |
626417 |
from __future__ import unicode_literals
|
|
Aurélien Bompard |
626417 |
|
|
Pierre-Yves Chibon |
d88010 |
__requires__ = ['SQLAlchemy >= 0.8']
|
|
Pierre-Yves Chibon |
d88010 |
import pkg_resources
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Pierre-Yves Chibon |
a3901b |
import datetime
|
|
Pierre-Yves Chibon |
d88010 |
import unittest
|
|
Pierre-Yves Chibon |
4fbc78 |
import shutil
|
|
Pierre-Yves Chibon |
d88010 |
import sys
|
|
Pierre-Yves Chibon |
d88010 |
import os
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Pierre-Yves Chibon |
2df627 |
import markdown
|
|
Pierre-Yves Chibon |
207c8a |
from mock import patch, MagicMock
|
|
Pierre-Yves Chibon |
a42f77 |
|
|
Pierre-Yves Chibon |
d88010 |
sys.path.insert(0, os.path.join(os.path.dirname(
|
|
Pierre-Yves Chibon |
d88010 |
os.path.abspath(__file__)), '..'))
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Farhaan Bukhsh |
72e9db |
import pagure
|
|
Pierre-Yves Chibon |
fe5017 |
import pagure.lib
|
|
Pierre-Yves Chibon |
04800a |
import pagure.lib.model
|
|
Pierre-Yves Chibon |
538301 |
import tests
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Clement Verna |
d07ee8 |
class PagureLibtests_search_user(tests.Modeltests):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the pagure.lib search_user() method
|
|
Clement Verna |
d07ee8 |
"""
|
|
Pierre-Yves Chibon |
d88010 |
|
|
Pierre-Yves Chibon |
f21734 |
maxDiff = None
|
|
Pierre-Yves Chibon |
f21734 |
|
|
Pierre-Yves Chibon |
f74336 |
def test_search_user_all(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns all the users for the given session
|
|
Clement Verna |
d07ee8 |
"""
|
|
Pierre-Yves Chibon |
f74336 |
|
|
Pierre-Yves Chibon |
f74336 |
# Retrieve all users
|
|
Pierre-Yves Chibon |
fe5017 |
items = pagure.lib.search_user(self.session)
|
|
Pierre-Yves Chibon |
f74336 |
self.assertEqual(2, len(items))
|
|
Pierre-Yves Chibon |
c1b058 |
self.assertEqual(2, items[0].id)
|
|
Pierre-Yves Chibon |
c1b058 |
self.assertEqual('foo', items[0].user)
|
|
Pierre-Yves Chibon |
c1b058 |
self.assertEqual('foo', items[0].username)
|
|
Pierre-Yves Chibon |
c1b058 |
self.assertEqual([], items[1].groups)
|
|
Pierre-Yves Chibon |
c1b058 |
self.assertEqual(1, items[1].id)
|
|
Pierre-Yves Chibon |
c1b058 |
self.assertEqual('pingou', items[1].user)
|
|
Pierre-Yves Chibon |
c1b058 |
self.assertEqual('pingou', items[1].username)
|
|
Pierre-Yves Chibon |
f74336 |
self.assertEqual([], items[1].groups)
|
|
Pierre-Yves Chibon |
f74336 |
|
|
Pierre-Yves Chibon |
c7ee0c |
def test_search_user_username(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns the user for a given username
|
|
Clement Verna |
d07ee8 |
"""
|
|
Pierre-Yves Chibon |
c7ee0c |
|
|
Pierre-Yves Chibon |
c7ee0c |
# Retrieve user by username
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.search_user(self.session, username='foo')
|
|
Pierre-Yves Chibon |
c7ee0c |
self.assertEqual('foo', item.user)
|
|
Pierre-Yves Chibon |
c7ee0c |
self.assertEqual('foo', item.username)
|
|
Pierre-Yves Chibon |
c7ee0c |
self.assertEqual([], item.groups)
|
|
Pierre-Yves Chibon |
c7ee0c |
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.search_user(self.session, username='bar')
|
|
Pierre-Yves Chibon |
c7ee0c |
self.assertEqual(None, item)
|
|
Pierre-Yves Chibon |
c7ee0c |
|
|
Pierre-Yves Chibon |
f5cf0f |
def test_search_user_email(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns a user for a given email address
|
|
Clement Verna |
d07ee8 |
"""
|
|
Pierre-Yves Chibon |
f5cf0f |
|
|
Pierre-Yves Chibon |
f5cf0f |
# Retrieve user by email
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.search_user(self.session, email='foo@foo.com')
|
|
Pierre-Yves Chibon |
f5cf0f |
self.assertEqual(None, item)
|
|
Pierre-Yves Chibon |
f5cf0f |
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.search_user(self.session, email='foo@bar.com')
|
|
Pierre-Yves Chibon |
f5cf0f |
self.assertEqual('foo', item.user)
|
|
Pierre-Yves Chibon |
f5cf0f |
self.assertEqual('foo', item.username)
|
|
Pierre-Yves Chibon |
f5cf0f |
self.assertEqual([], item.groups)
|
|
Pierre-Yves Chibon |
f5cf0f |
self.assertEqual(
|
|
Pierre-Yves Chibon |
f5cf0f |
['foo@bar.com'], [email.email for email in item.emails])
|
|
Pierre-Yves Chibon |
f5cf0f |
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.search_user(self.session, email='foo@pingou.com')
|
|
Pierre-Yves Chibon |
f5cf0f |
self.assertEqual('pingou', item.user)
|
|
Pierre-Yves Chibon |
f5cf0f |
self.assertEqual(
|
|
Pierre-Yves Chibon |
4661b9 |
sorted(['bar@pingou.com', 'foo@pingou.com']),
|
|
Pierre-Yves Chibon |
4661b9 |
sorted([email.email for email in item.emails]))
|
|
Pierre-Yves Chibon |
f5cf0f |
|
|
Pierre-Yves Chibon |
fe688c |
def test_search_user_token(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns a user for a given token
|
|
Clement Verna |
d07ee8 |
"""
|
|
Pierre-Yves Chibon |
fe688c |
|
|
Pierre-Yves Chibon |
fe688c |
# Retrieve user by token
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.search_user(self.session, token='aaa')
|
|
Pierre-Yves Chibon |
fe688c |
self.assertEqual(None, item)
|
|
Pierre-Yves Chibon |
fe688c |
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.User(
|
|
Pierre-Yves Chibon |
fe688c |
user='pingou2',
|
|
Pierre-Yves Chibon |
fe688c |
fullname='PY C',
|
|
Pierre-Yves Chibon |
fe688c |
token='aaabbb',
|
|
Pierre-Yves Chibon |
0e3e63 |
default_email='bar@pingou.com',
|
|
Pierre-Yves Chibon |
fe688c |
)
|
|
Pierre-Yves Chibon |
fe688c |
self.session.add(item)
|
|
Pierre-Yves Chibon |
fe688c |
self.session.commit()
|
|
Pierre-Yves Chibon |
fe688c |
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.search_user(self.session, token='aaabbb')
|
|
Pierre-Yves Chibon |
fe688c |
self.assertEqual('pingou2', item.user)
|
|
Pierre-Yves Chibon |
fe688c |
self.assertEqual('PY C', item.fullname)
|
|
Pierre-Yves Chibon |
fe688c |
|
|
Pierre-Yves Chibon |
04a157 |
def test_search_user_pattern(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns a user for a given pattern
|
|
Clement Verna |
d07ee8 |
"""
|
|
Pierre-Yves Chibon |
04a157 |
|
|
Pierre-Yves Chibon |
04a157 |
# Retrieve user by pattern
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.search_user(self.session, pattern='a*')
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual([], item)
|
|
Pierre-Yves Chibon |
04a157 |
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.User(
|
|
Pierre-Yves Chibon |
04a157 |
user='pingou2',
|
|
Pierre-Yves Chibon |
04a157 |
fullname='PY C',
|
|
Pierre-Yves Chibon |
04a157 |
token='aaabbb',
|
|
Pierre-Yves Chibon |
0e3e63 |
default_email='bar@pingou.com',
|
|
Pierre-Yves Chibon |
04a157 |
)
|
|
Pierre-Yves Chibon |
04a157 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
04a157 |
self.session.commit()
|
|
Pierre-Yves Chibon |
04a157 |
|
|
Pierre-Yves Chibon |
fe5017 |
items = pagure.lib.search_user(self.session, pattern='p*')
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual(2, len(items))
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual(1, items[0].id)
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual('pingou', items[0].user)
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual('pingou', items[0].username)
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual([], items[0].groups)
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
324de6 |
sorted(['bar@pingou.com', 'foo@pingou.com']),
|
|
Pierre-Yves Chibon |
324de6 |
sorted([email.email for email in items[0].emails]))
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual(3, items[1].id)
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual('pingou2', items[1].user)
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual('pingou2', items[1].username)
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual([], items[1].groups)
|
|
Pierre-Yves Chibon |
04a157 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
04a157 |
[], [email.email for email in items[1].emails])
|
|
Pierre-Yves Chibon |
04a157 |
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
class PagureLibtests_search_projects(tests.Modeltests):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the pagure.lib search_projects() method
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def setUp(self):
|
|
Clement Verna |
d07ee8 |
super(PagureLibtests_search_projects, self).setUp()
|
|
Clement Verna |
d07ee8 |
tests.create_projects(self.session)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_all(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns all the projects for the given session
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 3)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(projects[0].id, 1)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(projects[1].id, 2)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_username(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns all the projects for the given username
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, username='foo')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 0)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, username='pingou')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 3)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(projects[0].id, 1)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(projects[1].id, 2)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_start(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns all the projects for the given start
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, start=1)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 2)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(projects[0].id, 2)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_limit(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns all the projects for the given limit
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, limit=1)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 1)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(projects[0].id, 1)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_count(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns the count of the projects
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, count=True)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(projects, 3)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_commit_access(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns the project of user with only commit access
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
# Also check if the project shows up if a user doesn't
|
|
Clement Verna |
d07ee8 |
# have admin access in the project
|
|
Clement Verna |
d07ee8 |
# Check with commit access first
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Clement Verna |
d07ee8 |
msg = pagure.lib.add_user_to_project(
|
|
Clement Verna |
d07ee8 |
self.session,
|
|
Clement Verna |
d07ee8 |
project=project,
|
|
Clement Verna |
d07ee8 |
new_user='foo',
|
|
Clement Verna |
d07ee8 |
user='pingou',
|
|
Clement Verna |
d07ee8 |
access='commit'
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
self.assertEqual(msg, 'User added')
|
|
Clement Verna |
d07ee8 |
self.session.commit()
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, username='foo')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 1)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_ticket_access(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method does not returns the project of user with only ticket access
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
# Now check with only ticket access
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Clement Verna |
d07ee8 |
msg = pagure.lib.add_user_to_project(
|
|
Clement Verna |
d07ee8 |
self.session,
|
|
Clement Verna |
d07ee8 |
project=project,
|
|
Clement Verna |
d07ee8 |
new_user='foo',
|
|
Clement Verna |
d07ee8 |
user='pingou',
|
|
Clement Verna |
d07ee8 |
access='ticket'
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(msg, 'User added')
|
|
Clement Verna |
d07ee8 |
self.session.commit()
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, username='foo')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 0)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_project_forked(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the search_project for forked projects in pagure.lib.
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
# Create two forked repo
|
|
Clement Verna |
d07ee8 |
item = pagure.lib.model.Project(
|
|
Clement Verna |
d07ee8 |
user_id=2, # foo
|
|
Clement Verna |
d07ee8 |
name='test',
|
|
Clement Verna |
d07ee8 |
description='test project #1',
|
|
Clement Verna |
d07ee8 |
is_fork=True,
|
|
Clement Verna |
d07ee8 |
parent_id=1,
|
|
Clement Verna |
d07ee8 |
hook_token='aaabbbttt',
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
self.session.add(item)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
item = pagure.lib.model.Project(
|
|
Clement Verna |
d07ee8 |
user_id=2, # foo
|
|
Clement Verna |
d07ee8 |
name='test2',
|
|
Clement Verna |
d07ee8 |
description='test project #2',
|
|
Clement Verna |
d07ee8 |
is_fork=True,
|
|
Clement Verna |
d07ee8 |
parent_id=2,
|
|
Clement Verna |
d07ee8 |
hook_token='aaabbbuuu',
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
self.session.add(item)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
# Since we have two forks, let's search them
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, fork=True)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 2)
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session, fork=False)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 3)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_private(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method for private projects
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
item = pagure.lib.model.Project(
|
|
Clement Verna |
d07ee8 |
user_id=1, # pingou
|
|
Clement Verna |
d07ee8 |
name='private_test',
|
|
Clement Verna |
d07ee8 |
description='Private test project #1',
|
|
Clement Verna |
d07ee8 |
hook_token='aaabbbcccpp',
|
|
Pierre-Yves Chibon |
4b2981 |
private=True,
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
self.session.add(item)
|
|
Clement Verna |
d07ee8 |
self.session.commit()
|
|
Clement Verna |
d07ee8 |
|
|
Pierre-Yves Chibon |
4b2981 |
# non authenticated
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(self.session)
|
|
Pierre-Yves Chibon |
4b2981 |
self.assertEqual(len(projects), 3)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(
|
|
Clement Verna |
d07ee8 |
[p.path for p in projects],
|
|
Pierre-Yves Chibon |
4b2981 |
['test.git', 'test2.git',
|
|
Clement Verna |
d07ee8 |
'somenamespace/test3.git']
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
|
|
Pierre-Yves Chibon |
4b2981 |
# non authenticated
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(
|
|
Clement Verna |
d07ee8 |
self.session, username='pingou')
|
|
Pierre-Yves Chibon |
4b2981 |
self.assertEqual(len(projects), 3)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(
|
|
Clement Verna |
d07ee8 |
[p.path for p in projects],
|
|
Pierre-Yves Chibon |
4b2981 |
['test.git', 'test2.git',
|
|
Clement Verna |
d07ee8 |
'somenamespace/test3.git']
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
|
|
Pierre-Yves Chibon |
4b2981 |
# authenticated as pingou
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(
|
|
Clement Verna |
d07ee8 |
self.session, username='pingou', private='pingou')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 4)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(
|
|
Clement Verna |
d07ee8 |
[p.path for p in projects],
|
|
Clement Verna |
d07ee8 |
['private_test.git', 'test.git', 'test2.git',
|
|
Clement Verna |
d07ee8 |
'somenamespace/test3.git']
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
|
|
Pierre-Yves Chibon |
4b2981 |
# authenticated as foo
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(
|
|
Clement Verna |
d07ee8 |
self.session, username='pingou', private='foo')
|
|
Pierre-Yves Chibon |
4b2981 |
self.assertEqual(len(projects), 3)
|
|
Pierre-Yves Chibon |
4b2981 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
4b2981 |
[p.path for p in projects],
|
|
Pierre-Yves Chibon |
4b2981 |
['test.git', 'test2.git',
|
|
Pierre-Yves Chibon |
4b2981 |
'somenamespace/test3.git']
|
|
Pierre-Yves Chibon |
4b2981 |
)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_tags(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns all the projects for the given tags
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
# Add tags to the project
|
|
Clement Verna |
d07ee8 |
project = pagure.lib._get_project(self.session, 'test')
|
|
Clement Verna |
d07ee8 |
tag = pagure.lib.model.Tag(
|
|
Clement Verna |
d07ee8 |
tag='fedora'
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
self.session.add(tag)
|
|
Clement Verna |
d07ee8 |
self.session.commit()
|
|
Clement Verna |
d07ee8 |
tp = pagure.lib.model.TagProject(
|
|
Clement Verna |
d07ee8 |
project_id=project.id,
|
|
Clement Verna |
d07ee8 |
tag='fedora'
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
self.session.add(tp)
|
|
Clement Verna |
d07ee8 |
self.session.commit()
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(
|
|
Clement Verna |
d07ee8 |
self.session, tags='fedora')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 1)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(projects[0].path, 'test.git')
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_pattern(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns all the projects for the given pattern
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(
|
|
Clement Verna |
d07ee8 |
self.session, pattern='test*')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 3)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(
|
|
Clement Verna |
d07ee8 |
[p.path for p in projects],
|
|
Clement Verna |
d07ee8 |
['test.git', 'test2.git', 'somenamespace/test3.git']
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
def test_search_projects_sort(self):
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
Test the method returns all the projects sorted by lastest and oldest
|
|
Clement Verna |
d07ee8 |
"""
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(
|
|
Clement Verna |
d07ee8 |
self.session, pattern='*', sort='latest')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 3)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(
|
|
Clement Verna |
d07ee8 |
[p.path for p in projects],
|
|
Clement Verna |
d07ee8 |
['somenamespace/test3.git', 'test2.git', 'test.git']
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
projects = pagure.lib.search_projects(
|
|
Clement Verna |
d07ee8 |
self.session, pattern='*', sort='oldest')
|
|
Clement Verna |
d07ee8 |
self.assertEqual(len(projects), 3)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(
|
|
Clement Verna |
d07ee8 |
[p.path for p in projects],
|
|
Clement Verna |
d07ee8 |
['test.git', 'test2.git', 'somenamespace/test3.git']
|
|
Clement Verna |
d07ee8 |
)
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
|
|
Clement Verna |
d07ee8 |
class PagureLibtests(tests.Modeltests):
|
|
Clement Verna |
d07ee8 |
""" Tests for pagure.lib """
|
|
Clement Verna |
d07ee8 |
|
|
Pierre-Yves Chibon |
f21734 |
maxDiff = None
|
|
Pierre-Yves Chibon |
f21734 |
|
|
Clement Verna |
d07ee8 |
def test_get_next_id(self):
|
|
Clement Verna |
d07ee8 |
""" Test the get_next_id function of pagure.lib. """
|
|
Clement Verna |
d07ee8 |
tests.create_projects(self.session)
|
|
Clement Verna |
d07ee8 |
self.assertEqual(1, pagure.lib.get_next_id(self.session, 1))
|
|
Clement Verna |
d07ee8 |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
a42f77 |
def test_new_issue(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the new_issue of pagure.lib. """
|
|
Pierre-Yves Chibon |
a42f77 |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
a42f77 |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
a42f77 |
|
|
Pierre-Yves Chibon |
a42f77 |
tests.create_projects(self.session)
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
# Set some priorities to the project
|
|
Pierre-Yves Chibon |
a3901b |
repo.priorities = {'1': 'High', '2': 'Normal'}
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a42f77 |
|
|
Pierre-Yves Chibon |
a42f77 |
# Before
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo)
|
|
Pierre-Yves Chibon |
a42f77 |
self.assertEqual(len(issues), 0)
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets, 0)
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets_public, 0)
|
|
Pierre-Yves Chibon |
a42f77 |
|
|
Pierre-Yves Chibon |
91556a |
# See where it fails
|
|
Pierre-Yves Chibon |
91556a |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.new_issue,
|
|
Pierre-Yves Chibon |
91556a |
session=self.session,
|
|
Pierre-Yves Chibon |
91556a |
repo=repo,
|
|
Pierre-Yves Chibon |
91556a |
title='Test issue',
|
|
Pierre-Yves Chibon |
91556a |
content='We should work on this',
|
|
Pierre-Yves Chibon |
91556a |
user='blah',
|
|
Pierre-Yves Chibon |
91556a |
ticketfolder=None
|
|
Pierre-Yves Chibon |
91556a |
)
|
|
Pierre-Yves Chibon |
91556a |
|
|
Pierre-Yves Chibon |
a3901b |
# Fails since we're trying to give a non-existant priority
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.new_issue,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
repo=repo,
|
|
Pierre-Yves Chibon |
a3901b |
title='Test issue',
|
|
Pierre-Yves Chibon |
a3901b |
content='We should work on this',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
a3901b |
priority=0,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
71feec |
# Add an extra user to project `foo`
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.add_user_to_project(
|
|
Pierre-Yves Chibon |
71feec |
session=self.session,
|
|
Pierre-Yves Chibon |
71feec |
project=repo,
|
|
Pierre-Yves Chibon |
a5a9ad |
new_user='foo',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou'
|
|
Pierre-Yves Chibon |
71feec |
)
|
|
Pierre-Yves Chibon |
71feec |
self.session.commit()
|
|
Pierre-Yves Chibon |
71feec |
self.assertEqual(msg, 'User added')
|
|
Pierre-Yves Chibon |
71feec |
|
|
Pierre-Yves Chibon |
c30680 |
# Try adding again this extra user to project `foo`
|
|
Pierre-Yves Chibon |
c30680 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
c30680 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
c30680 |
pagure.lib.add_user_to_project,
|
|
Pierre-Yves Chibon |
c30680 |
session=self.session,
|
|
Pierre-Yves Chibon |
c30680 |
project=repo,
|
|
Pierre-Yves Chibon |
c30680 |
new_user='foo',
|
|
Pierre-Yves Chibon |
c30680 |
user='pingou'
|
|
Pierre-Yves Chibon |
c30680 |
)
|
|
Pierre-Yves Chibon |
c30680 |
self.session.commit()
|
|
Pierre-Yves Chibon |
c30680 |
self.assertEqual(msg, 'User added')
|
|
Pierre-Yves Chibon |
c30680 |
|
|
Pierre-Yves Chibon |
91556a |
# Create issues to play with
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
a42f77 |
session=self.session,
|
|
Pierre-Yves Chibon |
a42f77 |
repo=repo,
|
|
Pierre-Yves Chibon |
a42f77 |
title='Test issue',
|
|
Pierre-Yves Chibon |
a42f77 |
content='We should work on this',
|
|
Pierre-Yves Chibon |
a42f77 |
user='pingou',
|
|
Pierre-Yves Chibon |
a42f77 |
ticketfolder=None
|
|
Pierre-Yves Chibon |
a42f77 |
)
|
|
Pierre-Yves Chibon |
91556a |
self.session.commit()
|
|
Pierre-Yves Chibon |
11d78c |
self.assertEqual(msg.title, 'Test issue')
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets, 1)
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets_public, 1)
|
|
Pierre-Yves Chibon |
91556a |
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
91556a |
session=self.session,
|
|
Pierre-Yves Chibon |
91556a |
repo=repo,
|
|
Pierre-Yves Chibon |
7e6046 |
title='Test issue #2',
|
|
Pierre-Yves Chibon |
7e6046 |
content='We should work on this for the second time',
|
|
Pierre-Yves Chibon |
91556a |
user='foo',
|
|
Pierre-Yves Chibon |
7812b6 |
status='Open',
|
|
Pierre-Yves Chibon |
91556a |
ticketfolder=None
|
|
Pierre-Yves Chibon |
91556a |
)
|
|
Pierre-Yves Chibon |
91556a |
self.session.commit()
|
|
Pierre-Yves Chibon |
11d78c |
self.assertEqual(msg.title, 'Test issue #2')
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
a42f77 |
|
|
Pierre-Yves Chibon |
a42f77 |
# After
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo)
|
|
Pierre-Yves Chibon |
91556a |
self.assertEqual(len(issues), 2)
|
|
Pierre-Yves Chibon |
a42f77 |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
a5099b |
def test_edit_issue(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the edit_issue of pagure.lib. """
|
|
Pierre-Yves Chibon |
a5099b |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
a5099b |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
a5099b |
|
|
Pierre-Yves Chibon |
a5099b |
self.test_new_issue()
|
|
Pierre-Yves Chibon |
29d753 |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
a5099b |
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
29d753 |
|
|
Pierre-Yves Chibon |
a5099b |
# Edit the issue
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
a5099b |
session=self.session,
|
|
Pierre-Yves Chibon |
a5099b |
issue=issue,
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
a18547 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
7e6046 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msg, None)
|
|
Pierre-Yves Chibon |
7e6046 |
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
7e6046 |
session=self.session,
|
|
Pierre-Yves Chibon |
7e6046 |
issue=issue,
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
7e6046 |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
7e6046 |
title='Test issue #2',
|
|
Pierre-Yves Chibon |
7e6046 |
content='We should work on this for the second time',
|
|
Pierre-Yves Chibon |
7e6046 |
status='Open',
|
|
Pierre-Yves Chibon |
7e6046 |
)
|
|
Pierre-Yves Chibon |
7e6046 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msg, None)
|
|
Pierre-Yves Chibon |
7e6046 |
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
7e6046 |
session=self.session,
|
|
Pierre-Yves Chibon |
7e6046 |
issue=issue,
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
a5099b |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
7e6046 |
title='Foo issue #2',
|
|
Pierre-Yves Chibon |
7e6046 |
content='We should work on this period',
|
|
Pierre-Yves Chibon |
fad6c1 |
status='Closed',
|
|
Pierre-Yves Chibon |
fad6c1 |
close_status='Invalid',
|
|
Pierre-Yves Chibon |
29d753 |
private=True,
|
|
Pierre-Yves Chibon |
7a762d |
)
|
|
Pierre-Yves Chibon |
a5099b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a18547 |
msg,
|
|
Pierre-Yves Chibon |
a18547 |
[
|
|
Pierre-Yves Chibon |
5b8052 |
'Issue status updated to: Closed (was: Open)',
|
|
Pierre-Yves Chibon |
a18547 |
'Issue close_status updated to: Invalid',
|
|
Pierre-Yves Chibon |
a18547 |
'Issue private status set to: True'
|
|
Pierre-Yves Chibon |
a18547 |
]
|
|
Pierre-Yves Chibon |
a18547 |
)
|
|
Pierre-Yves Chibon |
a5099b |
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
issue=issue,
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
a3901b |
title='Foo issue #2',
|
|
Pierre-Yves Chibon |
a3901b |
content='Fixed!',
|
|
Pierre-Yves Chibon |
a3901b |
status='Closed',
|
|
Pierre-Yves Chibon |
a3901b |
close_status='Fixed',
|
|
Pierre-Yves Chibon |
a3901b |
private=False,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
msg,
|
|
Pierre-Yves Chibon |
a3901b |
[
|
|
Pierre-Yves Chibon |
a3901b |
'Issue close_status updated to: Fixed (was: Invalid)',
|
|
Pierre-Yves Chibon |
a3901b |
'Issue private status set to: False (was: True)'
|
|
Pierre-Yves Chibon |
a3901b |
]
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(repo.open_tickets, 1)
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(repo.open_tickets_public, 1)
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(repo.issues[1].status, 'Closed')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(repo.issues[1].close_status, 'Fixed')
|
|
Pierre-Yves Chibon |
d5262a |
|
|
Pierre-Yves Chibon |
d5262a |
# Edit the status: re-open the ticket
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
d5262a |
session=self.session,
|
|
Pierre-Yves Chibon |
d5262a |
issue=issue,
|
|
Pierre-Yves Chibon |
d5262a |
user='pingou',
|
|
Pierre-Yves Chibon |
d5262a |
status='Open',
|
|
Pierre-Yves Chibon |
d5262a |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
d5262a |
private=True,
|
|
Pierre-Yves Chibon |
d5262a |
)
|
|
Pierre-Yves Chibon |
d5262a |
self.session.commit()
|
|
Pierre-Yves Chibon |
5b8052 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
msg,
|
|
Pierre-Yves Chibon |
a3901b |
[
|
|
Pierre-Yves Chibon |
a3901b |
'Issue status updated to: Open (was: Closed)',
|
|
Pierre-Yves Chibon |
a3901b |
'Issue private status set to: True'
|
|
Pierre-Yves Chibon |
a3901b |
]
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
d5262a |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
d5262a |
for issue in repo.issues:
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(issue.status, 'Open')
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(issue.close_status, None)
|
|
Pierre-Yves Chibon |
d5262a |
# 2 open but one of them is private
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(repo.open_tickets_public, 1)
|
|
Pierre-Yves Chibon |
d5262a |
|
|
Pierre-Yves Chibon |
d5262a |
# Edit the status: re-close the ticket
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
d5262a |
session=self.session,
|
|
Pierre-Yves Chibon |
d5262a |
issue=issue,
|
|
Pierre-Yves Chibon |
d5262a |
user='pingou',
|
|
Pierre-Yves Chibon |
d5262a |
status='Closed',
|
|
Pierre-Yves Chibon |
d5262a |
close_status='Invalid',
|
|
Pierre-Yves Chibon |
d5262a |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
d5262a |
private=True,
|
|
Pierre-Yves Chibon |
d5262a |
)
|
|
Pierre-Yves Chibon |
d5262a |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a18547 |
msg,
|
|
Pierre-Yves Chibon |
a18547 |
[
|
|
Pierre-Yves Chibon |
5b8052 |
'Issue status updated to: Closed (was: Open)',
|
|
Pierre-Yves Chibon |
a18547 |
'Issue close_status updated to: Invalid'
|
|
Pierre-Yves Chibon |
a18547 |
]
|
|
Pierre-Yves Chibon |
a18547 |
)
|
|
Pierre-Yves Chibon |
d5262a |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets, 1)
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets_public, 1)
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(repo.issues[1].status, 'Closed')
|
|
Pierre-Yves Chibon |
d5262a |
self.assertEqual(repo.issues[1].close_status, 'Invalid')
|
|
Pierre-Yves Chibon |
29d753 |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
c965ac |
def test_edit_issue_close_status(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
c965ac |
""" Test the edit_issue of pagure.lib. """
|
|
Pierre-Yves Chibon |
c965ac |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
c965ac |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
self.test_new_issue()
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
c965ac |
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(issue.status, 'Open')
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(issue.close_status, None)
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
# Edit the issue, providing just a close_status should also close
|
|
Pierre-Yves Chibon |
c965ac |
# the ticket
|
|
Pierre-Yves Chibon |
c965ac |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
c965ac |
session=self.session,
|
|
Pierre-Yves Chibon |
c965ac |
issue=issue,
|
|
Pierre-Yves Chibon |
c965ac |
user='pingou',
|
|
Pierre-Yves Chibon |
c965ac |
close_status='Fixed',
|
|
Pierre-Yves Chibon |
c965ac |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
c965ac |
self.session.commit()
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(msg, ['Issue close_status updated to: Fixed'])
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(issue.status, 'Closed')
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(issue.close_status, 'Fixed')
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(repo.open_tickets, 1)
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(repo.open_tickets_public, 1)
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
# Edit the issue, editing the status to open, should reset the
|
|
Pierre-Yves Chibon |
c965ac |
# close_status
|
|
Pierre-Yves Chibon |
c965ac |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
c965ac |
session=self.session,
|
|
Pierre-Yves Chibon |
c965ac |
issue=issue,
|
|
Pierre-Yves Chibon |
c965ac |
user='pingou',
|
|
Pierre-Yves Chibon |
c965ac |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
c965ac |
status='Open',
|
|
Pierre-Yves Chibon |
c965ac |
)
|
|
Pierre-Yves Chibon |
c965ac |
self.session.commit()
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(
|
|
Pierre-Yves Chibon |
c965ac |
msg, ['Issue status updated to: Open (was: Closed)'])
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(issue.status, 'Open')
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(issue.close_status, None)
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
c965ac |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
c965ac |
|
|
Pierre-Yves Chibon |
c965ac |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
c965ac |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
94274b |
def test_edit_issue_priority(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
94274b |
""" Test the edit_issue of pagure.lib when changing the priority.
|
|
Pierre-Yves Chibon |
94274b |
"""
|
|
Pierre-Yves Chibon |
94274b |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
94274b |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
94274b |
|
|
Pierre-Yves Chibon |
94274b |
self.test_new_issue()
|
|
Pierre-Yves Chibon |
94274b |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
94274b |
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
94274b |
|
|
Pierre-Yves Chibon |
94274b |
# Set some priorities to the repo
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
94274b |
repo.priorities = {'1': 'High', '2': 'Normal'}
|
|
Pierre-Yves Chibon |
94274b |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
94274b |
self.session.commit()
|
|
Pierre-Yves Chibon |
94274b |
|
|
Pierre-Yves Chibon |
94274b |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
94274b |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
94274b |
|
|
Pierre-Yves Chibon |
94274b |
# Edit the issue -- Wrong priority value: No changes
|
|
Pierre-Yves Chibon |
94274b |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
94274b |
session=self.session,
|
|
Pierre-Yves Chibon |
94274b |
issue=issue,
|
|
Pierre-Yves Chibon |
94274b |
user='pingou',
|
|
Pierre-Yves Chibon |
94274b |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
94274b |
priority=3,
|
|
Pierre-Yves Chibon |
94274b |
)
|
|
Pierre-Yves Chibon |
94274b |
self.session.commit()
|
|
Pierre-Yves Chibon |
94274b |
self.assertEqual(msg, None)
|
|
Pierre-Yves Chibon |
94274b |
|
|
Pierre-Yves Chibon |
94274b |
# Edit the issue -- Good priority
|
|
Pierre-Yves Chibon |
94274b |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
94274b |
session=self.session,
|
|
Pierre-Yves Chibon |
94274b |
issue=issue,
|
|
Pierre-Yves Chibon |
94274b |
user='pingou',
|
|
Pierre-Yves Chibon |
94274b |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
94274b |
priority=2,
|
|
Pierre-Yves Chibon |
94274b |
)
|
|
Pierre-Yves Chibon |
94274b |
self.session.commit()
|
|
Pierre-Yves Chibon |
94274b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
94274b |
msg,
|
|
Pierre-Yves Chibon |
94274b |
[
|
|
Pierre-Yves Chibon |
94274b |
'Issue priority set to: Normal'
|
|
Pierre-Yves Chibon |
94274b |
]
|
|
Pierre-Yves Chibon |
94274b |
)
|
|
Pierre-Yves Chibon |
94274b |
|
|
Pierre-Yves Chibon |
94274b |
# Edit the issue -- Update priority
|
|
Pierre-Yves Chibon |
94274b |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
94274b |
session=self.session,
|
|
Pierre-Yves Chibon |
94274b |
issue=issue,
|
|
Pierre-Yves Chibon |
94274b |
user='pingou',
|
|
Pierre-Yves Chibon |
94274b |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
94274b |
priority=1,
|
|
Pierre-Yves Chibon |
94274b |
)
|
|
Pierre-Yves Chibon |
94274b |
self.session.commit()
|
|
Pierre-Yves Chibon |
94274b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
94274b |
msg,
|
|
Pierre-Yves Chibon |
94274b |
[
|
|
Pierre-Yves Chibon |
94274b |
'Issue priority set to: High (was: Normal)'
|
|
Pierre-Yves Chibon |
94274b |
]
|
|
Pierre-Yves Chibon |
94274b |
)
|
|
Pierre-Yves Chibon |
94274b |
|
|
Pierre-Yves Chibon |
94274b |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
94274b |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
484b1f |
def test_edit_issue_depending(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
484b1f |
""" Test the edit_issue of pagure.lib when the issue depends on
|
|
Pierre-Yves Chibon |
484b1f |
another.
|
|
Pierre-Yves Chibon |
484b1f |
"""
|
|
Pierre-Yves Chibon |
484b1f |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
484b1f |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
# Create 3 issues
|
|
Pierre-Yves Chibon |
484b1f |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
484b1f |
session=self.session,
|
|
Pierre-Yves Chibon |
484b1f |
repo=repo,
|
|
Pierre-Yves Chibon |
484b1f |
title='Test issue #1',
|
|
Pierre-Yves Chibon |
484b1f |
content='We should work on this for the second time',
|
|
Pierre-Yves Chibon |
484b1f |
user='foo',
|
|
Pierre-Yves Chibon |
484b1f |
status='Open',
|
|
Pierre-Yves Chibon |
484b1f |
ticketfolder=None
|
|
Pierre-Yves Chibon |
484b1f |
)
|
|
Pierre-Yves Chibon |
484b1f |
self.session.commit()
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(msg.title, 'Test issue #1')
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
484b1f |
session=self.session,
|
|
Pierre-Yves Chibon |
484b1f |
repo=repo,
|
|
Pierre-Yves Chibon |
484b1f |
title='Test issue #2',
|
|
Pierre-Yves Chibon |
484b1f |
content='We should work on this for the second time',
|
|
Pierre-Yves Chibon |
484b1f |
user='foo',
|
|
Pierre-Yves Chibon |
484b1f |
status='Open',
|
|
Pierre-Yves Chibon |
484b1f |
ticketfolder=None
|
|
Pierre-Yves Chibon |
484b1f |
)
|
|
Pierre-Yves Chibon |
484b1f |
self.session.commit()
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(msg.title, 'Test issue #2')
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
484b1f |
session=self.session,
|
|
Pierre-Yves Chibon |
484b1f |
repo=repo,
|
|
Pierre-Yves Chibon |
484b1f |
title='Test issue #3',
|
|
Pierre-Yves Chibon |
484b1f |
content='We should work on this for the second time',
|
|
Pierre-Yves Chibon |
484b1f |
user='foo',
|
|
Pierre-Yves Chibon |
484b1f |
status='Open',
|
|
Pierre-Yves Chibon |
484b1f |
ticketfolder=None
|
|
Pierre-Yves Chibon |
484b1f |
)
|
|
Pierre-Yves Chibon |
484b1f |
self.session.commit()
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(msg.title, 'Test issue #3')
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(repo.open_tickets, 3)
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(repo.open_tickets_public, 3)
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
# Make issue #2 blocking on issue #1
|
|
Pierre-Yves Chibon |
484b1f |
msgs = pagure.lib.update_blocked_issue(
|
|
Pierre-Yves Chibon |
484b1f |
self.session,
|
|
Pierre-Yves Chibon |
484b1f |
repo,
|
|
Pierre-Yves Chibon |
484b1f |
issue,
|
|
Pierre-Yves Chibon |
484b1f |
blocks=['1'],
|
|
Pierre-Yves Chibon |
484b1f |
username='pingou',
|
|
Pierre-Yves Chibon |
484b1f |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
484b1f |
)
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(msgs, ['Issue marked as blocking: #1'])
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
# Make issue #2 depend on issue #3
|
|
Pierre-Yves Chibon |
484b1f |
msgs = pagure.lib.update_dependency_issue(
|
|
Pierre-Yves Chibon |
484b1f |
self.session,
|
|
Pierre-Yves Chibon |
484b1f |
repo,
|
|
Pierre-Yves Chibon |
484b1f |
issue,
|
|
Pierre-Yves Chibon |
484b1f |
depends=['3'],
|
|
Pierre-Yves Chibon |
484b1f |
username='pingou',
|
|
Pierre-Yves Chibon |
484b1f |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
484b1f |
)
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(msgs, ['Issue marked as depending on: #3'])
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
# Edit the issue #3
|
|
Pierre-Yves Chibon |
484b1f |
issue = pagure.lib.search_issues(self.session, repo, issueid=3)
|
|
Pierre-Yves Chibon |
484b1f |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
484b1f |
session=self.session,
|
|
Pierre-Yves Chibon |
484b1f |
issue=issue,
|
|
Pierre-Yves Chibon |
484b1f |
user='pingou',
|
|
Pierre-Yves Chibon |
484b1f |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
484b1f |
self.session.commit()
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(msg, None)
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
msg = pagure.lib.edit_issue(
|
|
Pierre-Yves Chibon |
484b1f |
session=self.session,
|
|
Pierre-Yves Chibon |
484b1f |
issue=issue,
|
|
Pierre-Yves Chibon |
484b1f |
user='pingou',
|
|
Pierre-Yves Chibon |
484b1f |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
484b1f |
title='Foo issue #2',
|
|
Pierre-Yves Chibon |
484b1f |
content='We should work on this period',
|
|
Pierre-Yves Chibon |
484b1f |
status='Closed',
|
|
Pierre-Yves Chibon |
484b1f |
close_status='Invalid',
|
|
Pierre-Yves Chibon |
484b1f |
private=True,
|
|
Pierre-Yves Chibon |
484b1f |
)
|
|
Pierre-Yves Chibon |
484b1f |
self.session.commit()
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(
|
|
Pierre-Yves Chibon |
484b1f |
msg,
|
|
Pierre-Yves Chibon |
484b1f |
[
|
|
Pierre-Yves Chibon |
484b1f |
'Issue status updated to: Closed (was: Open)',
|
|
Pierre-Yves Chibon |
484b1f |
'Issue close_status updated to: Invalid',
|
|
Pierre-Yves Chibon |
484b1f |
'Issue private status set to: True'
|
|
Pierre-Yves Chibon |
484b1f |
]
|
|
Pierre-Yves Chibon |
484b1f |
)
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
484b1f |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
484b1f |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_issue_dependency(self):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the add_issue_dependency of pagure.lib. """
|
|
Pierre-Yves Chibon |
688e74 |
|
|
Pierre-Yves Chibon |
688e74 |
self.test_new_issue()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
fe5017 |
issue_blocked = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
688e74 |
self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
688e74 |
|
|
Pierre-Yves Chibon |
688e74 |
# Before
|
|
Pierre-Yves Chibon |
688e74 |
self.assertEqual(issue.parents, [])
|
|
Pierre-Yves Chibon |
688e74 |
self.assertEqual(issue.children, [])
|
|
Pierre-Yves Chibon |
688e74 |
self.assertEqual(issue_blocked.parents, [])
|
|
Pierre-Yves Chibon |
688e74 |
self.assertEqual(issue_blocked.children, [])
|
|
Pierre-Yves Chibon |
688e74 |
|
|
Pierre-Yves Chibon |
961b99 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.add_issue_dependency,
|
|
Pierre-Yves Chibon |
961b99 |
session=self.session,
|
|
Pierre-Yves Chibon |
961b99 |
issue=issue,
|
|
Pierre-Yves Chibon |
961b99 |
issue_blocked=issue,
|
|
Pierre-Yves Chibon |
961b99 |
user='pingou',
|
|
Pierre-Yves Chibon |
961b99 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
961b99 |
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.add_issue_dependency(
|
|
Pierre-Yves Chibon |
688e74 |
session=self.session,
|
|
Pierre-Yves Chibon |
688e74 |
issue=issue,
|
|
Pierre-Yves Chibon |
688e74 |
issue_blocked=issue_blocked,
|
|
Pierre-Yves Chibon |
688e74 |
user='pingou',
|
|
Pierre-Yves Chibon |
688e74 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
688e74 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msg, 'Issue marked as depending on: #2')
|
|
Pierre-Yves Chibon |
688e74 |
|
|
Pierre-Yves Chibon |
688e74 |
# After
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(len(issue.parents), 0)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(issue.parents, [])
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(len(issue.children), 1)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(issue.children[0].id, 2)
|
|
Pierre-Yves Chibon |
7edec8 |
self.assertEqual(issue.depending_text, [])
|
|
Pierre-Yves Chibon |
7edec8 |
self.assertEqual(issue.blocking_text, [2])
|
|
Pierre-Yves Chibon |
688e74 |
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(len(issue_blocked.children), 0)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(issue_blocked.children, [])
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(len(issue_blocked.parents), 1)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(issue_blocked.parents[0].id, 1)
|
|
Pierre-Yves Chibon |
7edec8 |
self.assertEqual(issue_blocked.depending_text, [1])
|
|
Pierre-Yves Chibon |
7edec8 |
self.assertEqual(issue_blocked.blocking_text, [])
|
|
Pierre-Yves Chibon |
688e74 |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS')
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_edit_comment(self, mock_redis):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the edit_issue of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
mock_redis.return_value = True
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.test_add_issue_comment()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(mock_redis.publish.call_count, 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Before
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issue.comments), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issue.comments[0].comment, 'Hey look a comment!')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Edit one of the
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.edit_comment(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
parent=issue,
|
|
Pierre-Yves Chibon |
a3901b |
comment=issue.comments[0],
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
updated_comment='Edited comment',
|
|
Pierre-Yves Chibon |
a3901b |
folder=None)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Comment updated')
|
|
Pierre-Yves Chibon |
baaf54 |
self.assertEqual(mock_redis.publish.call_count, 1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# After
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issue.comments), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issue.comments[0].comment, 'Edited comment')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS')
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_edit_comment_private(self, mock_redis):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the edit_issue of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.test_add_issue_comment_private()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(repo.open_tickets, 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(repo.open_tickets_public, 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(mock_redis.publish.call_count, 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Before
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issue.comments), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issue.comments[0].comment, 'Hey look a comment!')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Edit one of the
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.edit_comment(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
parent=issue,
|
|
Pierre-Yves Chibon |
a3901b |
comment=issue.comments[0],
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
updated_comment='Edited comment',
|
|
Pierre-Yves Chibon |
a3901b |
folder=None)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Comment updated')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(mock_redis.publish.call_count, 1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# After
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issue.comments), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issue.comments[0].comment, 'Edited comment')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
de7465 |
@patch('pagure.lib.REDIS')
|
|
Pierre-Yves Chibon |
de7465 |
def test_add_tag_obj(self, mock_redis):
|
|
Pierre-Yves Chibon |
668fbd |
""" Test the add_tag_obj of pagure.lib. """
|
|
Pierre-Yves Chibon |
de7465 |
mock_redis.return_value=True
|
|
Pierre-Yves Chibon |
8393f9 |
|
|
Pierre-Yves Chibon |
8393f9 |
self.test_edit_issue()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
de7465 |
self.assertFalse(issue.private)
|
|
Pierre-Yves Chibon |
de7465 |
self.assertFalse(issue.project.private)
|
|
Pierre-Yves Chibon |
de7465 |
|
|
Pierre-Yves Chibon |
de7465 |
args = mock_redis.publish.call_args_list
|
|
Pierre-Yves Chibon |
baaf54 |
self.assertEqual(len(args), 4)
|
|
Pierre-Yves Chibon |
8393f9 |
|
|
Pierre-Yves Chibon |
8393f9 |
# Add a tag to the issue
|
|
Pierre-Yves Chibon |
668fbd |
msg = pagure.lib.add_tag_obj(
|
|
Pierre-Yves Chibon |
8393f9 |
session=self.session,
|
|
Pierre-Yves Chibon |
668fbd |
obj=issue,
|
|
Pierre-Yves Chibon |
df35d8 |
tags='tag1',
|
|
Pierre-Yves Chibon |
8393f9 |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
8393f9 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msg, 'Issue tagged with: tag1')
|
|
Pierre-Yves Chibon |
8393f9 |
|
|
Pierre-Yves Chibon |
de7465 |
args = mock_redis.publish.call_args_list
|
|
Pierre-Yves Chibon |
baaf54 |
self.assertEqual(len(args), 5)
|
|
Pierre-Yves Chibon |
de7465 |
# Get the arguments of the last call and get the second of these
|
|
Pierre-Yves Chibon |
de7465 |
# arguments (the first one changing for each test run)
|
|
Aurélien Bompard |
f61bb3 |
self.assertJSONEqual(
|
|
Pierre-Yves Chibon |
de7465 |
args[-1:][0][0][1],
|
|
Pierre-Yves Chibon |
de7465 |
'{"added_tags_color": ["DeepSkyBlue"], "added_tags": ["tag1"]}'
|
|
Pierre-Yves Chibon |
de7465 |
)
|
|
Pierre-Yves Chibon |
de7465 |
|
|
Pierre-Yves Chibon |
b4f437 |
# Try a second time
|
|
Pierre-Yves Chibon |
668fbd |
msg = pagure.lib.add_tag_obj(
|
|
Pierre-Yves Chibon |
b4f437 |
session=self.session,
|
|
Pierre-Yves Chibon |
668fbd |
obj=issue,
|
|
Pierre-Yves Chibon |
df35d8 |
tags='tag1',
|
|
Pierre-Yves Chibon |
b4f437 |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
df35d8 |
self.session.commit()
|
|
Pierre-Yves Chibon |
df35d8 |
self.assertEqual(msg, 'Nothing to add')
|
|
Pierre-Yves Chibon |
b4f437 |
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo, tags='tag1')
|
|
Pierre-Yves Chibon |
8393f9 |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
8393f9 |
self.assertEqual(issues[0].id, 1)
|
|
Pierre-Yves Chibon |
8393f9 |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
8393f9 |
self.assertEqual(issues[0].status, 'Open')
|
|
Pierre-Yves Chibon |
8393f9 |
self.assertEqual([tag.tag for tag in issues[0].tags], ['tag1'])
|
|
Pierre-Yves Chibon |
8393f9 |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
5ea1e2 |
def test_remove_tags(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the remove_tags of pagure.lib. """
|
|
Pierre-Yves Chibon |
07093f |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
07093f |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
07093f |
|
|
Pierre-Yves Chibon |
668fbd |
self.test_add_tag_obj()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
07093f |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.remove_tags,
|
|
Pierre-Yves Chibon |
07093f |
session=self.session,
|
|
Pierre-Yves Chibon |
07093f |
project=repo,
|
|
Pierre-Yves Chibon |
86840f |
tags='foo',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
07093f |
|
|
Pierre-Yves Chibon |
fe5017 |
msgs = pagure.lib.remove_tags(
|
|
Pierre-Yves Chibon |
07093f |
session=self.session,
|
|
Pierre-Yves Chibon |
07093f |
project=repo,
|
|
Pierre-Yves Chibon |
86840f |
tags='tag1',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
07093f |
|
|
Pierre-Yves Chibon |
b4c3ae |
self.assertEqual(msgs, ['Tag: tag1 has been deleted'])
|
|
Pierre-Yves Chibon |
07093f |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_remove_tags_obj(self):
|
|
Pierre-Yves Chibon |
668fbd |
""" Test the remove_tags_obj of pagure.lib. """
|
|
Pierre-Yves Chibon |
248fd9 |
|
|
Pierre-Yves Chibon |
668fbd |
self.test_add_tag_obj()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
248fd9 |
|
|
Pierre-Yves Chibon |
668fbd |
msgs = pagure.lib.remove_tags_obj(
|
|
Pierre-Yves Chibon |
248fd9 |
session=self.session,
|
|
Pierre-Yves Chibon |
668fbd |
obj=issue,
|
|
Pierre-Yves Chibon |
248fd9 |
tags='tag1',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msgs, 'Issue **un**tagged with: tag1')
|
|
Pierre-Yves Chibon |
248fd9 |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
4a1b72 |
def test_remove_tags_obj_from_project(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
4a1b72 |
""" Test the remove_tags_obj of pagure.lib from a project. """
|
|
Pierre-Yves Chibon |
4a1b72 |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
4a1b72 |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
4a1b72 |
|
|
Pierre-Yves Chibon |
4a1b72 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
4a1b72 |
|
|
Pierre-Yves Chibon |
4a1b72 |
# Add a tag to the project
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
4a1b72 |
msg = pagure.lib.add_tag_obj(
|
|
Pierre-Yves Chibon |
4a1b72 |
self.session, repo,
|
|
Pierre-Yves Chibon |
4a1b72 |
tags=['pagure', 'test'],
|
|
Pierre-Yves Chibon |
4a1b72 |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
ef1fe1 |
self.assertEqual(msg, 'Project tagged with: pagure, test')
|
|
Pierre-Yves Chibon |
4a1b72 |
self.session.commit()
|
|
Pierre-Yves Chibon |
4a1b72 |
|
|
Pierre-Yves Chibon |
4a1b72 |
# Check the tags
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
4a1b72 |
self.assertEqual(repo.tags_text, ['pagure', 'test'])
|
|
Pierre-Yves Chibon |
4a1b72 |
|
|
Pierre-Yves Chibon |
4719e4 |
# Remove one of the the tag
|
|
Pierre-Yves Chibon |
4a1b72 |
msgs = pagure.lib.remove_tags_obj(
|
|
Pierre-Yves Chibon |
4a1b72 |
session=self.session,
|
|
Pierre-Yves Chibon |
4a1b72 |
obj=repo,
|
|
Pierre-Yves Chibon |
4a1b72 |
tags='test',
|
|
Pierre-Yves Chibon |
4a1b72 |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
ef1fe1 |
self.assertEqual(msgs, 'Project **un**tagged with: test')
|
|
Pierre-Yves Chibon |
4a1b72 |
self.session.commit()
|
|
Pierre-Yves Chibon |
4a1b72 |
|
|
Pierre-Yves Chibon |
4a1b72 |
# Check the tags
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
4a1b72 |
self.assertEqual(repo.tags_text, ['pagure'])
|
|
Pierre-Yves Chibon |
4a1b72 |
|
|
Pierre-Yves Chibon |
4a1b72 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
4a1b72 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
e1fce0 |
def test_edit_issue_tags(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the edit_issue_tags of pagure.lib. """
|
|
Pierre-Yves Chibon |
e1fce0 |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
e1fce0 |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
e1fce0 |
|
|
Pierre-Yves Chibon |
668fbd |
self.test_add_tag_obj()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
e1fce0 |
|
|
Pierre-Yves Chibon |
e1fce0 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.edit_issue_tags,
|
|
Pierre-Yves Chibon |
e1fce0 |
session=self.session,
|
|
Pierre-Yves Chibon |
e1fce0 |
project=repo,
|
|
Pierre-Yves Chibon |
e1fce0 |
old_tag='foo',
|
|
Pierre-Yves Chibon |
a8f682 |
new_tag='bar',
|
|
Pradeep CE (cep) |
dc15c9 |
new_tag_description='lorem ipsum',
|
|
Pierre-Yves Chibon |
a8f682 |
new_tag_color='black',
|
|
Pierre-Yves Chibon |
a8f682 |
user='pingou',
|
|
Pierre-Yves Chibon |
a8f682 |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
a8f682 |
)
|
|
Pierre-Yves Chibon |
a8f682 |
|
|
Pierre-Yves Chibon |
a8f682 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a8f682 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a8f682 |
pagure.lib.edit_issue_tags,
|
|
Pierre-Yves Chibon |
a8f682 |
session=self.session,
|
|
Pierre-Yves Chibon |
a8f682 |
project=repo,
|
|
Pierre-Yves Chibon |
a8f682 |
old_tag=None,
|
|
Pierre-Yves Chibon |
86840f |
new_tag='bar',
|
|
Pradeep CE (cep) |
dc15c9 |
new_tag_description='lorem ipsum',
|
|
Mark Reynolds |
403d8f |
new_tag_color='black',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
86840f |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
86840f |
)
|
|
Pierre-Yves Chibon |
e1fce0 |
|
|
Pierre-Yves Chibon |
fe5017 |
msgs = pagure.lib.edit_issue_tags(
|
|
Pierre-Yves Chibon |
e1fce0 |
session=self.session,
|
|
Pierre-Yves Chibon |
e1fce0 |
project=repo,
|
|
Pierre-Yves Chibon |
e1fce0 |
old_tag='tag1',
|
|
Pierre-Yves Chibon |
86840f |
new_tag='tag2',
|
|
Pradeep CE (cep) |
dc15c9 |
new_tag_description='lorem ipsum',
|
|
Mark Reynolds |
403d8f |
new_tag_color='black',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
86840f |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
86840f |
)
|
|
Pierre-Yves Chibon |
e1fce0 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a8f682 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a8f682 |
msgs,
|
|
Pradeep CE (cep) |
dc15c9 |
['Edited tag: tag1()[DeepSkyBlue] to tag2(lorem ipsum)[black]']
|
|
Pierre-Yves Chibon |
a8f682 |
)
|
|
Pierre-Yves Chibon |
e1fce0 |
|
|
Pierre-Yves Chibon |
a3901b |
# Try editing the tag without changing anything
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.edit_issue_tags,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=repo,
|
|
Pierre-Yves Chibon |
a3901b |
old_tag='tag2',
|
|
Pierre-Yves Chibon |
a3901b |
new_tag='tag2',
|
|
Pierre-Yves Chibon |
a3901b |
new_tag_description='lorem ipsum',
|
|
Pierre-Yves Chibon |
a3901b |
new_tag_color='black',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
78b814 |
# Add a new tag
|
|
Pierre-Yves Chibon |
668fbd |
msg = pagure.lib.add_tag_obj(
|
|
Pierre-Yves Chibon |
78b814 |
session=self.session,
|
|
Pierre-Yves Chibon |
668fbd |
obj=issue,
|
|
Pierre-Yves Chibon |
78b814 |
tags='tag3',
|
|
Pierre-Yves Chibon |
78b814 |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
78b814 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msg, 'Issue tagged with: tag3')
|
|
Pierre-Yves Chibon |
78b814 |
self.assertEqual([tag.tag for tag in issue.tags], ['tag2', 'tag3'])
|
|
Pierre-Yves Chibon |
78b814 |
|
|
Mark Reynolds |
403d8f |
# Attempt to rename an existing tag into another existing one
|
|
Mark Reynolds |
403d8f |
self.assertRaises(
|
|
Mark Reynolds |
403d8f |
pagure.exceptions.PagureException,
|
|
Mark Reynolds |
403d8f |
pagure.lib.edit_issue_tags,
|
|
Pierre-Yves Chibon |
78b814 |
session=self.session,
|
|
Pierre-Yves Chibon |
78b814 |
project=repo,
|
|
Pierre-Yves Chibon |
78b814 |
old_tag='tag2',
|
|
Pierre-Yves Chibon |
78b814 |
new_tag='tag3',
|
|
Pradeep CE (cep) |
dc15c9 |
new_tag_description='lorem ipsum',
|
|
Mark Reynolds |
403d8f |
new_tag_color='red',
|
|
Pierre-Yves Chibon |
78b814 |
user='pingou',
|
|
Pierre-Yves Chibon |
78b814 |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
78b814 |
)
|
|
Pierre-Yves Chibon |
78b814 |
|
|
Mark Reynolds |
403d8f |
# Rename an existing tag
|
|
Mark Reynolds |
403d8f |
msgs = pagure.lib.edit_issue_tags(
|
|
Pierre-Yves Chibon |
e1fce0 |
session=self.session,
|
|
Pierre-Yves Chibon |
e1fce0 |
project=repo,
|
|
Pierre-Yves Chibon |
e1fce0 |
old_tag='tag2',
|
|
Mark Reynolds |
403d8f |
new_tag='tag4',
|
|
Pradeep CE (cep) |
dc15c9 |
new_tag_description='ipsum lorem',
|
|
Mark Reynolds |
403d8f |
new_tag_color='purple',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
86840f |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
86840f |
)
|
|
Mark Reynolds |
403d8f |
self.session.commit()
|
|
Pradeep CE (cep) |
dc15c9 |
self.assertEqual(msgs, ['Edited tag: tag2(lorem ipsum)[black] to tag4(ipsum lorem)[purple]'])
|
|
Pierre-Yves Chibon |
07093f |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
663645 |
def test_search_issues(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the search_issues of pagure.lib. """
|
|
Pierre-Yves Chibon |
663645 |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
663645 |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
663645 |
|
|
Pierre-Yves Chibon |
663645 |
self.test_edit_issue()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
663645 |
|
|
Pierre-Yves Chibon |
663645 |
# All issues
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo)
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(len(issues), 2)
|
|
Pierre-Yves Chibon |
928972 |
self.assertEqual(issues[1].id, 1)
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issues[1].project_id, 1)
|
|
Pierre-Yves Chibon |
928972 |
self.assertEqual(issues[1].status, 'Open')
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issues[1].tags, [])
|
|
Pierre-Yves Chibon |
928972 |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
928972 |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
fad6c1 |
self.assertEqual(issues[0].status, 'Closed')
|
|
Pierre-Yves Chibon |
fad6c1 |
self.assertEqual(issues[0].close_status, 'Invalid')
|
|
Pierre-Yves Chibon |
928972 |
self.assertEqual(issues[0].tags, [])
|
|
Pierre-Yves Chibon |
663645 |
|
|
Pierre-Yves Chibon |
663645 |
# Issues by status
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
fad6c1 |
self.session, repo, status='Closed')
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
fad6c1 |
self.assertEqual(issues[0].status, 'Closed')
|
|
Pierre-Yves Chibon |
fad6c1 |
self.assertEqual(issues[0].close_status, 'Invalid')
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issues[0].tags, [])
|
|
Pierre-Yves Chibon |
663645 |
|
|
Pierre-Yves Chibon |
663645 |
# Issues closed
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
663645 |
self.session, repo, closed=True)
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
fad6c1 |
self.assertEqual(issues[0].status, 'Closed')
|
|
Pierre-Yves Chibon |
fad6c1 |
self.assertEqual(issues[0].close_status, 'Invalid')
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issues[0].tags, [])
|
|
Pierre-Yves Chibon |
663645 |
|
|
Pierre-Yves Chibon |
663645 |
# Issues by tag
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo, tags='foo')
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(len(issues), 0)
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo, tags='!foo')
|
|
Pierre-Yves Chibon |
68021a |
self.assertEqual(len(issues), 2)
|
|
Pierre-Yves Chibon |
663645 |
|
|
Pierre-Yves Chibon |
663645 |
# Issue by id
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issue.title, 'Test issue')
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issue.user.user, 'pingou')
|
|
Pierre-Yves Chibon |
663645 |
self.assertEqual(issue.tags, [])
|
|
Pierre-Yves Chibon |
663645 |
|
|
Pierre-Yves Chibon |
4b6666 |
# Issues by authors
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo, author='foo')
|
|
Pierre-Yves Chibon |
4b6666 |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
4b6666 |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
4b6666 |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
fad6c1 |
self.assertEqual(issues[0].status, 'Closed')
|
|
Pierre-Yves Chibon |
fad6c1 |
self.assertEqual(issues[0].close_status, 'Invalid')
|
|
Pierre-Yves Chibon |
4b6666 |
self.assertEqual(issues[0].tags, [])
|
|
Pierre-Yves Chibon |
4b6666 |
|
|
Pierre-Yves Chibon |
68021a |
# Issues by assignee
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo, assignee='foo')
|
|
Pierre-Yves Chibon |
68021a |
self.assertEqual(len(issues), 0)
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo, assignee='!foo')
|
|
Pierre-Yves Chibon |
68021a |
self.assertEqual(len(issues), 2)
|
|
Pierre-Yves Chibon |
68021a |
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(self.session, repo, private='foo')
|
|
Pierre-Yves Chibon |
68021a |
self.assertEqual(len(issues), 2)
|
|
Pierre-Yves Chibon |
68021a |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_issue_assignee(self):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the add_issue_assignee of pagure.lib. """
|
|
Pierre-Yves Chibon |
a96644 |
|
|
Pierre-Yves Chibon |
a96644 |
self.test_new_issue()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
a96644 |
|
|
Pierre-Yves Chibon |
a96644 |
# Before
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
a96644 |
self.session, repo, assignee='pingou')
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(len(issues), 0)
|
|
Pierre-Yves Chibon |
a96644 |
|
|
Pierre-Yves Chibon |
13b9f7 |
# Test when it fails
|
|
Pierre-Yves Chibon |
13b9f7 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.add_issue_assignee,
|
|
Pierre-Yves Chibon |
13b9f7 |
session=self.session,
|
|
Pierre-Yves Chibon |
13b9f7 |
issue=issue,
|
|
Pierre-Yves Chibon |
13b9f7 |
assignee='foo@foobar.com',
|
|
Pierre-Yves Chibon |
13b9f7 |
user='foo@pingou.com',
|
|
Mark Reynolds |
eabdc8 |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
13b9f7 |
)
|
|
Pierre-Yves Chibon |
13b9f7 |
|
|
Pierre-Yves Chibon |
13b9f7 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.add_issue_assignee,
|
|
Pierre-Yves Chibon |
13b9f7 |
session=self.session,
|
|
Pierre-Yves Chibon |
13b9f7 |
issue=issue,
|
|
Pierre-Yves Chibon |
13b9f7 |
assignee='foo@bar.com',
|
|
Pierre-Yves Chibon |
13b9f7 |
user='foo@foopingou.com',
|
|
Mark Reynolds |
eabdc8 |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
13b9f7 |
)
|
|
Pierre-Yves Chibon |
13b9f7 |
|
|
Pierre-Yves Chibon |
d14691 |
# Set the assignee by its email
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.add_issue_assignee(
|
|
Pierre-Yves Chibon |
d14691 |
session=self.session,
|
|
Pierre-Yves Chibon |
d14691 |
issue=issue,
|
|
Pierre-Yves Chibon |
d14691 |
assignee='foo@bar.com',
|
|
Pierre-Yves Chibon |
13b9f7 |
user='foo@pingou.com',
|
|
Pierre-Yves Chibon |
a18547 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
d14691 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msg, 'Issue assigned to foo@bar.com')
|
|
Pierre-Yves Chibon |
d14691 |
|
|
Pierre-Yves Chibon |
d14691 |
# Change the assignee to someone else by its username
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.add_issue_assignee(
|
|
Pierre-Yves Chibon |
a96644 |
session=self.session,
|
|
Pierre-Yves Chibon |
a96644 |
issue=issue,
|
|
Pierre-Yves Chibon |
a96644 |
assignee='pingou',
|
|
Pierre-Yves Chibon |
a96644 |
user='pingou',
|
|
Pierre-Yves Chibon |
a18547 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
a96644 |
self.session.commit()
|
|
Pierre-Yves Chibon |
5b8052 |
self.assertEqual(msg, 'Issue assigned to pingou (was: foo)')
|
|
Pierre-Yves Chibon |
a96644 |
|
|
Pierre-Yves Chibon |
a96644 |
# After -- Searches by assignee
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
a96644 |
self.session, repo, assignee='pingou')
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].status, 'Open')
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].tags, [])
|
|
Pierre-Yves Chibon |
a96644 |
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
a96644 |
self.session, repo, assignee=True)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].title, 'Test issue #2')
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].status, 'Open')
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].tags, [])
|
|
Pierre-Yves Chibon |
a96644 |
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
a96644 |
self.session, repo, assignee=False)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].id, 1)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].title, 'Test issue')
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].status, 'Open')
|
|
Pierre-Yves Chibon |
a96644 |
self.assertEqual(issues[0].tags, [])
|
|
Pierre-Yves Chibon |
a96644 |
|
|
Pierre-Yves Chibon |
d14691 |
# Reset the assignee to no-one
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.add_issue_assignee(
|
|
Pierre-Yves Chibon |
d14691 |
session=self.session,
|
|
Pierre-Yves Chibon |
d14691 |
issue=issue,
|
|
Pierre-Yves Chibon |
d14691 |
assignee=None,
|
|
Pierre-Yves Chibon |
d14691 |
user='pingou',
|
|
Pierre-Yves Chibon |
a18547 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
d14691 |
self.session.commit()
|
|
Pierre-Yves Chibon |
d14691 |
self.assertEqual(msg, 'Assignee reset')
|
|
Pierre-Yves Chibon |
d14691 |
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
d14691 |
self.session, repo, assignee=False)
|
|
Pierre-Yves Chibon |
d14691 |
self.assertEqual(len(issues), 2)
|
|
Pierre-Yves Chibon |
928972 |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
928972 |
self.assertEqual(issues[1].id, 1)
|
|
Pierre-Yves Chibon |
d14691 |
|
|
Pierre-Yves Chibon |
fe5017 |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
d14691 |
self.session, repo, assignee=True)
|
|
Pierre-Yves Chibon |
d14691 |
self.assertEqual(len(issues), 0)
|
|
Pierre-Yves Chibon |
d14691 |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_issue_comment(self):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the add_issue_comment of pagure.lib. """
|
|
Pierre-Yves Chibon |
e30eee |
|
|
Pierre-Yves Chibon |
e30eee |
self.test_new_issue()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
e30eee |
|
|
Pierre-Yves Chibon |
e30eee |
# Before
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
e30eee |
self.assertEqual(len(issue.comments), 0)
|
|
Pierre-Yves Chibon |
e30eee |
|
|
Pierre-Yves Chibon |
9f069c |
# Set the assignee by its email
|
|
Mark Reynolds |
eabdc8 |
msg = pagure.lib.add_issue_assignee(
|
|
Pierre-Yves Chibon |
9f069c |
session=self.session,
|
|
Pierre-Yves Chibon |
9f069c |
issue=issue,
|
|
Pierre-Yves Chibon |
9f069c |
assignee='foo@bar.com',
|
|
Pierre-Yves Chibon |
9f069c |
user='foo@pingou.com',
|
|
Pierre-Yves Chibon |
a18547 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
9f069c |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msg, 'Issue assigned to foo@bar.com')
|
|
Pierre-Yves Chibon |
9f069c |
|
|
Pierre-Yves Chibon |
e30eee |
# Add a comment to that issue
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.add_issue_comment(
|
|
Pierre-Yves Chibon |
e30eee |
session=self.session,
|
|
Pierre-Yves Chibon |
e30eee |
issue=issue,
|
|
Pierre-Yves Chibon |
e30eee |
comment='Hey look a comment!',
|
|
Pierre-Yves Chibon |
e30eee |
user='foo',
|
|
Pierre-Yves Chibon |
e30eee |
ticketfolder=None
|
|
Pierre-Yves Chibon |
e30eee |
)
|
|
Pierre-Yves Chibon |
e30eee |
self.session.commit()
|
|
Pierre-Yves Chibon |
e30eee |
self.assertEqual(msg, 'Comment added')
|
|
Pierre-Yves Chibon |
e30eee |
|
|
Pierre-Yves Chibon |
e30eee |
# After
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
e30eee |
self.assertEqual(len(issue.comments), 1)
|
|
Pierre-Yves Chibon |
e30eee |
self.assertEqual(issue.comments[0].comment, 'Hey look a comment!')
|
|
Pierre-Yves Chibon |
e30eee |
self.assertEqual(issue.comments[0].user.user, 'foo')
|
|
Pierre-Yves Chibon |
e30eee |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_issue_comment_private(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the add_issue_comment of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
repo=project,
|
|
Pierre-Yves Chibon |
a3901b |
title='Test issue #1',
|
|
Pierre-Yves Chibon |
a3901b |
content='We should work on this for the second time',
|
|
Pierre-Yves Chibon |
a3901b |
user='foo',
|
|
Pierre-Yves Chibon |
a3901b |
status='Open',
|
|
Pierre-Yves Chibon |
a3901b |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
a3901b |
private=True,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg.title, 'Test issue #1')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.open_tickets, 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.open_tickets_public, 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Before
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, project, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issue.comments), 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Add a comment to that issue
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.add_issue_comment(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
issue=issue,
|
|
Pierre-Yves Chibon |
a3901b |
comment='Hey look a comment!',
|
|
Pierre-Yves Chibon |
a3901b |
user='foo',
|
|
Pierre-Yves Chibon |
a3901b |
ticketfolder=None
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Comment added')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# After
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, project, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issue.comments), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issue.comments[0].comment, 'Hey look a comment!')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issue.comments[0].user.user, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
228df2 |
def test_add_user_to_project(self, p_send_email):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the add_user_to_project of pagure.lib. """
|
|
Pierre-Yves Chibon |
228df2 |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
228df2 |
|
|
Pierre-Yves Chibon |
228df2 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
228df2 |
|
|
Pierre-Yves Chibon |
228df2 |
# Before
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
228df2 |
self.assertEqual(len(repo.users), 0)
|
|
Pierre-Yves Chibon |
228df2 |
|
|
Pierre-Yves Chibon |
228df2 |
# Add an user to a project
|
|
Pierre-Yves Chibon |
228df2 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.add_user_to_project,
|
|
Pierre-Yves Chibon |
228df2 |
session=self.session,
|
|
Pierre-Yves Chibon |
228df2 |
project=repo,
|
|
Pierre-Yves Chibon |
a5a9ad |
new_user='foobar',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
228df2 |
)
|
|
Pierre-Yves Chibon |
228df2 |
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.add_user_to_project(
|
|
Pierre-Yves Chibon |
228df2 |
session=self.session,
|
|
Pierre-Yves Chibon |
228df2 |
project=repo,
|
|
Pierre-Yves Chibon |
a5a9ad |
new_user='foo',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
228df2 |
)
|
|
Pierre-Yves Chibon |
228df2 |
self.session.commit()
|
|
Pierre-Yves Chibon |
228df2 |
self.assertEqual(msg, 'User added')
|
|
Pierre-Yves Chibon |
228df2 |
|
|
Pierre-Yves Chibon |
228df2 |
# After
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
228df2 |
self.assertEqual(len(repo.users), 1)
|
|
Pierre-Yves Chibon |
228df2 |
self.assertEqual(repo.users[0].user, 'foo')
|
|
Vivek Anand |
3ad219 |
self.assertEqual(repo.admins[0].user, 'foo')
|
|
Vivek Anand |
3ad219 |
|
|
Vivek Anand |
3ad219 |
# Try adding the same user with the same access
|
|
Vivek Anand |
3ad219 |
self.assertRaises(
|
|
Vivek Anand |
3ad219 |
pagure.exceptions.PagureException,
|
|
Vivek Anand |
3ad219 |
pagure.lib.add_user_to_project,
|
|
Vivek Anand |
3ad219 |
session=self.session,
|
|
Vivek Anand |
3ad219 |
project=repo,
|
|
Vivek Anand |
3ad219 |
new_user='foo',
|
|
Vivek Anand |
3ad219 |
user='pingou',
|
|
Vivek Anand |
3ad219 |
access='admin'
|
|
Vivek Anand |
3ad219 |
)
|
|
Vivek Anand |
3ad219 |
|
|
Vivek Anand |
3ad219 |
# Update the access of the user
|
|
Vivek Anand |
3ad219 |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
3ad219 |
session=self.session,
|
|
Vivek Anand |
3ad219 |
project=repo,
|
|
Vivek Anand |
3ad219 |
new_user='foo',
|
|
Vivek Anand |
3ad219 |
user='pingou',
|
|
Vivek Anand |
3ad219 |
access='commit'
|
|
Vivek Anand |
3ad219 |
)
|
|
Vivek Anand |
3ad219 |
self.session.commit()
|
|
Vivek Anand |
3ad219 |
self.assertEqual(msg, 'User access updated')
|
|
Vivek Anand |
3ad219 |
self.assertEqual(len(repo.users), 1)
|
|
Vivek Anand |
3ad219 |
self.assertEqual(repo.users[0].user, 'foo')
|
|
Vivek Anand |
3ad219 |
self.assertEqual(repo.committers[0].user, 'foo')
|
|
Pierre-Yves Chibon |
228df2 |
|
|
Pierre-Yves Chibon |
4fbc78 |
def test_new_project(self):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the new_project of pagure.lib. """
|
|
Pierre-Yves Chibon |
4fbc78 |
gitfolder = os.path.join(self.path, 'repos')
|
|
Slavek Kabrda |
adea20 |
docfolder = os.path.join(gitfolder, 'docs')
|
|
Slavek Kabrda |
adea20 |
ticketfolder = os.path.join(gitfolder, 'tickets')
|
|
Slavek Kabrda |
adea20 |
requestfolder = os.path.join(gitfolder, 'requests')
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
719848 |
# Try creating a blacklisted project
|
|
Pierre-Yves Chibon |
719848 |
self.assertRaises(
|
|
Vivek Anand |
95aff7 |
pagure.exceptions.ProjectBlackListedException,
|
|
Pierre-Yves Chibon |
719848 |
pagure.lib.new_project,
|
|
Pierre-Yves Chibon |
719848 |
session=self.session,
|
|
Pierre-Yves Chibon |
719848 |
user='pingou',
|
|
Pierre-Yves Chibon |
719848 |
name='static',
|
|
Pierre-Yves Chibon |
719848 |
blacklist=['static'],
|
|
Pierre-Yves Chibon |
0d4ec5 |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
719848 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
719848 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
719848 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
719848 |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
719848 |
description='description for static',
|
|
Pierre-Yves Chibon |
719848 |
parent_id=None,
|
|
Pierre-Yves Chibon |
719848 |
)
|
|
Pierre-Yves Chibon |
719848 |
|
|
Slavek Kabrda |
adea20 |
# Try creating a project that's blacklisted by wildcard match
|
|
Slavek Kabrda |
adea20 |
self.assertRaises(
|
|
Slavek Kabrda |
adea20 |
pagure.exceptions.ProjectBlackListedException,
|
|
Slavek Kabrda |
adea20 |
pagure.lib.new_project,
|
|
Slavek Kabrda |
adea20 |
session=self.session,
|
|
Slavek Kabrda |
adea20 |
user='pingou',
|
|
Slavek Kabrda |
adea20 |
namespace='space',
|
|
Slavek Kabrda |
adea20 |
name='static',
|
|
Slavek Kabrda |
adea20 |
blacklist=['space/*'],
|
|
Slavek Kabrda |
adea20 |
allowed_prefix=[],
|
|
Slavek Kabrda |
adea20 |
gitfolder=gitfolder,
|
|
Slavek Kabrda |
adea20 |
docfolder=docfolder,
|
|
Slavek Kabrda |
adea20 |
ticketfolder=ticketfolder,
|
|
Slavek Kabrda |
adea20 |
requestfolder=requestfolder,
|
|
Slavek Kabrda |
adea20 |
description='description for static',
|
|
Slavek Kabrda |
adea20 |
parent_id=None,
|
|
Slavek Kabrda |
adea20 |
)
|
|
Slavek Kabrda |
adea20 |
|
|
Pierre-Yves Chibon |
8043de |
# Try creating a 40 chars project
|
|
Pierre-Yves Chibon |
8043de |
self.assertRaises(
|
|
Pierre-Yves Chibon |
8043de |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
8043de |
pagure.lib.new_project,
|
|
Pierre-Yves Chibon |
8043de |
session=self.session,
|
|
Pierre-Yves Chibon |
8043de |
user='pingou',
|
|
Pierre-Yves Chibon |
8544f4 |
name='s' * 40,
|
|
Pierre-Yves Chibon |
8544f4 |
namespace='pingou',
|
|
Pierre-Yves Chibon |
8043de |
blacklist=['static'],
|
|
Pierre-Yves Chibon |
8043de |
allowed_prefix=['pingou'],
|
|
Pierre-Yves Chibon |
8043de |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
8043de |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
8043de |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
8043de |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
8043de |
description='description for 40 chars length project',
|
|
Pierre-Yves Chibon |
8043de |
parent_id=None,
|
|
Pierre-Yves Chibon |
29bb9e |
prevent_40_chars=True,
|
|
Pierre-Yves Chibon |
8043de |
)
|
|
Pierre-Yves Chibon |
8043de |
|
|
Pierre-Yves Chibon |
4fbc78 |
# Create a new project
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['GIT_FOLDER'] = gitfolder
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.new_project(
|
|
Pierre-Yves Chibon |
4fbc78 |
session=self.session,
|
|
Pierre-Yves Chibon |
4fbc78 |
user='pingou',
|
|
Pierre-Yves Chibon |
4fbc78 |
name='testproject',
|
|
Pierre-Yves Chibon |
7b176d |
blacklist=[],
|
|
Pierre-Yves Chibon |
0d4ec5 |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
4fbc78 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
86840f |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
description='description for testproject',
|
|
Pierre-Yves Chibon |
86840f |
parent_id=None,
|
|
Pierre-Yves Chibon |
4fbc78 |
)
|
|
Pierre-Yves Chibon |
4fbc78 |
self.session.commit()
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'testproject',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': None})
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
9528fa |
# Try creating an existing project using a different case
|
|
Pierre-Yves Chibon |
9528fa |
self.assertRaises(
|
|
Pierre-Yves Chibon |
9528fa |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
9528fa |
pagure.lib.new_project,
|
|
Pierre-Yves Chibon |
9528fa |
session=self.session,
|
|
Pierre-Yves Chibon |
9528fa |
user='pingou',
|
|
Pierre-Yves Chibon |
9528fa |
name='TestProject',
|
|
Pierre-Yves Chibon |
9528fa |
blacklist=[],
|
|
Pierre-Yves Chibon |
9528fa |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
9528fa |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
9528fa |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
9528fa |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
9528fa |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
9528fa |
description='description for testproject',
|
|
Pierre-Yves Chibon |
9528fa |
parent_id=None,
|
|
Pierre-Yves Chibon |
9528fa |
)
|
|
Pierre-Yves Chibon |
9528fa |
|
|
Pierre-Yves Chibon |
a3901b |
# Now test that creation fails if ignore_existing_repo is False
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'testproject')
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertEqual(repo.path, 'testproject.git')
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
4fbc78 |
gitrepo = os.path.join(gitfolder, repo.path)
|
|
Pierre-Yves Chibon |
4fbc78 |
docrepo = os.path.join(docfolder, repo.path)
|
|
Pierre-Yves Chibon |
4fbc78 |
ticketrepo = os.path.join(ticketfolder, repo.path)
|
|
Pierre-Yves Chibon |
86840f |
requestrepo = os.path.join(requestfolder, repo.path)
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(gitrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(docrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(ticketrepo))
|
|
Pierre-Yves Chibon |
86840f |
self.assertTrue(os.path.exists(requestrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
4fbc78 |
# Try re-creating it but all repos are existing
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.new_project,
|
|
Pierre-Yves Chibon |
4fbc78 |
session=self.session,
|
|
Pierre-Yves Chibon |
4fbc78 |
user='pingou',
|
|
Pierre-Yves Chibon |
4fbc78 |
name='testproject',
|
|
Pierre-Yves Chibon |
7b176d |
blacklist=[],
|
|
Pierre-Yves Chibon |
0d4ec5 |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
4fbc78 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
86840f |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
description='description for testproject',
|
|
Pierre-Yves Chibon |
4fbc78 |
parent_id=None
|
|
Pierre-Yves Chibon |
4fbc78 |
)
|
|
Pierre-Yves Chibon |
4fbc78 |
self.session.rollback()
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(gitrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(docrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(ticketrepo))
|
|
Pierre-Yves Chibon |
86840f |
self.assertTrue(os.path.exists(requestrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
a3901b |
# Try re-creating it ignoring the existing repos- but repo in the DB
|
|
Pierre-Yves Chibon |
abae2b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
abae2b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
abae2b |
pagure.lib.new_project,
|
|
Pierre-Yves Chibon |
abae2b |
session=self.session,
|
|
Pierre-Yves Chibon |
abae2b |
user='pingou',
|
|
Pierre-Yves Chibon |
abae2b |
name='testproject',
|
|
Pierre-Yves Chibon |
abae2b |
blacklist=[],
|
|
Pierre-Yves Chibon |
abae2b |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
abae2b |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
abae2b |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
abae2b |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
abae2b |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
abae2b |
description='description for testproject',
|
|
Pierre-Yves Chibon |
abae2b |
parent_id=None
|
|
Pierre-Yves Chibon |
abae2b |
)
|
|
Pierre-Yves Chibon |
abae2b |
self.session.rollback()
|
|
Pierre-Yves Chibon |
abae2b |
|
|
Pierre-Yves Chibon |
abae2b |
# Re-create it, ignoring the existing repos on disk
|
|
Farhaan Bukhsh |
880d17 |
repo = pagure.lib._get_project(self.session, 'testproject')
|
|
Pierre-Yves Chibon |
abae2b |
self.session.delete(repo)
|
|
Pierre-Yves Chibon |
abae2b |
self.session.commit()
|
|
Pierre-Yves Chibon |
abae2b |
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.new_project(
|
|
Pierre-Yves Chibon |
abae2b |
session=self.session,
|
|
Pierre-Yves Chibon |
abae2b |
user='pingou',
|
|
Pierre-Yves Chibon |
abae2b |
name='testproject',
|
|
Pierre-Yves Chibon |
abae2b |
blacklist=[],
|
|
Pierre-Yves Chibon |
abae2b |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
abae2b |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
abae2b |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
abae2b |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
abae2b |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
abae2b |
description='description for testproject',
|
|
Pierre-Yves Chibon |
abae2b |
parent_id=None,
|
|
Pierre-Yves Chibon |
abae2b |
ignore_existing_repo=True
|
|
Pierre-Yves Chibon |
abae2b |
)
|
|
Pierre-Yves Chibon |
abae2b |
self.session.commit()
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'testproject',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': None})
|
|
Pierre-Yves Chibon |
abae2b |
|
|
Pierre-Yves Chibon |
a3901b |
# Delete the repo from the DB so we can try again
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'testproject')
|
|
Pierre-Yves Chibon |
a3901b |
self.session.delete(repo)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
abae2b |
self.assertTrue(os.path.exists(gitrepo))
|
|
Pierre-Yves Chibon |
abae2b |
self.assertTrue(os.path.exists(docrepo))
|
|
Pierre-Yves Chibon |
abae2b |
self.assertTrue(os.path.exists(ticketrepo))
|
|
Pierre-Yves Chibon |
abae2b |
self.assertTrue(os.path.exists(requestrepo))
|
|
Pierre-Yves Chibon |
abae2b |
|
|
Pierre-Yves Chibon |
4fbc78 |
# Drop the main git repo and try again
|
|
Pierre-Yves Chibon |
4fbc78 |
shutil.rmtree(gitrepo)
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.new_project(
|
|
Pierre-Yves Chibon |
4fbc78 |
session=self.session,
|
|
Pierre-Yves Chibon |
4fbc78 |
user='pingou',
|
|
Pierre-Yves Chibon |
4fbc78 |
name='testproject',
|
|
Pierre-Yves Chibon |
7b176d |
blacklist=[],
|
|
Pierre-Yves Chibon |
0d4ec5 |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
4fbc78 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
86840f |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
description='description for testproject',
|
|
Patrick Uiterwijk |
0b4f63 |
parent_id=None)
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertIn(
|
|
Patrick Uiterwijk |
0b4f63 |
'already exists',
|
|
Aurélien Bompard |
a7f281 |
str(task.get(propagate=False)))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.session.rollback()
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertFalse(os.path.exists(gitrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(docrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(ticketrepo))
|
|
Pierre-Yves Chibon |
86840f |
self.assertTrue(os.path.exists(requestrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
4fbc78 |
# Drop the doc repo and try again
|
|
Pierre-Yves Chibon |
4fbc78 |
shutil.rmtree(docrepo)
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.new_project,
|
|
Pierre-Yves Chibon |
4fbc78 |
session=self.session,
|
|
Pierre-Yves Chibon |
4fbc78 |
user='pingou',
|
|
Pierre-Yves Chibon |
4fbc78 |
name='testproject',
|
|
Pierre-Yves Chibon |
7b176d |
blacklist=[],
|
|
Pierre-Yves Chibon |
0d4ec5 |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
4fbc78 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
86840f |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
4fbc78 |
description='description for testproject',
|
|
Pierre-Yves Chibon |
4fbc78 |
parent_id=None
|
|
Pierre-Yves Chibon |
4fbc78 |
)
|
|
Pierre-Yves Chibon |
4fbc78 |
self.session.rollback()
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertFalse(os.path.exists(gitrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertFalse(os.path.exists(docrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
self.assertTrue(os.path.exists(ticketrepo))
|
|
Pierre-Yves Chibon |
86840f |
self.assertTrue(os.path.exists(requestrepo))
|
|
Pierre-Yves Chibon |
86840f |
|
|
Pierre-Yves Chibon |
86840f |
# Drop the request repo and try again
|
|
Pierre-Yves Chibon |
86840f |
shutil.rmtree(ticketrepo)
|
|
Pierre-Yves Chibon |
86840f |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.new_project,
|
|
Pierre-Yves Chibon |
86840f |
session=self.session,
|
|
Pierre-Yves Chibon |
86840f |
user='pingou',
|
|
Pierre-Yves Chibon |
86840f |
name='testproject',
|
|
Pierre-Yves Chibon |
7b176d |
blacklist=[],
|
|
Pierre-Yves Chibon |
0d4ec5 |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
86840f |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
86840f |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
86840f |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
86840f |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
86840f |
description='description for testproject',
|
|
Pierre-Yves Chibon |
86840f |
parent_id=None
|
|
Pierre-Yves Chibon |
86840f |
)
|
|
Pierre-Yves Chibon |
86840f |
self.session.rollback()
|
|
Pierre-Yves Chibon |
86840f |
self.assertFalse(os.path.exists(gitrepo))
|
|
Pierre-Yves Chibon |
86840f |
self.assertFalse(os.path.exists(docrepo))
|
|
Pierre-Yves Chibon |
86840f |
self.assertFalse(os.path.exists(ticketrepo))
|
|
Pierre-Yves Chibon |
86840f |
self.assertTrue(os.path.exists(requestrepo))
|
|
Pierre-Yves Chibon |
4fbc78 |
|
|
Pierre-Yves Chibon |
8043de |
# Re-Try creating a 40 chars project this time allowing it
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.new_project(
|
|
Pierre-Yves Chibon |
8043de |
session=self.session,
|
|
Pierre-Yves Chibon |
8043de |
user='pingou',
|
|
Pierre-Yves Chibon |
8043de |
name='pingou/' + 's' * 40,
|
|
Pierre-Yves Chibon |
8043de |
blacklist=['static'],
|
|
Pierre-Yves Chibon |
8043de |
allowed_prefix=['pingou'],
|
|
Pierre-Yves Chibon |
8043de |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
8043de |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
8043de |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
8043de |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
8043de |
description='description for 40 chars length project',
|
|
Pierre-Yves Chibon |
8043de |
parent_id=None,
|
|
Pierre-Yves Chibon |
8043de |
)
|
|
Pierre-Yves Chibon |
8043de |
self.session.commit()
|
|
Pierre-Yves Chibon |
8043de |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'pingou/ssssssssssssssssssssssssssssssssssssssss',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': None})
|
|
Pierre-Yves Chibon |
8043de |
|
|
Pierre-Yves Chibon |
baec09 |
def test_new_project_user_ns(self):
|
|
Pierre-Yves Chibon |
baec09 |
""" Test the new_project of pagure.lib with user_ns on. """
|
|
Pierre-Yves Chibon |
baec09 |
gitfolder = os.path.join(self.path, 'repos')
|
|
Slavek Kabrda |
adea20 |
docfolder = os.path.join(gitfolder, 'docs')
|
|
Slavek Kabrda |
adea20 |
ticketfolder = os.path.join(gitfolder, 'tickets')
|
|
Slavek Kabrda |
adea20 |
requestfolder = os.path.join(gitfolder, 'requests')
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Pierre-Yves Chibon |
baec09 |
# Create a new project with user_ns as True
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['GIT_FOLDER'] = gitfolder
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.new_project(
|
|
Pierre-Yves Chibon |
baec09 |
session=self.session,
|
|
Pierre-Yves Chibon |
baec09 |
user='pingou',
|
|
Pierre-Yves Chibon |
baec09 |
name='testproject',
|
|
Pierre-Yves Chibon |
baec09 |
blacklist=[],
|
|
Pierre-Yves Chibon |
baec09 |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
baec09 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
baec09 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
baec09 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
baec09 |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
baec09 |
description='description for testproject',
|
|
Pierre-Yves Chibon |
baec09 |
parent_id=None,
|
|
Pierre-Yves Chibon |
baec09 |
user_ns=True,
|
|
Pierre-Yves Chibon |
baec09 |
)
|
|
Pierre-Yves Chibon |
baec09 |
self.session.commit()
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'testproject',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': 'pingou'})
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(
|
|
Pierre-Yves Chibon |
baec09 |
self.session, 'testproject', namespace='pingou')
|
|
Pierre-Yves Chibon |
baec09 |
self.assertEqual(repo.path, 'pingou/testproject.git')
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Pierre-Yves Chibon |
baec09 |
gitrepo = os.path.join(gitfolder, repo.path)
|
|
Pierre-Yves Chibon |
baec09 |
docrepo = os.path.join(docfolder, repo.path)
|
|
Pierre-Yves Chibon |
baec09 |
ticketrepo = os.path.join(ticketfolder, repo.path)
|
|
Pierre-Yves Chibon |
baec09 |
requestrepo = os.path.join(requestfolder, repo.path)
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Pierre-Yves Chibon |
baec09 |
for path in [gitrepo, docrepo, ticketrepo, requestrepo]:
|
|
Pierre-Yves Chibon |
baec09 |
self.assertTrue(os.path.exists(path))
|
|
Pierre-Yves Chibon |
baec09 |
shutil.rmtree(path)
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Pierre-Yves Chibon |
baec09 |
# Create a new project with a namespace and user_ns as True
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['GIT_FOLDER'] = gitfolder
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.new_project(
|
|
Pierre-Yves Chibon |
baec09 |
session=self.session,
|
|
Pierre-Yves Chibon |
baec09 |
user='pingou',
|
|
Pierre-Yves Chibon |
baec09 |
name='testproject2',
|
|
Pierre-Yves Chibon |
baec09 |
namespace='testns',
|
|
Pierre-Yves Chibon |
baec09 |
blacklist=[],
|
|
Pierre-Yves Chibon |
baec09 |
allowed_prefix=['testns'],
|
|
Pierre-Yves Chibon |
baec09 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
baec09 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
baec09 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
baec09 |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
baec09 |
description='description for testproject2',
|
|
Pierre-Yves Chibon |
baec09 |
parent_id=None,
|
|
Pierre-Yves Chibon |
baec09 |
user_ns=True,
|
|
Pierre-Yves Chibon |
baec09 |
)
|
|
Pierre-Yves Chibon |
baec09 |
self.session.commit()
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'testproject2',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': 'testns'})
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(
|
|
Pierre-Yves Chibon |
baec09 |
self.session, 'testproject2', namespace='testns')
|
|
Pierre-Yves Chibon |
baec09 |
self.assertEqual(repo.path, 'testns/testproject2.git')
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Pierre-Yves Chibon |
baec09 |
gitrepo = os.path.join(gitfolder, repo.path)
|
|
Pierre-Yves Chibon |
baec09 |
docrepo = os.path.join(docfolder, repo.path)
|
|
Pierre-Yves Chibon |
baec09 |
ticketrepo = os.path.join(ticketfolder, repo.path)
|
|
Pierre-Yves Chibon |
baec09 |
requestrepo = os.path.join(requestfolder, repo.path)
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Pierre-Yves Chibon |
baec09 |
for path in [gitrepo, docrepo, ticketrepo, requestrepo]:
|
|
Pierre-Yves Chibon |
baec09 |
self.assertTrue(os.path.exists(path))
|
|
Pierre-Yves Chibon |
baec09 |
shutil.rmtree(path)
|
|
Pierre-Yves Chibon |
baec09 |
|
|
Pierre-Yves Chibon |
2c7de6 |
@patch('pagure.lib.notify.log')
|
|
Pierre-Yves Chibon |
2c7de6 |
def test_update_project_settings(self, mock_log):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the update_project_settings of pagure.lib. """
|
|
Pierre-Yves Chibon |
b55847 |
|
|
Pierre-Yves Chibon |
b55847 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
b55847 |
|
|
Pierre-Yves Chibon |
b55847 |
# Before
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
719bdd |
self.assertTrue(repo.settings['issue_tracker'])
|
|
Pierre-Yves Chibon |
e994c4 |
self.assertFalse(repo.settings['project_documentation'])
|
|
Pierre-Yves Chibon |
b55847 |
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.update_project_settings(
|
|
Pierre-Yves Chibon |
b55847 |
session=self.session,
|
|
Pierre-Yves Chibon |
b55847 |
repo=repo,
|
|
Pierre-Yves Chibon |
719bdd |
settings={
|
|
Pierre-Yves Chibon |
719bdd |
'issue_tracker': True,
|
|
Pierre-Yves Chibon |
e994c4 |
'project_documentation': False,
|
|
Pierre-Yves Chibon |
da0db9 |
'pull_requests': True,
|
|
Pierre-Yves Chibon |
e2259d |
'Only_assignee_can_merge_pull-request': False,
|
|
Pierre-Yves Chibon |
e2259d |
'Minimum_score_to_merge_pull-request': -1,
|
|
Pierre-Yves Chibon |
e2259d |
'Web-hooks': None,
|
|
Pierre-Yves Chibon |
91b4cf |
'Enforce_signed-off_commits_in_pull-request': False,
|
|
Pierre-Yves Chibon |
d4b9db |
'always_merge': False,
|
|
Pierre-Yves Chibon |
9d1556 |
'issues_default_to_private': False,
|
|
Pierre-Yves Chibon |
9d1556 |
'fedmsg_notifications': True,
|
|
Slavek Kabrda |
c8fc0d |
'stomp_notifications': True,
|
|
Pierre-Yves Chibon |
499752 |
'pull_request_access_only': False,
|
|
Pierre-Yves Chibon |
719bdd |
},
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
b55847 |
)
|
|
Pierre-Yves Chibon |
b55847 |
self.assertEqual(msg, 'No settings to change')
|
|
Pierre-Yves Chibon |
2c7de6 |
mock_log.assert_not_called()
|
|
Pierre-Yves Chibon |
b55847 |
|
|
Pierre-Yves Chibon |
a3901b |
# Invalid `Minimum_score_to_merge_pull-request`
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.update_project_settings,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
repo=repo,
|
|
Pierre-Yves Chibon |
a3901b |
settings={
|
|
Pierre-Yves Chibon |
a3901b |
'issue_tracker': False,
|
|
Pierre-Yves Chibon |
a3901b |
'project_documentation': True,
|
|
Pierre-Yves Chibon |
a3901b |
'pull_requests': False,
|
|
Pierre-Yves Chibon |
a3901b |
'Only_assignee_can_merge_pull-request': None,
|
|
Pierre-Yves Chibon |
a3901b |
'Minimum_score_to_merge_pull-request': 'foo',
|
|
Pierre-Yves Chibon |
a3901b |
'Web-hooks': 'https://pagure.io/foobar',
|
|
Pierre-Yves Chibon |
a3901b |
'Enforce_signed-off_commits_in_pull-request': False,
|
|
Pierre-Yves Chibon |
a3901b |
'issues_default_to_private': False,
|
|
Pierre-Yves Chibon |
a3901b |
'fedmsg_notifications': True,
|
|
Slavek Kabrda |
c8fc0d |
'stomp_notifications': True,
|
|
Pierre-Yves Chibon |
a3901b |
'pull_request_access_only': False,
|
|
Pierre-Yves Chibon |
a3901b |
},
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.update_project_settings(
|
|
Pierre-Yves Chibon |
b55847 |
session=self.session,
|
|
Pierre-Yves Chibon |
b55847 |
repo=repo,
|
|
Pierre-Yves Chibon |
719bdd |
settings={
|
|
Pierre-Yves Chibon |
719bdd |
'issue_tracker': False,
|
|
Pierre-Yves Chibon |
e994c4 |
'project_documentation': True,
|
|
Pierre-Yves Chibon |
e2259d |
'pull_requests': False,
|
|
Pierre-Yves Chibon |
9d4bff |
'Only_assignee_can_merge_pull-request': None,
|
|
Pierre-Yves Chibon |
9d4bff |
'Minimum_score_to_merge_pull-request': None,
|
|
Pierre-Yves Chibon |
68a452 |
'Web-hooks': 'https://pagure.io/foobar',
|
|
Pierre-Yves Chibon |
91b4cf |
'Enforce_signed-off_commits_in_pull-request': False,
|
|
Pierre-Yves Chibon |
9d1556 |
'issues_default_to_private': False,
|
|
Pierre-Yves Chibon |
9d1556 |
'fedmsg_notifications': True,
|
|
Slavek Kabrda |
c8fc0d |
'stomp_notifications': True,
|
|
Pierre-Yves Chibon |
499752 |
'pull_request_access_only': False,
|
|
Pierre-Yves Chibon |
719bdd |
},
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
b55847 |
)
|
|
Pierre-Yves Chibon |
b55847 |
self.assertEqual(msg, 'Edited successfully settings of repo: test2')
|
|
Matt Prahl |
5a55fe |
self.assertEqual(mock_log.call_count, 1)
|
|
Pierre-Yves Chibon |
2c7de6 |
args = mock_log.call_args
|
|
Pierre-Yves Chibon |
2c7de6 |
self.assertEqual(len(args), 2)
|
|
Pierre-Yves Chibon |
2c7de6 |
self.assertEqual(args[0][0].fullname, 'test2')
|
|
Pierre-Yves Chibon |
2c7de6 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
471571 |
sorted(args[1]['msg']['fields']),
|
|
Pierre-Yves Chibon |
471571 |
sorted([
|
|
Pierre-Yves Chibon |
2c7de6 |
'Web-hooks', 'project_documentation',
|
|
Pierre-Yves Chibon |
2c7de6 |
'issue_tracker', 'pull_requests'
|
|
Pierre-Yves Chibon |
471571 |
])
|
|
Pierre-Yves Chibon |
2c7de6 |
)
|
|
Pierre-Yves Chibon |
2c7de6 |
self.assertEqual(args[1]['topic'], 'project.edit')
|
|
Pierre-Yves Chibon |
b55847 |
|
|
Pierre-Yves Chibon |
b55847 |
# After
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
719bdd |
self.assertFalse(repo.settings['issue_tracker'])
|
|
Pierre-Yves Chibon |
e994c4 |
self.assertTrue(repo.settings['project_documentation'])
|
|
Pierre-Yves Chibon |
719bdd |
self.assertFalse(repo.settings['pull_requests'])
|
|
Pierre-Yves Chibon |
b55847 |
|
|
Pierre-Yves Chibon |
a3901b |
def test_search_issues_milestones_invalid(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the search_issues of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.test_edit_issue()
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(repo.issues), 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
a3901b |
self.session, repo, milestones='foo')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issues), 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
a3901b |
self.session, repo, milestones='foo', no_milestones=True)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issues), 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_search_issues_custom_search(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the search_issues of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.test_edit_issue()
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(repo.issues), 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
a3901b |
self.session, repo, custom_search={'foo': '*'})
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issues), 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_search_issues_offset(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the search_issues of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.test_edit_issue()
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issues = pagure.lib.search_issues(self.session, repo)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issues), 2)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual([i.id for i in issues], [2, 1])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issues = pagure.lib.search_issues(self.session, repo, offset=1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual([i.id for i in issues], [1])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_search_issues_tags(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the search_issues of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.test_edit_issue()
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(repo.issues), 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Add `tag1` to one issues and `tag2` only to the other one
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.add_tag_obj(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
obj=issue,
|
|
Pierre-Yves Chibon |
a3901b |
tags='tag1',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Issue tagged with: tag1')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.add_tag_obj(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
obj=issue,
|
|
Pierre-Yves Chibon |
a3901b |
tags='tag2',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Issue tagged with: tag2')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Search all issues tagged with `tag1`
|
|
Pierre-Yves Chibon |
a3901b |
issues = pagure.lib.search_issues(self.session, repo, tags='tag1')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issues[0].id, 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual([tag.tag for tag in issues[0].tags], ['tag1'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Search all issues *not* tagged with `tag1`
|
|
Pierre-Yves Chibon |
a3901b |
issues = pagure.lib.search_issues(self.session, repo, tags='!tag1')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
[tag.tag for tag in issues[0].tags], ['tag2'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Search all issues *not* tagged with `tag1` but tagged with `tag2`
|
|
Pierre-Yves Chibon |
a3901b |
issues = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
a3901b |
self.session, repo, tags=['!tag1', 'tag2'])
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(issues), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issues[0].id, 2)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(issues[0].project_id, 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
[tag.tag for tag in issues[0].tags], ['tag2'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_tags_of_project(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the get_tags_of_project of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.test_add_tag_obj()
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
tags = pagure.lib.get_tags_of_project(self.session, repo)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual([tag.tag for tag in tags], ['tag1'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
tags = pagure.lib.get_tags_of_project(
|
|
Pierre-Yves Chibon |
a3901b |
self.session, repo, pattern='T*')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual([tag.tag for tag in tags], ['tag1'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
tags = pagure.lib.get_tags_of_project(self.session, repo)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual([tag.tag for tag in tags], [])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_issue_statuses(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the get_issue_statuses of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
statuses = pagure.lib.get_issue_statuses(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(sorted(statuses), ['Closed', 'Open'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_set_up_user(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the set_up_user of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
items = pagure.lib.search_user(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(2, len(items))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(2, items[0].id)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual('foo', items[0].user)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(1, items[1].id)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual('pingou', items[1].user)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.set_up_user(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
username='skvidal',
|
|
Pierre-Yves Chibon |
a3901b |
fullname='Seth',
|
|
Pierre-Yves Chibon |
a3901b |
default_email='skvidal@fp.o',
|
|
Pierre-Yves Chibon |
b130e5 |
keydir=pagure.config.config.get('GITOLITE_KEYDIR', None),
|
|
Pierre-Yves Chibon |
a3901b |
ssh_key='foo key',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
items = pagure.lib.search_user(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(3, len(items))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(2, items[0].id)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual('foo', items[0].user)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(1, items[1].id)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual('pingou', items[1].user)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(3, items[2].id)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual('skvidal', items[2].user)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual('Seth', items[2].fullname)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
['skvidal@fp.o'], [email.email for email in items[2].emails])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Add the user a second time
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.set_up_user(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
username='skvidal',
|
|
Pierre-Yves Chibon |
a3901b |
fullname='Seth V',
|
|
Pierre-Yves Chibon |
a3901b |
default_email='skvidal@fp.o',
|
|
Pierre-Yves Chibon |
b130e5 |
keydir=pagure.config.config.get('GITOLITE_KEYDIR', None),
|
|
Pierre-Yves Chibon |
bd6684 |
)
|
|
Pierre-Yves Chibon |
bd6684 |
self.session.commit()
|
|
Pierre-Yves Chibon |
bd6684 |
# Nothing changed
|
|
Pierre-Yves Chibon |
fe5017 |
items = pagure.lib.search_user(self.session)
|
|
Pierre-Yves Chibon |
bd6684 |
self.assertEqual(3, len(items))
|
|
Pierre-Yves Chibon |
bd6684 |
self.assertEqual('skvidal', items[2].user)
|
|
Pierre-Yves Chibon |
65515c |
self.assertEqual('Seth V', items[2].fullname)
|
|
Pierre-Yves Chibon |
bd6684 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
bd6684 |
['skvidal@fp.o'], [email.email for email in items[2].emails])
|
|
Pierre-Yves Chibon |
bd6684 |
|
|
Pierre-Yves Chibon |
bd6684 |
# Add the user a third time with a different email
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.set_up_user(
|
|
Pierre-Yves Chibon |
bd6684 |
session=self.session,
|
|
Pierre-Yves Chibon |
bd6684 |
username='skvidal',
|
|
Pierre-Yves Chibon |
bd6684 |
fullname='Seth',
|
|
Patrick Uiterwijk |
0e5f4a |
default_email='svidal@fp.o',
|
|
Pierre-Yves Chibon |
b130e5 |
keydir=pagure.config.config.get('GITOLITE_KEYDIR', None),
|
|
Pierre-Yves Chibon |
bd6684 |
)
|
|
Pierre-Yves Chibon |
bd6684 |
self.session.commit()
|
|
Pierre-Yves Chibon |
bd6684 |
# Email added
|
|
Pierre-Yves Chibon |
fe5017 |
items = pagure.lib.search_user(self.session)
|
|
Pierre-Yves Chibon |
bd6684 |
self.assertEqual(3, len(items))
|
|
Pierre-Yves Chibon |
bd6684 |
self.assertEqual('skvidal', items[2].user)
|
|
Pierre-Yves Chibon |
bd6684 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
324de6 |
sorted(['skvidal@fp.o', 'svidal@fp.o']),
|
|
Pierre-Yves Chibon |
324de6 |
sorted([email.email for email in items[2].emails]))
|
|
Pierre-Yves Chibon |
bd6684 |
|
|
Pierre-Yves Chibon |
c0cb4b |
def test_update_user_ssh(self):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the update_user_ssh of pagure.lib. """
|
|
Pierre-Yves Chibon |
c0cb4b |
|
|
Pierre-Yves Chibon |
c0cb4b |
# Before
|
|
Pierre-Yves Chibon |
fe5017 |
user = pagure.lib.search_user(self.session, username='foo')
|
|
Pierre-Yves Chibon |
c0cb4b |
self.assertEqual(user.public_ssh_key, None)
|
|
Pierre-Yves Chibon |
c0cb4b |
|
|
Patrick Uiterwijk |
0e5f4a |
msg = pagure.lib.update_user_ssh(self.session, user, 'blah', keydir=None)
|
|
Pierre-Yves Chibon |
1b47d5 |
user = pagure.lib.search_user(self.session, username='foo')
|
|
Pierre-Yves Chibon |
1b47d5 |
self.assertEqual(user.public_ssh_key, 'blah')
|
|
Pierre-Yves Chibon |
c0cb4b |
|
|
Patrick Uiterwijk |
0e5f4a |
msg = pagure.lib.update_user_ssh(self.session, user, 'blah', keydir=None)
|
|
Pierre-Yves Chibon |
1b47d5 |
user = pagure.lib.search_user(self.session, username='foo')
|
|
Pierre-Yves Chibon |
1b47d5 |
self.assertEqual(user.public_ssh_key, 'blah')
|
|
Pierre-Yves Chibon |
c0cb4b |
|
|
Patrick Uiterwijk |
0e5f4a |
msg = pagure.lib.update_user_ssh(self.session, 'foo', None, keydir=None)
|
|
Pierre-Yves Chibon |
1b47d5 |
user = pagure.lib.search_user(self.session, username='foo')
|
|
Pierre-Yves Chibon |
1b47d5 |
self.assertEqual(user.public_ssh_key, None)
|
|
Pierre-Yves Chibon |
c0cb4b |
|
|
Pierre-Yves Chibon |
01d545 |
def avatar_url_from_email(self):
|
|
Pierre-Yves Chibon |
c3ac2f |
""" Test the avatar_url_from_openid of pagure.lib. """
|
|
Pierre-Yves Chibon |
01d545 |
output = pagure.lib.avatar_url_from_email('pingou@fedoraproject.org')
|
|
Pierre-Yves Chibon |
b6874d |
self.assertEqual(
|
|
Pierre-Yves Chibon |
b6874d |
output,
|
|
Pierre-Yves Chibon |
b6874d |
'https://seccdn.libravatar.org/avatar/'
|
|
Pierre-Yves Chibon |
c3ac2f |
'b3ee7bb4de70b6522c2478df3b4cd6322b5ec5d62ac7ceb1128e3d4ff42f6928'
|
|
Pierre-Yves Chibon |
b6874d |
'?s=64&d=retro')
|
|
Pierre-Yves Chibon |
b6874d |
|
|
Aurélien Bompard |
626417 |
output = pagure.lib.avatar_url_from_email('zoĂ©@çëfĂ².org')
|
|
Pierre-Yves Chibon |
0ded36 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
0ded36 |
output,
|
|
Pierre-Yves Chibon |
0ded36 |
'https://seccdn.libravatar.org/avatar/'
|
|
Pierre-Yves Chibon |
0ded36 |
'8fa6110d1f6a7a013969f012e1149ff89bf1252d4f15d25edee31d4662878656'
|
|
Pierre-Yves Chibon |
0ded36 |
'?s=64&d=retro')
|
|
Pierre-Yves Chibon |
0ded36 |
|
|
Pierre-Yves Chibon |
a3901b |
def test_fork_project_with_branch(self):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the fork_project of pagure.lib. """
|
|
Pierre-Yves Chibon |
4fe9b6 |
gitfolder = os.path.join(self.path, 'repos')
|
|
Slavek Kabrda |
adea20 |
docfolder = os.path.join(gitfolder, 'docs')
|
|
Slavek Kabrda |
adea20 |
ticketfolder = os.path.join(gitfolder, 'tickets')
|
|
Slavek Kabrda |
adea20 |
requestfolder = os.path.join(gitfolder, 'requests')
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['GIT_FOLDER'] = gitfolder
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
fe5017 |
projects = pagure.lib.search_projects(self.session)
|
|
Pierre-Yves Chibon |
4fe9b6 |
self.assertEqual(len(projects), 0)
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
4fe9b6 |
# Create a new project
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.new_project(
|
|
Pierre-Yves Chibon |
4fe9b6 |
session=self.session,
|
|
Pierre-Yves Chibon |
4fe9b6 |
user='pingou',
|
|
Pierre-Yves Chibon |
4fe9b6 |
name='testproject',
|
|
Pierre-Yves Chibon |
7b176d |
blacklist=[],
|
|
Pierre-Yves Chibon |
0d4ec5 |
allowed_prefix=[],
|
|
Pierre-Yves Chibon |
4fe9b6 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
4fe9b6 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
4fe9b6 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
86840f |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
4fe9b6 |
description='description for testproject',
|
|
Pierre-Yves Chibon |
e2259d |
parent_id=None,
|
|
Pierre-Yves Chibon |
4fe9b6 |
)
|
|
Pierre-Yves Chibon |
4fe9b6 |
self.session.commit()
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'testproject',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': None})
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
fe5017 |
projects = pagure.lib.search_projects(self.session)
|
|
Pierre-Yves Chibon |
4fe9b6 |
self.assertEqual(len(projects), 1)
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'testproject')
|
|
Pierre-Yves Chibon |
a3901b |
gitrepo = os.path.join(gitfolder, project.path)
|
|
Pierre-Yves Chibon |
a3901b |
docrepo = os.path.join(docfolder, project.path)
|
|
Pierre-Yves Chibon |
a3901b |
ticketrepo = os.path.join(ticketfolder, project.path)
|
|
Pierre-Yves Chibon |
a3901b |
requestrepo = os.path.join(requestfolder, project.path)
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
a3901b |
# Add content to the main repo into three branches
|
|
Pierre-Yves Chibon |
a3901b |
tests.add_content_git_repo(gitrepo, 'master')
|
|
Pierre-Yves Chibon |
a3901b |
tests.add_content_git_repo(gitrepo, 'feature1')
|
|
Pierre-Yves Chibon |
a3901b |
tests.add_content_git_repo(gitrepo, 'feature2')
|
|
Pierre-Yves Chibon |
86840f |
|
|
Pierre-Yves Chibon |
a3901b |
# Check the branches of the main repo
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
sorted(pagure.lib.git.get_git_branches(project)),
|
|
Pierre-Yves Chibon |
a3901b |
['feature1', 'feature2', 'master']
|
|
Pierre-Yves Chibon |
4fe9b6 |
)
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
a3901b |
# Fork
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.fork_project(
|
|
Pierre-Yves Chibon |
4fe9b6 |
session=self.session,
|
|
Pierre-Yves Chibon |
4fe9b6 |
user='foo',
|
|
Pierre-Yves Chibon |
a3901b |
repo=project,
|
|
Pierre-Yves Chibon |
4fe9b6 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
4fe9b6 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
4fe9b6 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
86840f |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
4fe9b6 |
)
|
|
Pierre-Yves Chibon |
4fe9b6 |
self.session.commit()
|
|
Pierre-Yves Chibon |
4fe9b6 |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'testproject',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': None,
|
|
Patrick Uiterwijk |
0b4f63 |
'username': 'foo'})
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
fe5017 |
projects = pagure.lib.search_projects(self.session)
|
|
Pierre-Yves Chibon |
4fe9b6 |
self.assertEqual(len(projects), 2)
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(
|
|
Pierre-Yves Chibon |
4fe9b6 |
self.session, 'testproject', user='foo')
|
|
Pierre-Yves Chibon |
a3901b |
# Check the branches of the fork
|
|
Pierre-Yves Chibon |
4fe9b6 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
sorted(pagure.lib.git.get_git_branches(project)),
|
|
Pierre-Yves Chibon |
a3901b |
['feature1', 'feature2', 'master']
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
4fe9b6 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
def test_fork_project_namespaced(self):
|
|
Pierre-Yves Chibon |
8ce9c7 |
""" Test the fork_project of pagure.lib on a namespaced project. """
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitfolder = os.path.join(self.path, 'repos')
|
|
Slavek Kabrda |
adea20 |
docfolder = os.path.join(gitfolder, 'docs')
|
|
Slavek Kabrda |
adea20 |
ticketfolder = os.path.join(gitfolder, 'tickets')
|
|
Slavek Kabrda |
adea20 |
requestfolder = os.path.join(gitfolder, 'requests')
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
projects = pagure.lib.search_projects(self.session)
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertEqual(len(projects), 0)
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
# Create a new project
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.new_project(
|
|
Pierre-Yves Chibon |
8ce9c7 |
session=self.session,
|
|
Pierre-Yves Chibon |
8ce9c7 |
user='pingou',
|
|
Pierre-Yves Chibon |
8ce9c7 |
name='testproject',
|
|
Pierre-Yves Chibon |
8ce9c7 |
namespace='foonamespace',
|
|
Pierre-Yves Chibon |
8ce9c7 |
blacklist=[],
|
|
Pierre-Yves Chibon |
8ce9c7 |
allowed_prefix=['foonamespace'],
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
description='description for testproject',
|
|
Pierre-Yves Chibon |
8ce9c7 |
parent_id=None,
|
|
Pierre-Yves Chibon |
8ce9c7 |
)
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.session.commit()
|
|
Aurélien Bompard |
a7f281 |
self.assertEqual(task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
170974 |
'repo': 'testproject',
|
|
Patrick Uiterwijk |
170974 |
'namespace': 'foonamespace'})
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
projects = pagure.lib.search_projects(self.session)
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertEqual(len(projects), 1)
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Farhaan Bukhsh |
83f8bc |
repo = pagure.lib._get_project(self.session, 'testproject', namespace='foonamespace')
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitrepo = os.path.join(gitfolder, repo.path)
|
|
Pierre-Yves Chibon |
8ce9c7 |
docrepo = os.path.join(docfolder, repo.path)
|
|
Pierre-Yves Chibon |
8ce9c7 |
ticketrepo = os.path.join(ticketfolder, repo.path)
|
|
Pierre-Yves Chibon |
8ce9c7 |
requestrepo = os.path.join(requestfolder, repo.path)
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertTrue(os.path.exists(gitrepo))
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertTrue(os.path.exists(docrepo))
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertTrue(os.path.exists(ticketrepo))
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertTrue(os.path.exists(requestrepo))
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
# Git repo exists
|
|
Pierre-Yves Chibon |
8ce9c7 |
grepo = '%s.git' % os.path.join(
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitfolder, 'forks', 'foo', 'foonamespace', 'testproject')
|
|
Pierre-Yves Chibon |
8ce9c7 |
os.makedirs(grepo)
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
8ce9c7 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
8ce9c7 |
pagure.lib.fork_project,
|
|
Pierre-Yves Chibon |
8ce9c7 |
session=self.session,
|
|
Pierre-Yves Chibon |
8ce9c7 |
user='foo',
|
|
Pierre-Yves Chibon |
8ce9c7 |
repo=repo,
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
)
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.session.rollback()
|
|
Pierre-Yves Chibon |
8ce9c7 |
shutil.rmtree(grepo)
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
# Doc repo exists
|
|
Pierre-Yves Chibon |
8ce9c7 |
grepo = '%s.git' % os.path.join(
|
|
Pierre-Yves Chibon |
8ce9c7 |
docfolder, 'forks', 'foo', 'foonamespace', 'testproject')
|
|
Pierre-Yves Chibon |
8ce9c7 |
os.makedirs(grepo)
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.fork_project(session=self.session,
|
|
Patrick Uiterwijk |
0b4f63 |
user='foo',
|
|
Patrick Uiterwijk |
0b4f63 |
repo=repo,
|
|
Patrick Uiterwijk |
0b4f63 |
gitfolder=gitfolder,
|
|
Patrick Uiterwijk |
0b4f63 |
docfolder=docfolder,
|
|
Patrick Uiterwijk |
0b4f63 |
ticketfolder=ticketfolder,
|
|
Patrick Uiterwijk |
0b4f63 |
requestfolder=requestfolder)
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertIn(
|
|
Patrick Uiterwijk |
0b4f63 |
'already exists',
|
|
Aurélien Bompard |
a7f281 |
str(task.get(propagate=False)))
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.session.rollback()
|
|
Pierre-Yves Chibon |
8ce9c7 |
shutil.rmtree(grepo)
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
# Ticket repo exists
|
|
Pierre-Yves Chibon |
8ce9c7 |
grepo = '%s.git' % os.path.join(
|
|
Pierre-Yves Chibon |
8ce9c7 |
ticketfolder, 'forks', 'foo', 'foonamespace', 'testproject')
|
|
Pierre-Yves Chibon |
8ce9c7 |
os.makedirs(grepo)
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.fork_project(
|
|
Pierre-Yves Chibon |
8ce9c7 |
session=self.session,
|
|
Pierre-Yves Chibon |
8ce9c7 |
user='foo',
|
|
Pierre-Yves Chibon |
8ce9c7 |
repo=repo,
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
ticketfolder=ticketfolder,
|
|
Patrick Uiterwijk |
0b4f63 |
requestfolder=requestfolder)
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertIn(
|
|
Patrick Uiterwijk |
0b4f63 |
'already exists',
|
|
Aurélien Bompard |
a7f281 |
str(task.get(propagate=False)))
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.session.rollback()
|
|
Pierre-Yves Chibon |
8ce9c7 |
shutil.rmtree(grepo)
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
# Request repo exists
|
|
Pierre-Yves Chibon |
8ce9c7 |
grepo = '%s.git' % os.path.join(
|
|
Pierre-Yves Chibon |
8ce9c7 |
requestfolder, 'forks', 'foo', 'foonamespace', 'testproject')
|
|
Pierre-Yves Chibon |
8ce9c7 |
os.makedirs(grepo)
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.fork_project(
|
|
Pierre-Yves Chibon |
8ce9c7 |
session=self.session,
|
|
Pierre-Yves Chibon |
8ce9c7 |
user='foo',
|
|
Pierre-Yves Chibon |
8ce9c7 |
repo=repo,
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
ticketfolder=ticketfolder,
|
|
Patrick Uiterwijk |
0b4f63 |
requestfolder=requestfolder)
|
|
Patrick Uiterwijk |
0b4f63 |
self.assertIn(
|
|
Patrick Uiterwijk |
0b4f63 |
'already exists',
|
|
Aurélien Bompard |
a7f281 |
str(task.get(propagate=False)))
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.session.rollback()
|
|
Pierre-Yves Chibon |
8ce9c7 |
shutil.rmtree(grepo)
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
# Fork worked
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.fork_project(
|
|
Pierre-Yves Chibon |
8ce9c7 |
session=self.session,
|
|
Pierre-Yves Chibon |
8ce9c7 |
user='foo',
|
|
Pierre-Yves Chibon |
8ce9c7 |
repo=repo,
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
)
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.session.commit()
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'testproject',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': 'foonamespace',
|
|
Patrick Uiterwijk |
0b4f63 |
'username': 'foo'})
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
8ce9c7 |
# Fork a fork
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Farhaan Bukhsh |
83f8bc |
repo = pagure.lib._get_project(self.session, 'testproject', user='foo', namespace='foonamespace')
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Aurélien Bompard |
a7f281 |
task = pagure.lib.fork_project(
|
|
Pierre-Yves Chibon |
8ce9c7 |
session=self.session,
|
|
Pierre-Yves Chibon |
8ce9c7 |
user='pingou',
|
|
Pierre-Yves Chibon |
8ce9c7 |
repo=repo,
|
|
Pierre-Yves Chibon |
8ce9c7 |
gitfolder=gitfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
docfolder=docfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
ticketfolder=ticketfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
requestfolder=requestfolder,
|
|
Pierre-Yves Chibon |
8ce9c7 |
)
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.session.commit()
|
|
Pierre-Yves Chibon |
8ce9c7 |
self.assertEqual(
|
|
Aurélien Bompard |
a7f281 |
task.get(),
|
|
Pierre-Yves Chibon |
b130e5 |
{'endpoint': 'ui_ns.view_repo',
|
|
Patrick Uiterwijk |
0b4f63 |
'repo': 'testproject',
|
|
Patrick Uiterwijk |
0b4f63 |
'namespace': 'foonamespace',
|
|
Patrick Uiterwijk |
0b4f63 |
'username': 'pingou'})
|
|
Pierre-Yves Chibon |
8ce9c7 |
|
|
Pierre-Yves Chibon |
e6e56c |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
e6e56c |
def test_new_pull_request(self, mockemail):
|
|
Pierre-Yves Chibon |
fe5017 |
""" test new_pull_request of pagure.lib. """
|
|
Pierre-Yves Chibon |
e6e56c |
mockemail.return_value = True
|
|
Pierre-Yves Chibon |
e6e56c |
|
|
Pierre-Yves Chibon |
d62e1f |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
d62e1f |
|
|
Pierre-Yves Chibon |
d62e1f |
# Create a forked repo
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
d62e1f |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
d62e1f |
name='test',
|
|
Pierre-Yves Chibon |
d62e1f |
description='test project #1',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
d62e1f |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbrrr',
|
|
Pierre-Yves Chibon |
d62e1f |
)
|
|
Pierre-Yves Chibon |
d62e1f |
self.session.commit()
|
|
Pierre-Yves Chibon |
d62e1f |
self.session.add(item)
|
|
Pierre-Yves Chibon |
d62e1f |
|
|
Pierre-Yves Chibon |
b3ed64 |
# Add an extra user to project `foo`
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_requests, 0)
|
|
Pierre-Yves Chibon |
29d753 |
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.add_user_to_project(
|
|
Pierre-Yves Chibon |
b3ed64 |
session=self.session,
|
|
Pierre-Yves Chibon |
b3ed64 |
project=repo,
|
|
Pierre-Yves Chibon |
a5a9ad |
new_user='foo',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
b3ed64 |
)
|
|
Pierre-Yves Chibon |
b3ed64 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b3ed64 |
self.assertEqual(msg, 'User added')
|
|
Pierre-Yves Chibon |
b3ed64 |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Farhaan Bukhsh |
481209 |
forked_repo = pagure.lib._get_project(
|
|
Pierre-Yves Chibon |
d62e1f |
self.session, 'test', user='pingou')
|
|
Pierre-Yves Chibon |
d62e1f |
|
|
Pierre-Yves Chibon |
a3901b |
# Fails for the lack of repo_from and remote_git
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.new_pull_request,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
repo_from=None,
|
|
Pierre-Yves Chibon |
a3901b |
branch_from='master',
|
|
Pierre-Yves Chibon |
a3901b |
repo_to=repo,
|
|
Pierre-Yves Chibon |
a3901b |
branch_to='master',
|
|
Pierre-Yves Chibon |
a3901b |
title='test pull-request',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
requestfolder=None,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Let's pretend we turned on the CI hook for the project
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
obj = pagure.hooks.pagure_ci.PagureCITable(
|
|
Pierre-Yves Chibon |
a3901b |
project_id=project.id,
|
|
Pierre-Yves Chibon |
a3901b |
active=True
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(obj)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Create the new PR
|
|
Pierre-Yves Chibon |
f9c5f9 |
req = pagure.lib.new_pull_request(
|
|
Pierre-Yves Chibon |
d62e1f |
session=self.session,
|
|
Pierre-Yves Chibon |
d62e1f |
repo_from=forked_repo,
|
|
Pierre-Yves Chibon |
d62e1f |
branch_from='master',
|
|
Pierre-Yves Chibon |
d62e1f |
repo_to=repo,
|
|
Pierre-Yves Chibon |
d62e1f |
branch_to='master',
|
|
Pierre-Yves Chibon |
d62e1f |
title='test pull-request',
|
|
Pierre-Yves Chibon |
4726b7 |
user='pingou',
|
|
Pierre-Yves Chibon |
4726b7 |
requestfolder=None,
|
|
Pierre-Yves Chibon |
d62e1f |
)
|
|
Pierre-Yves Chibon |
e2259d |
self.session.commit()
|
|
Pierre-Yves Chibon |
f9c5f9 |
self.assertEqual(req.id, 1)
|
|
Pierre-Yves Chibon |
f9c5f9 |
self.assertEqual(req.title, 'test pull-request')
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_requests, 1)
|
|
Pierre-Yves Chibon |
d62e1f |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS')
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_pull_request_comment(self, mock_redis):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test add_pull_request_comment of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
mock_redis.return_value = True
|
|
Pierre-Yves Chibon |
dc8159 |
|
|
Pierre-Yves Chibon |
dc8159 |
self.test_new_pull_request()
|
|
Pierre-Yves Chibon |
dc8159 |
|
|
Pierre-Yves Chibon |
fe5017 |
request = pagure.lib.search_pull_requests(self.session, requestid=1)
|
|
Pierre-Yves Chibon |
dc8159 |
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.add_pull_request_comment(
|
|
Pierre-Yves Chibon |
dc8159 |
session=self.session,
|
|
Pierre-Yves Chibon |
dc8159 |
request=request,
|
|
Pierre-Yves Chibon |
dc8159 |
commit='commithash',
|
|
Pierre-Yves Chibon |
c18b96 |
tree_id=None,
|
|
Pierre-Yves Chibon |
dc8159 |
filename='file',
|
|
Pierre-Yves Chibon |
dc8159 |
row=None,
|
|
Pierre-Yves Chibon |
dc8159 |
comment='This is awesome, I got to remember it!',
|
|
Pierre-Yves Chibon |
4726b7 |
user='foo',
|
|
Pierre-Yves Chibon |
4726b7 |
requestfolder=None,
|
|
Pierre-Yves Chibon |
a3901b |
notification=True,
|
|
Pierre-Yves Chibon |
dc8159 |
)
|
|
Pierre-Yves Chibon |
dc8159 |
self.assertEqual(msg, 'Comment added')
|
|
Pierre-Yves Chibon |
521fcd |
self.session.commit()
|
|
Pierre-Yves Chibon |
dc8159 |
|
|
Pierre-Yves Chibon |
60a84c |
self.assertEqual(len(request.discussion), 0)
|
|
Pierre-Yves Chibon |
521fcd |
self.assertEqual(len(request.comments), 1)
|
|
Pierre-Yves Chibon |
577b63 |
self.assertEqual(request.score, 0)
|
|
Pierre-Yves Chibon |
7c1138 |
self.assertEqual(mock_redis.publish.call_count, 1)
|
|
Pierre-Yves Chibon |
60a84c |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS')
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.PAGURE_CI', MagicMock(return_value=True))
|
|
LubomĂr SedlĂ¡Å™ |
a25e58 |
def test_add_pull_request_comment_to_re_run_ci(self, mock_redis):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test add_pull_request_comment of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
mock_redis.return_value = True
|
|
Pierre-Yves Chibon |
c34916 |
|
|
Pierre-Yves Chibon |
c34916 |
self.test_new_pull_request()
|
|
Pierre-Yves Chibon |
abb591 |
self.assertEqual(mock_redis.publish.call_count, 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Let's pretend we turned on the CI hook for the project
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
if not project.ci_hook or not project.ci_hook.active:
|
|
Pierre-Yves Chibon |
a3901b |
obj = pagure.hooks.pagure_ci.PagureCITable(
|
|
Pierre-Yves Chibon |
a3901b |
project_id=project.id,
|
|
Pierre-Yves Chibon |
a3901b |
active=True
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(obj)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
request = pagure.lib.search_pull_requests(self.session, requestid=1)
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.add_pull_request_comment(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
request=request,
|
|
Pierre-Yves Chibon |
a3901b |
commit='commithash',
|
|
Pierre-Yves Chibon |
a3901b |
tree_id=None,
|
|
Pierre-Yves Chibon |
a3901b |
filename='file',
|
|
Pierre-Yves Chibon |
a3901b |
row=None,
|
|
Pierre-Yves Chibon |
a3901b |
comment='Pretty please pagure-ci rebuild',
|
|
Pierre-Yves Chibon |
a3901b |
user='foo',
|
|
Pierre-Yves Chibon |
a3901b |
requestfolder=None,
|
|
Pierre-Yves Chibon |
a3901b |
notification=True,
|
|
Pierre-Yves Chibon |
a3901b |
trigger_ci=['pretty please pagure-ci rebuild'],
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Comment added')
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(request.discussion), 0)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(request.comments), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(request.score, 0)
|
|
Pierre-Yves Chibon |
abb591 |
self.assertEqual(mock_redis.publish.call_count, 1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_pull_request_flag(self, mockemail):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test add_pull_request_flag of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
mockemail.return_value = True
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.test_new_pull_request()
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens(self.session)
|
|
Pierre-Yves Chibon |
c34916 |
|
|
Pierre-Yves Chibon |
c34916 |
request = pagure.lib.search_pull_requests(self.session, requestid=1)
|
|
Pierre-Yves Chibon |
c34916 |
self.assertEqual(len(request.flags), 0)
|
|
Pierre-Yves Chibon |
c34916 |
|
|
Pierre-Yves Chibon |
c34916 |
msg = pagure.lib.add_pull_request_flag(
|
|
Pierre-Yves Chibon |
c34916 |
session=self.session,
|
|
Pierre-Yves Chibon |
c34916 |
request=request,
|
|
Pierre-Yves Chibon |
c34916 |
username="jenkins",
|
|
Pierre-Yves Chibon |
c34916 |
percent=100,
|
|
Pierre-Yves Chibon |
c34916 |
comment="Build passes",
|
|
Pierre-Yves Chibon |
a2e030 |
status='success',
|
|
Pierre-Yves Chibon |
c34916 |
url="http://jenkins.cloud.fedoraproject.org",
|
|
Pierre-Yves Chibon |
c34916 |
uid="jenkins_build_pagure_34",
|
|
Pierre-Yves Chibon |
c34916 |
user='foo',
|
|
Pierre-Yves Chibon |
ba2b1c |
token='aaabbbcccddd',
|
|
Pierre-Yves Chibon |
c34916 |
requestfolder=None,
|
|
Pierre-Yves Chibon |
c34916 |
)
|
|
Pierre-Yves Chibon |
c27d61 |
self.assertEqual(msg, ('Flag added', 'jenkins_build_pagure_34'))
|
|
Pierre-Yves Chibon |
c34916 |
self.session.commit()
|
|
Pierre-Yves Chibon |
c34916 |
|
|
Pierre-Yves Chibon |
c34916 |
self.assertEqual(len(request.flags), 1)
|
|
Pierre-Yves Chibon |
ba2b1c |
self.assertEqual(request.flags[0].token_id, 'aaabbbcccddd')
|
|
Pierre-Yves Chibon |
c34916 |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
566a8b |
def test_search_pull_requests(self):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test search_pull_requests of pagure.lib. """
|
|
Pierre-Yves Chibon |
566a8b |
|
|
Pierre-Yves Chibon |
566a8b |
self.test_new_pull_request()
|
|
Pierre-Yves Chibon |
566a8b |
|
|
Pierre-Yves Chibon |
fe5017 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
566a8b |
session=self.session
|
|
Pierre-Yves Chibon |
566a8b |
)
|
|
Pierre-Yves Chibon |
566a8b |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
566a8b |
|
|
Pierre-Yves Chibon |
fe5017 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
566a8b |
session=self.session,
|
|
Pierre-Yves Chibon |
566a8b |
project_id=1
|
|
Pierre-Yves Chibon |
566a8b |
)
|
|
Pierre-Yves Chibon |
566a8b |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
566a8b |
|
|
Pierre-Yves Chibon |
fe5017 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
566a8b |
session=self.session,
|
|
clime |
afed57 |
project_id_from=4
|
|
Pierre-Yves Chibon |
566a8b |
)
|
|
Pierre-Yves Chibon |
566a8b |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
566a8b |
|
|
Pierre-Yves Chibon |
fe5017 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
566a8b |
session=self.session,
|
|
Pierre-Yves Chibon |
468c90 |
status=False
|
|
Pierre-Yves Chibon |
566a8b |
)
|
|
Pierre-Yves Chibon |
566a8b |
self.assertEqual(len(prs), 0)
|
|
Pierre-Yves Chibon |
566a8b |
|
|
Pierre-Yves Chibon |
c5d9f4 |
# All non-assigned PR
|
|
Pierre-Yves Chibon |
c5d9f4 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
c5d9f4 |
session=self.session,
|
|
Pierre-Yves Chibon |
c5d9f4 |
assignee=False
|
|
Pierre-Yves Chibon |
c5d9f4 |
)
|
|
Pierre-Yves Chibon |
c5d9f4 |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
c5d9f4 |
|
|
Pierre-Yves Chibon |
c5d9f4 |
prs[0].assignee_id = 1
|
|
Pierre-Yves Chibon |
c5d9f4 |
self.session.add(prs[0])
|
|
Pierre-Yves Chibon |
c5d9f4 |
self.session.commit()
|
|
Pierre-Yves Chibon |
c5d9f4 |
|
|
Pierre-Yves Chibon |
c5d9f4 |
# All the PR assigned
|
|
Pierre-Yves Chibon |
c5d9f4 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
c5d9f4 |
session=self.session,
|
|
Pierre-Yves Chibon |
c5d9f4 |
assignee=True
|
|
Pierre-Yves Chibon |
c5d9f4 |
)
|
|
Pierre-Yves Chibon |
c5d9f4 |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
c5d9f4 |
|
|
Pierre-Yves Chibon |
c5d9f4 |
# Basically the same as above but then for a specific user
|
|
Pierre-Yves Chibon |
c5d9f4 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
c5d9f4 |
session=self.session,
|
|
Pierre-Yves Chibon |
c5d9f4 |
assignee='pingou'
|
|
Pierre-Yves Chibon |
c5d9f4 |
)
|
|
Pierre-Yves Chibon |
c5d9f4 |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
c5d9f4 |
|
|
Pierre-Yves Chibon |
c5d9f4 |
# All PR except those assigned to pingou
|
|
Pierre-Yves Chibon |
c5d9f4 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
c5d9f4 |
session=self.session,
|
|
Pierre-Yves Chibon |
c5d9f4 |
assignee='!pingou'
|
|
Pierre-Yves Chibon |
c5d9f4 |
)
|
|
Pierre-Yves Chibon |
c5d9f4 |
self.assertEqual(len(prs), 0)
|
|
Pierre-Yves Chibon |
c5d9f4 |
|
|
Pierre-Yves Chibon |
c5d9f4 |
# All PR created by the specified author
|
|
Pierre-Yves Chibon |
c5d9f4 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
c5d9f4 |
session=self.session,
|
|
Pierre-Yves Chibon |
c5d9f4 |
author='pingou'
|
|
Pierre-Yves Chibon |
c5d9f4 |
)
|
|
Pierre-Yves Chibon |
c5d9f4 |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
c5d9f4 |
|
|
Pierre-Yves Chibon |
c5d9f4 |
# Count the PR instead of listing them
|
|
Pierre-Yves Chibon |
c5d9f4 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
c5d9f4 |
session=self.session,
|
|
Pierre-Yves Chibon |
c5d9f4 |
author='pingou',
|
|
Pierre-Yves Chibon |
c5d9f4 |
count=True
|
|
Pierre-Yves Chibon |
c5d9f4 |
)
|
|
Pierre-Yves Chibon |
c5d9f4 |
self.assertEqual(prs, 1)
|
|
Pierre-Yves Chibon |
c5d9f4 |
|
|
Pierre-Yves Chibon |
a3901b |
dt = datetime.datetime.utcnow()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Create the second PR
|
|
Pierre-Yves Chibon |
a3901b |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
req = pagure.lib.new_pull_request(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
repo_from=repo,
|
|
Pierre-Yves Chibon |
a3901b |
branch_from='feature',
|
|
Pierre-Yves Chibon |
a3901b |
repo_to=repo,
|
|
Pierre-Yves Chibon |
a3901b |
branch_to='master',
|
|
Pierre-Yves Chibon |
a3901b |
title='test pull-request #2',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
requestfolder=None,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(req.id, 2)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(req.title, 'test pull-request #2')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(repo.open_requests, 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Ensure we have 2 PRs
|
|
Pierre-Yves Chibon |
a3901b |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
author='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(prs), 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Test the offset
|
|
Pierre-Yves Chibon |
a3901b |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
author='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
offset=1,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Test the updated_after
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Test updated after before the second PR was created
|
|
Pierre-Yves Chibon |
a3901b |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
author='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
updated_after=dt,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Test updated after, 1h ago
|
|
Pierre-Yves Chibon |
a3901b |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
author='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
updated_after=dt - datetime.timedelta(hours=1),
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(prs), 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
b9664f |
def test_close_pull_request(self, send_email):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test close_pull_request of pagure.lib. """
|
|
Pierre-Yves Chibon |
b9664f |
send_email.return_value = True
|
|
Pierre-Yves Chibon |
6dfdf2 |
|
|
Pierre-Yves Chibon |
6dfdf2 |
self.test_new_pull_request()
|
|
Pierre-Yves Chibon |
6dfdf2 |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_requests, 1)
|
|
Pierre-Yves Chibon |
fe5017 |
request = pagure.lib.search_pull_requests(self.session, requestid=1)
|
|
Pierre-Yves Chibon |
6dfdf2 |
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.close_pull_request(
|
|
Pierre-Yves Chibon |
6dfdf2 |
session=self.session,
|
|
Pierre-Yves Chibon |
6dfdf2 |
request=request,
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
4726b7 |
requestfolder=None,
|
|
Pierre-Yves Chibon |
4726b7 |
merged=True,
|
|
Pierre-Yves Chibon |
4726b7 |
)
|
|
Pierre-Yves Chibon |
6dfdf2 |
self.session.commit()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_requests, 0)
|
|
Pierre-Yves Chibon |
6dfdf2 |
|
|
Pierre-Yves Chibon |
fe5017 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
6dfdf2 |
session=self.session,
|
|
Pierre-Yves Chibon |
6dfdf2 |
status=False
|
|
Pierre-Yves Chibon |
6dfdf2 |
)
|
|
Pierre-Yves Chibon |
6dfdf2 |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
6dfdf2 |
|
|
Pierre-Yves Chibon |
6dfdf2 |
# Does not change much, just the notification sent
|
|
Pierre-Yves Chibon |
6dfdf2 |
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.close_pull_request(
|
|
Pierre-Yves Chibon |
6dfdf2 |
session=self.session,
|
|
Pierre-Yves Chibon |
6dfdf2 |
request=request,
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
4726b7 |
requestfolder=None,
|
|
Pierre-Yves Chibon |
d3db5a |
merged=False,
|
|
Pierre-Yves Chibon |
4726b7 |
)
|
|
Pierre-Yves Chibon |
6dfdf2 |
self.session.commit()
|
|
Pierre-Yves Chibon |
6dfdf2 |
|
|
Pierre-Yves Chibon |
fe5017 |
prs = pagure.lib.search_pull_requests(
|
|
Pierre-Yves Chibon |
6dfdf2 |
session=self.session,
|
|
Pierre-Yves Chibon |
6dfdf2 |
status=False
|
|
Pierre-Yves Chibon |
6dfdf2 |
)
|
|
Pierre-Yves Chibon |
6dfdf2 |
self.assertEqual(len(prs), 1)
|
|
Pierre-Yves Chibon |
6dfdf2 |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.git.update_git', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_remove_issue_dependency(self):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test remove_issue_dependency of pagure.lib. """
|
|
Pierre-Yves Chibon |
9be8bd |
|
|
Pierre-Yves Chibon |
9be8bd |
self.test_add_issue_dependency()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
fe5017 |
issue_blocked = pagure.lib.search_issues(
|
|
Pierre-Yves Chibon |
9be8bd |
self.session, repo, issueid=2)
|
|
Pierre-Yves Chibon |
9be8bd |
|
|
Pierre-Yves Chibon |
9be8bd |
# Before
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(len(issue.children), 1)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(issue.children[0].id, 2)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(len(issue.parents), 0)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(issue.parents, [])
|
|
Pierre-Yves Chibon |
9be8bd |
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(len(issue_blocked.children), 0)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(issue_blocked.children, [])
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(len(issue_blocked.parents), 1)
|
|
Pierre-Yves Chibon |
a8a5f4 |
self.assertEqual(issue_blocked.parents[0].id, 1)
|
|
Pierre-Yves Chibon |
9be8bd |
|
|
Pierre-Yves Chibon |
9be8bd |
self.assertRaises(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.remove_issue_dependency,
|
|
Pierre-Yves Chibon |
9be8bd |
session=self.session,
|
|
Pierre-Yves Chibon |
9be8bd |
issue=issue,
|
|
Pierre-Yves Chibon |
9be8bd |
issue_blocked=issue,
|
|
Pierre-Yves Chibon |
9be8bd |
user='pingou',
|
|
Pierre-Yves Chibon |
9be8bd |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
9be8bd |
|
|
Pierre-Yves Chibon |
9be8bd |
# Wrong order of issues
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.remove_issue_dependency(
|
|
Pierre-Yves Chibon |
9be8bd |
session=self.session,
|
|
Pierre-Yves Chibon |
9be8bd |
issue=issue,
|
|
Pierre-Yves Chibon |
9be8bd |
issue_blocked=issue_blocked,
|
|
Pierre-Yves Chibon |
9be8bd |
user='pingou',
|
|
Pierre-Yves Chibon |
9be8bd |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
9be8bd |
self.session.commit()
|
|
Pierre-Yves Chibon |
9be8bd |
self.assertEqual(msg, None)
|
|
Pierre-Yves Chibon |
9be8bd |
|
|
Pierre-Yves Chibon |
9be8bd |
# Drop deps
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.remove_issue_dependency(
|
|
Pierre-Yves Chibon |
9be8bd |
session=self.session,
|
|
Pierre-Yves Chibon |
9be8bd |
issue=issue_blocked,
|
|
Pierre-Yves Chibon |
9be8bd |
issue_blocked=issue,
|
|
Pierre-Yves Chibon |
9be8bd |
user='pingou',
|
|
Pierre-Yves Chibon |
9be8bd |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
9be8bd |
self.session.commit()
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(msg, 'Issue **un**marked as depending on: #1')
|
|
Pierre-Yves Chibon |
9be8bd |
|
|
Pierre-Yves Chibon |
9be8bd |
# After
|
|
Pierre-Yves Chibon |
9be8bd |
self.assertEqual(issue.parents, [])
|
|
Pierre-Yves Chibon |
9be8bd |
self.assertEqual(issue.children, [])
|
|
Pierre-Yves Chibon |
9be8bd |
self.assertEqual(issue_blocked.parents, [])
|
|
Pierre-Yves Chibon |
9be8bd |
self.assertEqual(issue_blocked.children, [])
|
|
Pierre-Yves Chibon |
9be8bd |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
f553ea |
def test_get_issue_comment(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the get_issue_comment of pagure.lib. """
|
|
Pierre-Yves Chibon |
f553ea |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
f553ea |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
f553ea |
|
|
Pierre-Yves Chibon |
f553ea |
self.test_add_issue_comment()
|
|
Pierre-Yves Chibon |
f553ea |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
f553ea |
|
|
Pierre-Yves Chibon |
f553ea |
self.assertEqual(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.get_issue_comment(self.session, issue.uid, 10),
|
|
Pierre-Yves Chibon |
f553ea |
None
|
|
Pierre-Yves Chibon |
f553ea |
)
|
|
Pierre-Yves Chibon |
f553ea |
|
|
Pierre-Yves Chibon |
fe5017 |
comment = pagure.lib.get_issue_comment(self.session, issue.uid, 1)
|
|
Pierre-Yves Chibon |
f553ea |
self.assertEqual(comment.comment, 'Hey look a comment!')
|
|
Pierre-Yves Chibon |
f553ea |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
901a51 |
def test_get_issue_by_uid(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the get_issue_by_uid of pagure.lib. """
|
|
Pierre-Yves Chibon |
901a51 |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
901a51 |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
901a51 |
|
|
Pierre-Yves Chibon |
901a51 |
self.test_new_issue()
|
|
Pierre-Yves Chibon |
901a51 |
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
901a51 |
|
|
Pierre-Yves Chibon |
901a51 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
fe5017 |
pagure.lib.get_issue_by_uid(self.session, 'foobar'),
|
|
Pierre-Yves Chibon |
901a51 |
None
|
|
Pierre-Yves Chibon |
901a51 |
)
|
|
Pierre-Yves Chibon |
901a51 |
|
|
Pierre-Yves Chibon |
fe5017 |
new_issue = pagure.lib.get_issue_by_uid(self.session, issue.uid)
|
|
Pierre-Yves Chibon |
901a51 |
self.assertEqual(issue, new_issue)
|
|
Pierre-Yves Chibon |
901a51 |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
cb4bd1 |
def test_update_tags(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
cb4bd1 |
""" Test the update_tags of pagure.lib. """
|
|
Pierre-Yves Chibon |
f93600 |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
f93600 |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
f93600 |
|
|
Pierre-Yves Chibon |
f93600 |
self.test_new_issue()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
f93600 |
|
|
Pierre-Yves Chibon |
f93600 |
# before
|
|
Pierre-Yves Chibon |
f7576b |
self.assertEqual(repo.tags_colored, [])
|
|
Pierre-Yves Chibon |
f93600 |
self.assertEqual(issue.tags_text, [])
|
|
Pierre-Yves Chibon |
f93600 |
|
|
Mark Reynolds |
eabdc8 |
messages = pagure.lib.update_tags(
|
|
Pierre-Yves Chibon |
ef1fe1 |
self.session, issue, 'tag', 'pingou', gitfolder=None)
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(messages, ['Issue tagged with: tag'])
|
|
Pierre-Yves Chibon |
f7576b |
|
|
Pierre-Yves Chibon |
f7576b |
# after
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
f7576b |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
f7576b |
|
|
Pierre-Yves Chibon |
f7576b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
f7576b |
[t.tag for t in repo.tags_colored], ['tag'])
|
|
Pierre-Yves Chibon |
f7576b |
self.assertEqual(issue.tags_text, ['tag'])
|
|
Pierre-Yves Chibon |
f7576b |
|
|
Pierre-Yves Chibon |
f7576b |
# Replace the tag by two others
|
|
Mark Reynolds |
eabdc8 |
messages = pagure.lib.update_tags(
|
|
Pierre-Yves Chibon |
f93600 |
self.session, issue, ['tag2', 'tag3'], 'pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Pierre-Yves Chibon |
f93600 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a18547 |
messages, [
|
|
Pierre-Yves Chibon |
a18547 |
'Issue tagged with: tag2, tag3',
|
|
Pierre-Yves Chibon |
a18547 |
'Issue **un**tagged with: tag'
|
|
Pierre-Yves Chibon |
a18547 |
]
|
|
Pierre-Yves Chibon |
a18547 |
)
|
|
Pierre-Yves Chibon |
f93600 |
|
|
Pierre-Yves Chibon |
f93600 |
# after
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
f7576b |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
f7576b |
|
|
Pierre-Yves Chibon |
f7576b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
f7576b |
sorted([t.tag for t in repo.tags_colored]),
|
|
Pierre-Yves Chibon |
f7576b |
['tag', 'tag2', 'tag3'])
|
|
Aurélien Bompard |
f61bb3 |
self.assertEqual(sorted(issue.tags_text), ['tag2', 'tag3'])
|
|
Pierre-Yves Chibon |
bd6684 |
|
|
Pierre-Yves Chibon |
f7576b |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
13128f |
def test_update_dependency_issue(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the update_dependency_issue of pagure.lib. """
|
|
Pierre-Yves Chibon |
13128f |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
13128f |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
13128f |
|
|
Pierre-Yves Chibon |
13128f |
self.test_new_issue()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
13128f |
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets, 2)
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
29d753 |
|
|
Pierre-Yves Chibon |
13128f |
# Create issues to play with
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
13128f |
session=self.session,
|
|
Pierre-Yves Chibon |
13128f |
repo=repo,
|
|
Pierre-Yves Chibon |
13128f |
title='Test issue #3',
|
|
Pierre-Yves Chibon |
13128f |
content='We should work on this (3rd time!)',
|
|
Pierre-Yves Chibon |
13128f |
user='pingou',
|
|
Pierre-Yves Chibon |
13128f |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
13128f |
private=True,
|
|
Pierre-Yves Chibon |
13128f |
)
|
|
Pierre-Yves Chibon |
13128f |
self.session.commit()
|
|
Pierre-Yves Chibon |
11d78c |
self.assertEqual(msg.title, 'Test issue #3')
|
|
Pierre-Yves Chibon |
13128f |
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets, 3)
|
|
Pierre-Yves Chibon |
3c5ebc |
self.assertEqual(repo.open_tickets_public, 2)
|
|
Pierre-Yves Chibon |
29d753 |
|
|
Pierre-Yves Chibon |
13128f |
# before
|
|
Pierre-Yves Chibon |
13128f |
self.assertEqual(issue.tags_text, [])
|
|
Pierre-Yves Chibon |
215f54 |
self.assertEqual(issue.depending_text, [])
|
|
Pierre-Yves Chibon |
215f54 |
self.assertEqual(issue.blocking_text, [])
|
|
Pierre-Yves Chibon |
13128f |
|
|
Mark Reynolds |
eabdc8 |
messages = pagure.lib.update_dependency_issue(
|
|
Pierre-Yves Chibon |
a18547 |
self.session, repo, issue, '2', 'pingou', ticketfolder=None)
|
|
Pierre-Yves Chibon |
a18547 |
self.assertEqual(messages, ['Issue marked as depending on: #2'])
|
|
Mark Reynolds |
eabdc8 |
messages = pagure.lib.update_dependency_issue(
|
|
Pierre-Yves Chibon |
544331 |
self.session, repo, issue, ['3', '4', 5], 'pingou',
|
|
Pierre-Yves Chibon |
a18547 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
13128f |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a18547 |
messages,
|
|
Pierre-Yves Chibon |
a18547 |
[
|
|
Pierre-Yves Chibon |
a18547 |
'Issue marked as depending on: #3',
|
|
Pierre-Yves Chibon |
a18547 |
'Issue marked as depending on: #4',
|
|
Pierre-Yves Chibon |
a18547 |
'Issue marked as depending on: #5',
|
|
Pierre-Yves Chibon |
a18547 |
'Issue **un**marked as depending on: #2'
|
|
Pierre-Yves Chibon |
a18547 |
]
|
|
Pierre-Yves Chibon |
a18547 |
)
|
|
Pierre-Yves Chibon |
13128f |
|
|
Pierre-Yves Chibon |
13128f |
# after
|
|
Pierre-Yves Chibon |
13128f |
self.assertEqual(issue.tags_text, [])
|
|
Pierre-Yves Chibon |
215f54 |
self.assertEqual(issue.depending_text, [3])
|
|
Pierre-Yves Chibon |
215f54 |
self.assertEqual(issue.blocking_text, [])
|
|
Pierre-Yves Chibon |
13128f |
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
fe5017 |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
7476fa |
def test_update_blocked_issue(self, p_send_email, p_ugt):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Test the update_blocked_issue of pagure.lib. """
|
|
Pierre-Yves Chibon |
7476fa |
p_send_email.return_value = True
|
|
Pierre-Yves Chibon |
7476fa |
p_ugt.return_value = True
|
|
Pierre-Yves Chibon |
7476fa |
|
|
Pierre-Yves Chibon |
7476fa |
self.test_new_issue()
|
|
Farhaan Bukhsh |
481209 |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
fe5017 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Pierre-Yves Chibon |
7476fa |
|
|
Pierre-Yves Chibon |
7476fa |
# Create issues to play with
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
7476fa |
session=self.session,
|
|
Pierre-Yves Chibon |
7476fa |
repo=repo,
|
|
Pierre-Yves Chibon |
7476fa |
title='Test issue #3',
|
|
Pierre-Yves Chibon |
7476fa |
content='We should work on this (3rd time!)',
|
|
Pierre-Yves Chibon |
7476fa |
user='pingou',
|
|
Pierre-Yves Chibon |
7476fa |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
7476fa |
private=True,
|
|
Pierre-Yves Chibon |
7476fa |
)
|
|
Pierre-Yves Chibon |
7476fa |
self.session.commit()
|
|
Pierre-Yves Chibon |
11d78c |
self.assertEqual(msg.title, 'Test issue #3')
|
|
Pierre-Yves Chibon |
7476fa |
|
|
Pierre-Yves Chibon |
7476fa |
# before
|
|
Pierre-Yves Chibon |
7476fa |
self.assertEqual(issue.tags_text, [])
|
|
Pierre-Yves Chibon |
215f54 |
self.assertEqual(issue.depending_text, [])
|
|
Pierre-Yves Chibon |
215f54 |
self.assertEqual(issue.blocking_text, [])
|
|
Pierre-Yves Chibon |
7476fa |
|
|
Mark Reynolds |
eabdc8 |
messages = pagure.lib.update_blocked_issue(
|
|
Pierre-Yves Chibon |
a18547 |
self.session, repo, issue, '2', 'pingou', ticketfolder=None)
|
|
Pierre-Yves Chibon |
7edec8 |
self.assertEqual(messages, ['Issue marked as blocking: #2'])
|
|
Mark Reynolds |
eabdc8 |
messages = pagure.lib.update_blocked_issue(
|
|
Pierre-Yves Chibon |
7476fa |
self.session, repo, issue, ['3', '4', 5], 'pingou',
|
|
Pierre-Yves Chibon |
a18547 |
ticketfolder=None)
|
|
Pierre-Yves Chibon |
7476fa |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a18547 |
messages, [
|
|
Pierre-Yves Chibon |
a8a5f4 |
'Issue marked as blocking: #3',
|
|
Pierre-Yves Chibon |
a8a5f4 |
'Issue marked as blocking: #4',
|
|
Pierre-Yves Chibon |
a8a5f4 |
'Issue marked as blocking: #5',
|
|
Pierre-Yves Chibon |
a8a5f4 |
'Issue **un**marked as blocking: #2'])
|
|
Pierre-Yves Chibon |
7476fa |
|
|
Pierre-Yves Chibon |
7476fa |
# after
|
|
Pierre-Yves Chibon |
7476fa |
self.assertEqual(issue.tags_text, [])
|
|
Pierre-Yves Chibon |
215f54 |
self.assertEqual(issue.depending_text, [])
|
|
Pierre-Yves Chibon |
215f54 |
self.assertEqual(issue.blocking_text, [3])
|
|
Pierre-Yves Chibon |
7476fa |
|
|
Pierre-Yves Chibon |
356ddd |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
356ddd |
def test_add_pull_request_assignee(self, mockemail):
|
|
Pierre-Yves Chibon |
356ddd |
""" Test add_pull_request_assignee of pagure.lib. """
|
|
Pierre-Yves Chibon |
356ddd |
mockemail.return_value = True
|
|
Pierre-Yves Chibon |
356ddd |
|
|
Pierre-Yves Chibon |
356ddd |
self.test_new_pull_request()
|
|
Pierre-Yves Chibon |
356ddd |
|
|
Pierre-Yves Chibon |
356ddd |
request = pagure.lib.search_pull_requests(self.session, requestid=1)
|
|
Pierre-Yves Chibon |
356ddd |
|
|
Pierre-Yves Chibon |
356ddd |
self.assertRaises(
|
|
Pierre-Yves Chibon |
356ddd |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
356ddd |
pagure.lib.add_pull_request_assignee,
|
|
Pierre-Yves Chibon |
356ddd |
session=self.session,
|
|
Pierre-Yves Chibon |
356ddd |
request=request,
|
|
Pierre-Yves Chibon |
356ddd |
assignee='bar',
|
|
Pierre-Yves Chibon |
356ddd |
user='foo',
|
|
Pierre-Yves Chibon |
356ddd |
requestfolder=None,
|
|
Pierre-Yves Chibon |
356ddd |
)
|
|
Pierre-Yves Chibon |
356ddd |
|
|
Pierre-Yves Chibon |
356ddd |
# Assign
|
|
Pierre-Yves Chibon |
356ddd |
msg = pagure.lib.add_pull_request_assignee(
|
|
Pierre-Yves Chibon |
356ddd |
session=self.session,
|
|
Pierre-Yves Chibon |
356ddd |
request=request,
|
|
Pierre-Yves Chibon |
356ddd |
assignee='pingou',
|
|
Pierre-Yves Chibon |
356ddd |
user='foo',
|
|
Pierre-Yves Chibon |
356ddd |
requestfolder=None,
|
|
Pierre-Yves Chibon |
356ddd |
)
|
|
Pierre-Yves Chibon |
356ddd |
self.assertEqual(msg, 'Request assigned')
|
|
Pierre-Yves Chibon |
356ddd |
|
|
Pierre-Yves Chibon |
356ddd |
# Reset
|
|
Pierre-Yves Chibon |
356ddd |
msg = pagure.lib.add_pull_request_assignee(
|
|
Pierre-Yves Chibon |
356ddd |
session=self.session,
|
|
Pierre-Yves Chibon |
356ddd |
request=request,
|
|
Pierre-Yves Chibon |
356ddd |
assignee=None,
|
|
Pierre-Yves Chibon |
356ddd |
user='foo',
|
|
Pierre-Yves Chibon |
356ddd |
requestfolder=None,
|
|
Pierre-Yves Chibon |
356ddd |
)
|
|
Pierre-Yves Chibon |
356ddd |
self.assertEqual(msg, 'Request reset')
|
|
Pierre-Yves Chibon |
356ddd |
|
|
Pierre-Yves Chibon |
356ddd |
# Try resetting again
|
|
Pierre-Yves Chibon |
356ddd |
msg = pagure.lib.add_pull_request_assignee(
|
|
Pierre-Yves Chibon |
356ddd |
session=self.session,
|
|
Pierre-Yves Chibon |
356ddd |
request=request,
|
|
Pierre-Yves Chibon |
356ddd |
assignee=None,
|
|
Pierre-Yves Chibon |
356ddd |
user='foo',
|
|
Pierre-Yves Chibon |
356ddd |
requestfolder=None,
|
|
Pierre-Yves Chibon |
356ddd |
)
|
|
Pierre-Yves Chibon |
356ddd |
self.assertEqual(msg, None)
|
|
Pierre-Yves Chibon |
356ddd |
|
|
Pierre-Yves Chibon |
04800a |
def test_search_pending_email(self):
|
|
Pierre-Yves Chibon |
04800a |
""" Test search_pending_email of pagure.lib. """
|
|
Pierre-Yves Chibon |
04800a |
|
|
Pierre-Yves Chibon |
04800a |
self.assertEqual(
|
|
Pierre-Yves Chibon |
04800a |
pagure.lib.search_pending_email(self.session), None)
|
|
Pierre-Yves Chibon |
04800a |
|
|
Pierre-Yves Chibon |
04800a |
user = pagure.lib.search_user(self.session, username='pingou')
|
|
Pierre-Yves Chibon |
04800a |
|
|
Pierre-Yves Chibon |
04800a |
email_pend = pagure.lib.model.UserEmailPending(
|
|
Pierre-Yves Chibon |
04800a |
user_id=user.id,
|
|
Pierre-Yves Chibon |
04800a |
email='foo@fp.o',
|
|
Pierre-Yves Chibon |
04800a |
token='abcdef',
|
|
Pierre-Yves Chibon |
04800a |
)
|
|
Pierre-Yves Chibon |
04800a |
self.session.add(email_pend)
|
|
Pierre-Yves Chibon |
04800a |
self.session.commit()
|
|
Pierre-Yves Chibon |
04800a |
|
|
Pierre-Yves Chibon |
04800a |
self.assertNotEqual(
|
|
Pierre-Yves Chibon |
04800a |
pagure.lib.search_pending_email(self.session), None)
|
|
Pierre-Yves Chibon |
04800a |
self.assertNotEqual(
|
|
Pierre-Yves Chibon |
04800a |
pagure.lib.search_pending_email(self.session, token='abcdef'),
|
|
Pierre-Yves Chibon |
04800a |
None)
|
|
Pierre-Yves Chibon |
04800a |
|
|
Pierre-Yves Chibon |
04800a |
pend = pagure.lib.search_pending_email(self.session, token='abcdef')
|
|
Pierre-Yves Chibon |
04800a |
self.assertEqual(pend.user.username, 'pingou')
|
|
Pierre-Yves Chibon |
04800a |
self.assertEqual(pend.email, 'foo@fp.o')
|
|
Pierre-Yves Chibon |
04800a |
self.assertEqual(pend.token, 'abcdef')
|
|
Pierre-Yves Chibon |
04800a |
|
|
Pierre-Yves Chibon |
04800a |
pend = pagure.lib.search_pending_email(self.session, email='foo@fp.o')
|
|
Pierre-Yves Chibon |
04800a |
self.assertEqual(pend.user.username, 'pingou')
|
|
Pierre-Yves Chibon |
04800a |
self.assertEqual(pend.email, 'foo@fp.o')
|
|
Pierre-Yves Chibon |
04800a |
self.assertEqual(pend.token, 'abcdef')
|
|
Pierre-Yves Chibon |
04800a |
|
|
Pierre-Yves Chibon |
f2452d |
def test_generate_hook_token(self):
|
|
Pierre-Yves Chibon |
f2452d |
""" Test generate_hook_token of pagure.lib. """
|
|
Pierre-Yves Chibon |
f2452d |
|
|
Pierre-Yves Chibon |
f2452d |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
f2452d |
|
|
Pierre-Yves Chibon |
f2452d |
projects = pagure.lib.search_projects(self.session)
|
|
Pierre-Yves Chibon |
f2452d |
for proj in projects:
|
|
clime |
afed57 |
self.assertIn(proj.hook_token, ['aaabbbccc', 'aaabbbddd', 'aaabbbeee'])
|
|
Pierre-Yves Chibon |
f2452d |
|
|
Pierre-Yves Chibon |
f2452d |
pagure.lib.generate_hook_token(self.session)
|
|
Pierre-Yves Chibon |
f2452d |
|
|
Pierre-Yves Chibon |
f2452d |
projects = pagure.lib.search_projects(self.session)
|
|
Pierre-Yves Chibon |
f2452d |
for proj in projects:
|
|
clime |
afed57 |
self.assertNotIn(proj.hook_token, ['aaabbbccc', 'aaabbbddd', 'aaabbbeee'])
|
|
Pierre-Yves Chibon |
f2452d |
|
|
Pierre-Yves Chibon |
35482d |
@patch('pagure.lib.notify.send_email')
|
|
Pierre-Yves Chibon |
35482d |
def test_pull_request_score(self, mockemail):
|
|
Pierre-Yves Chibon |
35482d |
""" Test PullRequest.score of pagure.lib.model. """
|
|
Pierre-Yves Chibon |
35482d |
mockemail.return_value = True
|
|
Pierre-Yves Chibon |
35482d |
|
|
Pierre-Yves Chibon |
35482d |
self.test_new_pull_request()
|
|
Pierre-Yves Chibon |
35482d |
|
|
Pierre-Yves Chibon |
35482d |
request = pagure.lib.search_pull_requests(self.session, requestid=1)
|
|
Pierre-Yves Chibon |
35482d |
|
|
Pierre-Yves Chibon |
35482d |
msg = pagure.lib.add_pull_request_comment(
|
|
Pierre-Yves Chibon |
35482d |
session=self.session,
|
|
Pierre-Yves Chibon |
35482d |
request=request,
|
|
Pierre-Yves Chibon |
35482d |
commit=None,
|
|
Pierre-Yves Chibon |
c18b96 |
tree_id=None,
|
|
Pierre-Yves Chibon |
35482d |
filename=None,
|
|
Pierre-Yves Chibon |
35482d |
row=None,
|
|
Pierre-Yves Chibon |
35482d |
comment='This looks great :thumbsup:',
|
|
Pierre-Yves Chibon |
35482d |
user='foo',
|
|
Pierre-Yves Chibon |
35482d |
requestfolder=None,
|
|
Pierre-Yves Chibon |
35482d |
)
|
|
Pierre-Yves Chibon |
35482d |
self.session.commit()
|
|
Pierre-Yves Chibon |
35482d |
self.assertEqual(msg, 'Comment added')
|
|
Pierre-Yves Chibon |
35482d |
|
|
Pierre-Yves Chibon |
35482d |
msg = pagure.lib.add_pull_request_comment(
|
|
Pierre-Yves Chibon |
35482d |
session=self.session,
|
|
Pierre-Yves Chibon |
35482d |
request=request,
|
|
Pierre-Yves Chibon |
35482d |
commit=None,
|
|
Pierre-Yves Chibon |
c18b96 |
tree_id=None,
|
|
Pierre-Yves Chibon |
35482d |
filename=None,
|
|
Pierre-Yves Chibon |
35482d |
row=None,
|
|
Pierre-Yves Chibon |
35482d |
comment='I disagree -1',
|
|
Pierre-Yves Chibon |
35482d |
user='pingou',
|
|
Pierre-Yves Chibon |
35482d |
requestfolder=None,
|
|
Pierre-Yves Chibon |
35482d |
)
|
|
Pierre-Yves Chibon |
35482d |
self.session.commit()
|
|
Pierre-Yves Chibon |
35482d |
self.assertEqual(msg, 'Comment added')
|
|
Pierre-Yves Chibon |
35482d |
|
|
Pierre-Yves Chibon |
35482d |
msg = pagure.lib.add_pull_request_comment(
|
|
Pierre-Yves Chibon |
35482d |
session=self.session,
|
|
Pierre-Yves Chibon |
35482d |
request=request,
|
|
Pierre-Yves Chibon |
35482d |
commit=None,
|
|
Pierre-Yves Chibon |
c18b96 |
tree_id=None,
|
|
Pierre-Yves Chibon |
35482d |
filename=None,
|
|
Pierre-Yves Chibon |
35482d |
row=None,
|
|
Pierre-Yves Chibon |
35482d |
comment='NM this looks great now +1000',
|
|
Pierre-Yves Chibon |
35482d |
user='pingou',
|
|
Pierre-Yves Chibon |
35482d |
requestfolder=None,
|
|
Pierre-Yves Chibon |
35482d |
)
|
|
Pierre-Yves Chibon |
35482d |
self.session.commit()
|
|
Pierre-Yves Chibon |
35482d |
self.assertEqual(msg, 'Comment added')
|
|
Pierre-Yves Chibon |
35482d |
|
|
Pierre-Yves Chibon |
35482d |
self.assertEqual(len(request.discussion), 3)
|
|
Pierre-Yves Chibon |
35482d |
self.assertEqual(request.score, 1)
|
|
Pierre-Yves Chibon |
35482d |
|
|
Pierre-Yves Chibon |
f95fbb |
def test_add_group(self):
|
|
Pierre-Yves Chibon |
f95fbb |
""" Test the add_group method of pagure.lib. """
|
|
Pierre-Yves Chibon |
f95fbb |
groups = pagure.lib.search_groups(self.session)
|
|
Pierre-Yves Chibon |
f95fbb |
self.assertEqual(len(groups), 0)
|
|
Pierre-Yves Chibon |
f95fbb |
self.assertEqual(groups, [])
|
|
Pierre-Yves Chibon |
f95fbb |
|
|
Pierre-Yves Chibon |
f95fbb |
# Invalid type
|
|
Pierre-Yves Chibon |
f95fbb |
self.assertRaises(
|
|
Pierre-Yves Chibon |
f95fbb |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
f95fbb |
pagure.lib.add_group,
|
|
Pierre-Yves Chibon |
f95fbb |
self.session,
|
|
Pierre-Yves Chibon |
f95fbb |
group_name='foo',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='foo group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
f95fbb |
group_type='bar',
|
|
Pierre-Yves Chibon |
f95fbb |
user='pingou',
|
|
Pierre-Yves Chibon |
f95fbb |
is_admin=True,
|
|
Pierre-Yves Chibon |
d4d101 |
blacklist=[],
|
|
Pierre-Yves Chibon |
f95fbb |
)
|
|
Pierre-Yves Chibon |
b5714b |
groups = pagure.lib.search_groups(self.session)
|
|
Pierre-Yves Chibon |
b5714b |
self.assertEqual(len(groups), 0)
|
|
Pierre-Yves Chibon |
b5714b |
self.assertEqual(groups, [])
|
|
Pierre-Yves Chibon |
f95fbb |
|
|
Pierre-Yves Chibon |
f95fbb |
# Invalid user
|
|
Pierre-Yves Chibon |
f95fbb |
self.assertRaises(
|
|
Pierre-Yves Chibon |
f95fbb |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
f95fbb |
pagure.lib.add_group,
|
|
Pierre-Yves Chibon |
f95fbb |
self.session,
|
|
Pierre-Yves Chibon |
f95fbb |
group_name='foo',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='foo group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
f95fbb |
group_type='user',
|
|
Pierre-Yves Chibon |
f95fbb |
user='test',
|
|
Pierre-Yves Chibon |
f95fbb |
is_admin=False,
|
|
Pierre-Yves Chibon |
d4d101 |
blacklist=[],
|
|
Pierre-Yves Chibon |
f95fbb |
)
|
|
Pierre-Yves Chibon |
b5714b |
groups = pagure.lib.search_groups(self.session)
|
|
Pierre-Yves Chibon |
b5714b |
self.assertEqual(len(groups), 0)
|
|
Pierre-Yves Chibon |
b5714b |
self.assertEqual(groups, [])
|
|
Pierre-Yves Chibon |
f95fbb |
|
|
Pierre-Yves Chibon |
a3901b |
# Invalid group name
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.add_group,
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
group_name='foo group',
|
|
Pierre-Yves Chibon |
a3901b |
display_name='foo group',
|
|
Pierre-Yves Chibon |
a3901b |
description=None,
|
|
Pierre-Yves Chibon |
a3901b |
group_type='user',
|
|
Pierre-Yves Chibon |
a3901b |
user='test',
|
|
Pierre-Yves Chibon |
a3901b |
is_admin=False,
|
|
Pierre-Yves Chibon |
a3901b |
blacklist=[],
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
groups = pagure.lib.search_groups(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(groups), 0)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(groups, [])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
f95fbb |
msg = pagure.lib.add_group(
|
|
Pierre-Yves Chibon |
f95fbb |
self.session,
|
|
Pierre-Yves Chibon |
f95fbb |
group_name='foo',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='foo group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
f95fbb |
group_type='bar',
|
|
Pierre-Yves Chibon |
f95fbb |
user='pingou',
|
|
Pierre-Yves Chibon |
f95fbb |
is_admin=False,
|
|
Pierre-Yves Chibon |
d4d101 |
blacklist=[],
|
|
Pierre-Yves Chibon |
f95fbb |
)
|
|
Pierre-Yves Chibon |
d1387c |
self.session.commit()
|
|
Pierre-Yves Chibon |
f95fbb |
self.assertEqual(msg, 'User `pingou` added to the group `foo`.')
|
|
Pierre-Yves Chibon |
f95fbb |
|
|
Pierre-Yves Chibon |
f95fbb |
groups = pagure.lib.search_groups(self.session)
|
|
Pierre-Yves Chibon |
f95fbb |
self.assertEqual(len(groups), 1)
|
|
Pierre-Yves Chibon |
f95fbb |
self.assertEqual(groups[0].group_name, 'foo')
|
|
Pierre-Yves Chibon |
f95fbb |
|
|
Pierre-Yves Chibon |
b5714b |
# Group with this name already exists
|
|
Pierre-Yves Chibon |
b5714b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
b5714b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
b5714b |
pagure.lib.add_group,
|
|
Pierre-Yves Chibon |
b5714b |
self.session,
|
|
Pierre-Yves Chibon |
b5714b |
group_name='foo',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='foo group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
b5714b |
group_type='bar',
|
|
Pierre-Yves Chibon |
b5714b |
user='pingou',
|
|
Pierre-Yves Chibon |
b5714b |
is_admin=False,
|
|
Pierre-Yves Chibon |
d4d101 |
blacklist=[],
|
|
Pierre-Yves Chibon |
d4d101 |
)
|
|
Pierre-Yves Chibon |
d4d101 |
|
|
rahul Bajaj |
23dde1 |
# Group with this display name already exists
|
|
rahul Bajaj |
23dde1 |
self.assertRaises(
|
|
rahul Bajaj |
23dde1 |
pagure.exceptions.PagureException,
|
|
rahul Bajaj |
23dde1 |
pagure.lib.add_group,
|
|
rahul Bajaj |
23dde1 |
self.session,
|
|
rahul Bajaj |
23dde1 |
group_name='foo1',
|
|
rahul Bajaj |
23dde1 |
display_name='foo group',
|
|
rahul Bajaj |
23dde1 |
description=None,
|
|
rahul Bajaj |
23dde1 |
group_type='bar',
|
|
rahul Bajaj |
23dde1 |
user='pingou',
|
|
rahul Bajaj |
23dde1 |
is_admin=False,
|
|
rahul Bajaj |
23dde1 |
blacklist=[],
|
|
rahul Bajaj |
23dde1 |
)
|
|
rahul Bajaj |
23dde1 |
|
|
Pierre-Yves Chibon |
3ce3cf |
# Group with a blacklisted prefix
|
|
Pierre-Yves Chibon |
d4d101 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
d4d101 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
d4d101 |
pagure.lib.add_group,
|
|
Pierre-Yves Chibon |
d4d101 |
self.session,
|
|
Pierre-Yves Chibon |
d4d101 |
group_name='forks',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='foo group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
d4d101 |
group_type='bar',
|
|
Pierre-Yves Chibon |
d4d101 |
user='pingou',
|
|
Pierre-Yves Chibon |
d4d101 |
is_admin=False,
|
|
Pierre-Yves Chibon |
d4d101 |
blacklist=['forks'],
|
|
Pierre-Yves Chibon |
b5714b |
)
|
|
Pierre-Yves Chibon |
b5714b |
|
|
Pierre-Yves Chibon |
6633b6 |
def test_add_user_to_group(self):
|
|
Pierre-Yves Chibon |
6633b6 |
""" Test the add_user_to_group method of pagure.lib. """
|
|
Pierre-Yves Chibon |
6633b6 |
self.test_add_group()
|
|
Pierre-Yves Chibon |
6633b6 |
group = pagure.lib.search_groups(self.session, group_name='foo')
|
|
Pierre-Yves Chibon |
6633b6 |
self.assertNotEqual(group, None)
|
|
Pierre-Yves Chibon |
6633b6 |
self.assertEqual(group.group_name, 'foo')
|
|
Pierre-Yves Chibon |
6633b6 |
|
|
Pierre-Yves Chibon |
6633b6 |
# Invalid new user
|
|
Pierre-Yves Chibon |
6633b6 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
6633b6 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
6633b6 |
pagure.lib.add_user_to_group,
|
|
Pierre-Yves Chibon |
6633b6 |
self.session,
|
|
Pierre-Yves Chibon |
6633b6 |
username='foobar',
|
|
Pierre-Yves Chibon |
6633b6 |
group=group,
|
|
Pierre-Yves Chibon |
6633b6 |
user='foo',
|
|
Pierre-Yves Chibon |
6633b6 |
is_admin=False,
|
|
Pierre-Yves Chibon |
6633b6 |
)
|
|
Pierre-Yves Chibon |
6633b6 |
|
|
Pierre-Yves Chibon |
6633b6 |
# Invalid user
|
|
Pierre-Yves Chibon |
6633b6 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
6633b6 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
6633b6 |
pagure.lib.add_user_to_group,
|
|
Pierre-Yves Chibon |
6633b6 |
self.session,
|
|
Pierre-Yves Chibon |
6633b6 |
username='foo',
|
|
Pierre-Yves Chibon |
6633b6 |
group=group,
|
|
Pierre-Yves Chibon |
6633b6 |
user='foobar',
|
|
Pierre-Yves Chibon |
6633b6 |
is_admin=False,
|
|
Pierre-Yves Chibon |
6633b6 |
)
|
|
Pierre-Yves Chibon |
6633b6 |
|
|
Pierre-Yves Chibon |
6633b6 |
# User not allowed
|
|
Pierre-Yves Chibon |
6633b6 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
6633b6 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
6633b6 |
pagure.lib.add_user_to_group,
|
|
Pierre-Yves Chibon |
6633b6 |
self.session,
|
|
Pierre-Yves Chibon |
6633b6 |
username='foo',
|
|
Pierre-Yves Chibon |
6633b6 |
group=group,
|
|
Pierre-Yves Chibon |
6633b6 |
user='foo',
|
|
Pierre-Yves Chibon |
6633b6 |
is_admin=False,
|
|
Pierre-Yves Chibon |
6633b6 |
)
|
|
Pierre-Yves Chibon |
6633b6 |
|
|
Pierre-Yves Chibon |
6633b6 |
msg = pagure.lib.add_user_to_group(
|
|
Pierre-Yves Chibon |
6633b6 |
self.session,
|
|
Pierre-Yves Chibon |
6633b6 |
username='foo',
|
|
Pierre-Yves Chibon |
6633b6 |
group=group,
|
|
Pierre-Yves Chibon |
6633b6 |
user='pingou',
|
|
Pierre-Yves Chibon |
6633b6 |
is_admin=False,
|
|
Pierre-Yves Chibon |
6633b6 |
)
|
|
Pierre-Yves Chibon |
d1387c |
self.session.commit()
|
|
Pierre-Yves Chibon |
6633b6 |
self.assertEqual(msg, 'User `foo` added to the group `foo`.')
|
|
Pierre-Yves Chibon |
6633b6 |
|
|
Pierre-Yves Chibon |
47e762 |
msg = pagure.lib.add_user_to_group(
|
|
Pierre-Yves Chibon |
47e762 |
self.session,
|
|
Pierre-Yves Chibon |
47e762 |
username='foo',
|
|
Pierre-Yves Chibon |
47e762 |
group=group,
|
|
Pierre-Yves Chibon |
47e762 |
user='pingou',
|
|
Pierre-Yves Chibon |
47e762 |
is_admin=False,
|
|
Pierre-Yves Chibon |
47e762 |
)
|
|
Pierre-Yves Chibon |
47e762 |
self.session.commit()
|
|
Pierre-Yves Chibon |
47e762 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
47e762 |
msg, 'User `foo` already in the group, nothing to change.')
|
|
Pierre-Yves Chibon |
47e762 |
|
|
Pierre-Yves Chibon |
842d49 |
def test_is_group_member(self):
|
|
Pierre-Yves Chibon |
842d49 |
""" Test the is_group_member method of pagure.lib. """
|
|
Pierre-Yves Chibon |
842d49 |
self.test_add_group()
|
|
Pierre-Yves Chibon |
842d49 |
|
|
Pierre-Yves Chibon |
842d49 |
self.assertFalse(
|
|
Pierre-Yves Chibon |
842d49 |
pagure.lib.is_group_member(self.session, None, 'foo'))
|
|
Pierre-Yves Chibon |
842d49 |
|
|
Pierre-Yves Chibon |
842d49 |
self.assertFalse(
|
|
Pierre-Yves Chibon |
842d49 |
pagure.lib.is_group_member(self.session, 'bar', 'foo'))
|
|
Pierre-Yves Chibon |
842d49 |
|
|
Pierre-Yves Chibon |
842d49 |
self.assertFalse(
|
|
Pierre-Yves Chibon |
842d49 |
pagure.lib.is_group_member(self.session, 'foo', 'foo'))
|
|
Pierre-Yves Chibon |
842d49 |
|
|
Pierre-Yves Chibon |
842d49 |
self.assertTrue(
|
|
Pierre-Yves Chibon |
842d49 |
pagure.lib.is_group_member(self.session, 'pingou', 'foo'))
|
|
Pierre-Yves Chibon |
842d49 |
|
|
Pierre-Yves Chibon |
9b9de8 |
def test_get_user_group(self):
|
|
Pierre-Yves Chibon |
9b9de8 |
""" Test the get_user_group method of pagure.lib. """
|
|
Pierre-Yves Chibon |
9b9de8 |
|
|
Pierre-Yves Chibon |
9b9de8 |
self.test_add_group()
|
|
Pierre-Yves Chibon |
9b9de8 |
|
|
Pierre-Yves Chibon |
9b9de8 |
item = pagure.lib.get_user_group(self.session, 1, 1)
|
|
Pierre-Yves Chibon |
9b9de8 |
self.assertEqual(item.user_id, 1)
|
|
Pierre-Yves Chibon |
9b9de8 |
self.assertEqual(item.group_id, 1)
|
|
Pierre-Yves Chibon |
9b9de8 |
|
|
Pierre-Yves Chibon |
9b9de8 |
item = pagure.lib.get_user_group(self.session, 1, 2)
|
|
Pierre-Yves Chibon |
9b9de8 |
self.assertEqual(item, None)
|
|
Pierre-Yves Chibon |
9b9de8 |
|
|
Pierre-Yves Chibon |
9b9de8 |
item = pagure.lib.get_user_group(self.session, 2, 1)
|
|
Pierre-Yves Chibon |
9b9de8 |
self.assertEqual(item, None)
|
|
Pierre-Yves Chibon |
9b9de8 |
|
|
Pierre-Yves Chibon |
04c71a |
def test_get_group_types(self):
|
|
Pierre-Yves Chibon |
04c71a |
""" Test the get_group_types method of pagure.lib. """
|
|
Pierre-Yves Chibon |
04c71a |
|
|
Pierre-Yves Chibon |
04c71a |
self.test_add_group()
|
|
Pierre-Yves Chibon |
04c71a |
|
|
Pierre-Yves Chibon |
04c71a |
groups = pagure.lib.get_group_types(self.session, 'user')
|
|
Pierre-Yves Chibon |
04c71a |
self.assertEqual(len(groups), 1)
|
|
Pierre-Yves Chibon |
04c71a |
self.assertEqual(groups[0].group_type, 'user')
|
|
Pierre-Yves Chibon |
04c71a |
|
|
Pierre-Yves Chibon |
04c71a |
groups = pagure.lib.get_group_types(self.session)
|
|
Pierre-Yves Chibon |
04c71a |
self.assertEqual(len(groups), 2)
|
|
Pierre-Yves Chibon |
04c71a |
self.assertEqual(groups[0].group_type, 'admin')
|
|
Pierre-Yves Chibon |
04c71a |
self.assertEqual(groups[1].group_type, 'user')
|
|
Pierre-Yves Chibon |
04c71a |
|
|
Pierre-Yves Chibon |
db1c81 |
def test_search_groups(self):
|
|
Pierre-Yves Chibon |
db1c81 |
""" Test the search_groups method of pagure.lib. """
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(pagure.lib.search_groups(self.session), [])
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
db1c81 |
msg = pagure.lib.add_group(
|
|
Pierre-Yves Chibon |
db1c81 |
self.session,
|
|
Pierre-Yves Chibon |
db1c81 |
group_name='foo',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='foo group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
db1c81 |
group_type='bar',
|
|
Pierre-Yves Chibon |
db1c81 |
user='pingou',
|
|
Pierre-Yves Chibon |
db1c81 |
is_admin=False,
|
|
Pierre-Yves Chibon |
d4d101 |
blacklist=[],
|
|
Pierre-Yves Chibon |
db1c81 |
)
|
|
Pierre-Yves Chibon |
db1c81 |
self.session.commit()
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(msg, 'User `pingou` added to the group `foo`.')
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
db1c81 |
groups = pagure.lib.search_groups(self.session)
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(len(groups), 1)
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(groups[0].group_name, 'foo')
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
db1c81 |
msg = pagure.lib.add_group(
|
|
Pierre-Yves Chibon |
db1c81 |
self.session,
|
|
Pierre-Yves Chibon |
db1c81 |
group_name='bar',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='bar group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
db1c81 |
group_type='admin',
|
|
Pierre-Yves Chibon |
db1c81 |
user='pingou',
|
|
Pierre-Yves Chibon |
db1c81 |
is_admin=True,
|
|
Pierre-Yves Chibon |
d4d101 |
blacklist=[],
|
|
Pierre-Yves Chibon |
db1c81 |
)
|
|
Pierre-Yves Chibon |
db1c81 |
self.session.commit()
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(msg, 'User `pingou` added to the group `bar`.')
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
db1c81 |
groups = pagure.lib.search_groups(self.session)
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(len(groups), 2)
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(groups[1].group_name, 'foo')
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
db1c81 |
groups = pagure.lib.search_groups(self.session, group_type='user')
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(len(groups), 1)
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(groups[0].group_name, 'foo')
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
db1c81 |
groups = pagure.lib.search_groups(self.session, group_type='admin')
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(len(groups), 1)
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
db1c81 |
groups = pagure.lib.search_groups(self.session, group_name='foo')
|
|
Pierre-Yves Chibon |
db1c81 |
self.assertEqual(groups.group_name, 'foo')
|
|
Pierre-Yves Chibon |
db1c81 |
|
|
Pierre-Yves Chibon |
07e6f8 |
def test_delete_user_of_group(self):
|
|
Pierre-Yves Chibon |
07e6f8 |
""" Test the delete_user_of_group method of pagure.lib. """
|
|
Pierre-Yves Chibon |
07e6f8 |
self.test_add_user_to_group()
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
groups = pagure.lib.search_groups(self.session)
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertEqual(len(groups), 1)
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertEqual(groups[0].group_name, 'foo')
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
# Invalid username
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.lib.delete_user_of_group,
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session,
|
|
Pierre-Yves Chibon |
07e6f8 |
username='bar',
|
|
Pierre-Yves Chibon |
07e6f8 |
groupname='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
user='pingou',
|
|
Pierre-Yves Chibon |
07e6f8 |
is_admin=False,
|
|
Pierre-Yves Chibon |
07e6f8 |
)
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
# Invalid groupname
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.lib.delete_user_of_group,
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session,
|
|
Pierre-Yves Chibon |
07e6f8 |
username='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
groupname='bar',
|
|
Pierre-Yves Chibon |
07e6f8 |
user='pingou',
|
|
Pierre-Yves Chibon |
07e6f8 |
is_admin=False,
|
|
Pierre-Yves Chibon |
07e6f8 |
)
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
# Invalid user
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.lib.delete_user_of_group,
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session,
|
|
Pierre-Yves Chibon |
07e6f8 |
username='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
groupname='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
user='test',
|
|
Pierre-Yves Chibon |
07e6f8 |
is_admin=False,
|
|
Pierre-Yves Chibon |
07e6f8 |
)
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
# User not in the group
|
|
Pierre-Yves Chibon |
07e6f8 |
item = pagure.lib.model.User(
|
|
Pierre-Yves Chibon |
07e6f8 |
user='bar',
|
|
Pierre-Yves Chibon |
07e6f8 |
fullname='bar',
|
|
Pierre-Yves Chibon |
07e6f8 |
password='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
default_email='bar@bar.com',
|
|
Pierre-Yves Chibon |
07e6f8 |
)
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
07e6f8 |
item = pagure.lib.model.UserEmail(
|
|
Pierre-Yves Chibon |
07e6f8 |
user_id=3,
|
|
Pierre-Yves Chibon |
07e6f8 |
email='bar@bar.com')
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session.commit()
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.lib.delete_user_of_group,
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session,
|
|
Pierre-Yves Chibon |
07e6f8 |
username='bar',
|
|
Pierre-Yves Chibon |
07e6f8 |
groupname='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
user='pingou',
|
|
Pierre-Yves Chibon |
07e6f8 |
is_admin=False,
|
|
Pierre-Yves Chibon |
07e6f8 |
)
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
# User is not allowed to remove the username
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.lib.delete_user_of_group,
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session,
|
|
Pierre-Yves Chibon |
07e6f8 |
username='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
groupname='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
user='bar',
|
|
Pierre-Yves Chibon |
07e6f8 |
is_admin=False,
|
|
Pierre-Yves Chibon |
07e6f8 |
)
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
# Username is the creator of the group
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.lib.delete_user_of_group,
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session,
|
|
Pierre-Yves Chibon |
07e6f8 |
username='pingou',
|
|
Pierre-Yves Chibon |
07e6f8 |
groupname='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
user='pingou',
|
|
Pierre-Yves Chibon |
07e6f8 |
is_admin=False,
|
|
Pierre-Yves Chibon |
07e6f8 |
)
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
# All good
|
|
Pierre-Yves Chibon |
07e6f8 |
group = pagure.lib.search_groups(self.session, group_name='foo')
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertEqual(len(group.users), 2)
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
pagure.lib.delete_user_of_group(
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session,
|
|
Pierre-Yves Chibon |
07e6f8 |
username='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
groupname='foo',
|
|
Pierre-Yves Chibon |
07e6f8 |
user='pingou',
|
|
Pierre-Yves Chibon |
07e6f8 |
is_admin=False,
|
|
Pierre-Yves Chibon |
07e6f8 |
)
|
|
Pierre-Yves Chibon |
07e6f8 |
self.session.commit()
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
07e6f8 |
group = pagure.lib.search_groups(self.session, group_name='foo')
|
|
Pierre-Yves Chibon |
07e6f8 |
self.assertEqual(len(group.users), 1)
|
|
Pierre-Yves Chibon |
07e6f8 |
|
|
Pierre-Yves Chibon |
0148d9 |
def test_edit_group_info(self):
|
|
Pierre-Yves Chibon |
0148d9 |
""" Test the edit_group_info method of pagure.lib. """
|
|
Pierre-Yves Chibon |
0148d9 |
self.test_add_group()
|
|
Pierre-Yves Chibon |
0148d9 |
group = pagure.lib.search_groups(self.session, group_name='foo')
|
|
Pierre-Yves Chibon |
0148d9 |
self.assertNotEqual(group, None)
|
|
Pierre-Yves Chibon |
0148d9 |
self.assertEqual(group.group_name, 'foo')
|
|
Pierre-Yves Chibon |
0148d9 |
|
|
Pierre-Yves Chibon |
0148d9 |
# Invalid new user
|
|
Pierre-Yves Chibon |
0148d9 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
0148d9 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
0148d9 |
pagure.lib.edit_group_info,
|
|
Pierre-Yves Chibon |
0148d9 |
self.session,
|
|
Pierre-Yves Chibon |
0148d9 |
group=group,
|
|
Pierre-Yves Chibon |
0148d9 |
display_name='edited name',
|
|
Pierre-Yves Chibon |
0148d9 |
description=None,
|
|
Pierre-Yves Chibon |
0148d9 |
user='foo',
|
|
Pierre-Yves Chibon |
0148d9 |
is_admin=False,
|
|
Pierre-Yves Chibon |
0148d9 |
)
|
|
Pierre-Yves Chibon |
0148d9 |
|
|
Pierre-Yves Chibon |
0148d9 |
# Invalid user
|
|
Pierre-Yves Chibon |
0148d9 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
0148d9 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
0148d9 |
pagure.lib.edit_group_info,
|
|
Pierre-Yves Chibon |
0148d9 |
self.session,
|
|
Pierre-Yves Chibon |
0148d9 |
group=group,
|
|
Pierre-Yves Chibon |
0148d9 |
display_name='edited name',
|
|
Pierre-Yves Chibon |
0148d9 |
description=None,
|
|
Pierre-Yves Chibon |
0148d9 |
user='foobar',
|
|
Pierre-Yves Chibon |
0148d9 |
is_admin=False,
|
|
Pierre-Yves Chibon |
0148d9 |
)
|
|
Pierre-Yves Chibon |
0148d9 |
|
|
Pierre-Yves Chibon |
0148d9 |
# User not allowed
|
|
Pierre-Yves Chibon |
0148d9 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
0148d9 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
0148d9 |
pagure.lib.edit_group_info,
|
|
Pierre-Yves Chibon |
0148d9 |
self.session,
|
|
Pierre-Yves Chibon |
0148d9 |
group=group,
|
|
Pierre-Yves Chibon |
0148d9 |
display_name='edited name',
|
|
Pierre-Yves Chibon |
0148d9 |
description=None,
|
|
Pierre-Yves Chibon |
0148d9 |
user='bar',
|
|
Pierre-Yves Chibon |
0148d9 |
is_admin=False,
|
|
Pierre-Yves Chibon |
0148d9 |
)
|
|
Pierre-Yves Chibon |
0148d9 |
|
|
Pierre-Yves Chibon |
0148d9 |
msg = pagure.lib.edit_group_info(
|
|
Pierre-Yves Chibon |
0148d9 |
self.session,
|
|
Pierre-Yves Chibon |
0148d9 |
group=group,
|
|
Pierre-Yves Chibon |
0148d9 |
display_name='edited name',
|
|
Pierre-Yves Chibon |
0148d9 |
description=None,
|
|
Pierre-Yves Chibon |
0148d9 |
user='pingou',
|
|
Pierre-Yves Chibon |
0148d9 |
is_admin=False,
|
|
Pierre-Yves Chibon |
0148d9 |
)
|
|
Pierre-Yves Chibon |
0148d9 |
self.session.commit()
|
|
Pierre-Yves Chibon |
0148d9 |
self.assertEqual(msg, 'Group "edited name" (foo) edited')
|
|
Pierre-Yves Chibon |
0148d9 |
|
|
Pierre-Yves Chibon |
0148d9 |
msg = pagure.lib.edit_group_info(
|
|
Pierre-Yves Chibon |
0148d9 |
self.session,
|
|
Pierre-Yves Chibon |
0148d9 |
group=group,
|
|
Pierre-Yves Chibon |
0148d9 |
display_name='edited name',
|
|
Pierre-Yves Chibon |
0148d9 |
description=None,
|
|
Pierre-Yves Chibon |
0148d9 |
user='pingou',
|
|
Pierre-Yves Chibon |
0148d9 |
is_admin=False,
|
|
Pierre-Yves Chibon |
0148d9 |
)
|
|
Pierre-Yves Chibon |
0148d9 |
self.session.commit()
|
|
Pierre-Yves Chibon |
0148d9 |
self.assertEqual(msg, 'Nothing changed')
|
|
Pierre-Yves Chibon |
0148d9 |
|
|
Pierre-Yves Chibon |
421eb9 |
def test_add_group_to_project(self):
|
|
Pierre-Yves Chibon |
421eb9 |
""" Test the add_group_to_project method of pagure.lib. """
|
|
Pierre-Yves Chibon |
421eb9 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
421eb9 |
self.test_add_group()
|
|
Pierre-Yves Chibon |
421eb9 |
|
|
Farhaan Bukhsh |
481209 |
project = pagure.lib._get_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
421eb9 |
|
|
Pierre-Yves Chibon |
421eb9 |
# Group does not exist
|
|
Pierre-Yves Chibon |
421eb9 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
421eb9 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
421eb9 |
pagure.lib.add_group_to_project,
|
|
Pierre-Yves Chibon |
421eb9 |
session=self.session,
|
|
Pierre-Yves Chibon |
421eb9 |
project=project,
|
|
Pierre-Yves Chibon |
421eb9 |
new_group='bar',
|
|
Pierre-Yves Chibon |
421eb9 |
user='foo',
|
|
Pierre-Yves Chibon |
421eb9 |
)
|
|
Pierre-Yves Chibon |
421eb9 |
|
|
Pierre-Yves Chibon |
a3901b |
# Group does not exist, but allow creating it
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.add_group_to_project(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
new_group='bar',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
create=True,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Group added')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.admin_groups), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.admin_groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
421eb9 |
# User does not exist
|
|
Pierre-Yves Chibon |
421eb9 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
421eb9 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
421eb9 |
pagure.lib.add_group_to_project,
|
|
Pierre-Yves Chibon |
421eb9 |
session=self.session,
|
|
Pierre-Yves Chibon |
421eb9 |
project=project,
|
|
Pierre-Yves Chibon |
421eb9 |
new_group='foo',
|
|
Pierre-Yves Chibon |
421eb9 |
user='bar',
|
|
Pierre-Yves Chibon |
421eb9 |
)
|
|
Pierre-Yves Chibon |
421eb9 |
|
|
Pierre-Yves Chibon |
421eb9 |
# User not allowed
|
|
Pierre-Yves Chibon |
421eb9 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
421eb9 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
421eb9 |
pagure.lib.add_group_to_project,
|
|
Pierre-Yves Chibon |
421eb9 |
session=self.session,
|
|
Pierre-Yves Chibon |
421eb9 |
project=project,
|
|
Pierre-Yves Chibon |
421eb9 |
new_group='foo',
|
|
Pierre-Yves Chibon |
421eb9 |
user='foo',
|
|
Pierre-Yves Chibon |
421eb9 |
)
|
|
Pierre-Yves Chibon |
421eb9 |
|
|
Pierre-Yves Chibon |
421eb9 |
# All good
|
|
Pierre-Yves Chibon |
421eb9 |
msg = pagure.lib.add_group_to_project(
|
|
Pierre-Yves Chibon |
421eb9 |
session=self.session,
|
|
Pierre-Yves Chibon |
421eb9 |
project=project,
|
|
Pierre-Yves Chibon |
421eb9 |
new_group='foo',
|
|
Pierre-Yves Chibon |
421eb9 |
user='pingou',
|
|
Pierre-Yves Chibon |
421eb9 |
)
|
|
Pierre-Yves Chibon |
421eb9 |
self.session.commit()
|
|
Pierre-Yves Chibon |
421eb9 |
self.assertEqual(msg, 'Group added')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.groups[1].group_name, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.admin_groups), 2)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.admin_groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.admin_groups[1].group_name, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.committer_groups), 2)
|
|
Pierre-Yves Chibon |
421eb9 |
|
|
Pierre-Yves Chibon |
421eb9 |
# Group already associated with the project
|
|
Pierre-Yves Chibon |
421eb9 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
421eb9 |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
421eb9 |
pagure.lib.add_group_to_project,
|
|
Pierre-Yves Chibon |
421eb9 |
session=self.session,
|
|
Pierre-Yves Chibon |
421eb9 |
project=project,
|
|
Pierre-Yves Chibon |
421eb9 |
new_group='foo',
|
|
Pierre-Yves Chibon |
421eb9 |
user='pingou',
|
|
Pierre-Yves Chibon |
421eb9 |
)
|
|
Pierre-Yves Chibon |
421eb9 |
|
|
Vivek Anand |
8eadb3 |
# Update the access of group in the project
|
|
Vivek Anand |
8eadb3 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
8eadb3 |
session=self.session,
|
|
Vivek Anand |
8eadb3 |
project=project,
|
|
Vivek Anand |
8eadb3 |
new_group='foo',
|
|
Vivek Anand |
8eadb3 |
user='pingou',
|
|
Vivek Anand |
8eadb3 |
access='commit'
|
|
Vivek Anand |
8eadb3 |
)
|
|
Vivek Anand |
8eadb3 |
self.session.commit()
|
|
Vivek Anand |
8eadb3 |
self.assertEqual(msg, 'Group access updated')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.groups[1].group_name, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.admin_groups), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.admin_groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.committer_groups), 2)
|
|
Vivek Anand |
8eadb3 |
|
|
Vivek Anand |
375b47 |
# Update the access of group in the project
|
|
Vivek Anand |
375b47 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
375b47 |
session=self.session,
|
|
Vivek Anand |
375b47 |
project=project,
|
|
Vivek Anand |
375b47 |
new_group='foo',
|
|
Vivek Anand |
375b47 |
user='pingou',
|
|
Vivek Anand |
375b47 |
access='ticket'
|
|
Vivek Anand |
375b47 |
)
|
|
Vivek Anand |
375b47 |
self.session.commit()
|
|
Vivek Anand |
375b47 |
self.assertEqual(msg, 'Group access updated')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.groups[1].group_name, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.admin_groups), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.admin_groups[0].group_name, 'bar')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.committer_groups), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.committer_groups[0].group_name, 'bar')
|
|
Vivek Anand |
375b47 |
|
|
Gaurav Kumar |
cece6f |
def test_update_watch_status(self):
|
|
Gaurav Kumar |
cece6f |
""" Test the update_watch_status method of pagure.lib. """
|
|
Gaurav Kumar |
cece6f |
tests.create_projects(self.session)
|
|
Gaurav Kumar |
cece6f |
|
|
Farhaan Bukhsh |
481209 |
project = pagure.lib._get_project(self.session, 'test')
|
|
Gaurav Kumar |
cece6f |
|
|
Gaurav Kumar |
cece6f |
# User does not exist
|
|
Gaurav Kumar |
cece6f |
self.assertRaises(
|
|
Gaurav Kumar |
cece6f |
pagure.exceptions.PagureException,
|
|
Gaurav Kumar |
cece6f |
pagure.lib.update_watch_status,
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
cece6f |
project=project,
|
|
Gaurav Kumar |
cece6f |
user='aavrug',
|
|
Matt Prahl |
b49f93 |
watch='1',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Gaurav Kumar |
cece6f |
|
|
Matt Prahl |
b49f93 |
# Invalid watch status
|
|
Matt Prahl |
b49f93 |
self.assertRaises(
|
|
Matt Prahl |
b49f93 |
pagure.exceptions.PagureException,
|
|
Matt Prahl |
b49f93 |
pagure.lib.update_watch_status,
|
|
Matt Prahl |
b49f93 |
session=self.session,
|
|
Matt Prahl |
b49f93 |
project=project,
|
|
Matt Prahl |
b49f93 |
user='pingou',
|
|
Matt Prahl |
b49f93 |
watch='me fail',
|
|
Matt Prahl |
b49f93 |
)
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
b49f93 |
# All good and when user selected reset watch option.
|
|
Vivek Anand |
5ba4e2 |
msg = pagure.lib.update_watch_status(
|
|
Vivek Anand |
5ba4e2 |
session=self.session,
|
|
Vivek Anand |
5ba4e2 |
project=project,
|
|
Vivek Anand |
5ba4e2 |
user='pingou',
|
|
Vivek Anand |
5ba4e2 |
watch='-1',
|
|
Vivek Anand |
5ba4e2 |
)
|
|
Vivek Anand |
5ba4e2 |
self.session.commit()
|
|
Vivek Anand |
5ba4e2 |
self.assertEqual(msg, 'Watch status is already reset')
|
|
Vivek Anand |
5ba4e2 |
|
|
Matt Prahl |
b49f93 |
# All good and when user selected watch issues option.
|
|
Gaurav Kumar |
cece6f |
msg = pagure.lib.update_watch_status(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
cece6f |
project=project,
|
|
Gaurav Kumar |
cece6f |
user='pingou',
|
|
Matt Prahl |
b49f93 |
watch='1',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Gaurav Kumar |
cece6f |
self.session.commit()
|
|
Matt Prahl |
b49f93 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
d7ac66 |
msg, 'You are now watching issues and PRs on this project')
|
|
Gaurav Kumar |
cece6f |
|
|
Gaurav Kumar |
cece6f |
# All good and when user selected unwatch option.
|
|
Gaurav Kumar |
cece6f |
msg = pagure.lib.update_watch_status(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
cece6f |
project=project,
|
|
Gaurav Kumar |
cece6f |
user='pingou',
|
|
Matt Prahl |
b49f93 |
watch='0',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Gaurav Kumar |
cece6f |
self.session.commit()
|
|
Matt Prahl |
b49f93 |
self.assertEqual(msg, 'You are no longer watching this project')
|
|
Gaurav Kumar |
cece6f |
|
|
Vivek Anand |
5ba4e2 |
# All good and when user seleted reset watch option.
|
|
Vivek Anand |
5ba4e2 |
msg = pagure.lib.update_watch_status(
|
|
Vivek Anand |
5ba4e2 |
session=self.session,
|
|
Vivek Anand |
5ba4e2 |
project=project,
|
|
Vivek Anand |
5ba4e2 |
user='pingou',
|
|
Vivek Anand |
5ba4e2 |
watch='-1',
|
|
Vivek Anand |
5ba4e2 |
)
|
|
Vivek Anand |
5ba4e2 |
self.session.commit()
|
|
Vivek Anand |
5ba4e2 |
self.assertEqual(msg, 'Watch status reset')
|
|
Vivek Anand |
5ba4e2 |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_watch_level_on_repo_invalid(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" test the get_watch_level_on_repo method of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
RuntimeError,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.get_watch_level_on_repo,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
repo=None,
|
|
Pierre-Yves Chibon |
a3901b |
repouser=None,
|
|
Pierre-Yves Chibon |
a3901b |
namespace=None,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Matt Prahl |
b49f93 |
def test_get_watch_level_on_repo(self):
|
|
Matt Prahl |
b49f93 |
""" Test the get_watch_level_on_repo method of pagure.lib. """
|
|
Gaurav Kumar |
cece6f |
tests.create_projects(self.session)
|
|
Gaurav Kumar |
cece6f |
self.test_add_group()
|
|
Gaurav Kumar |
cece6f |
|
|
Farhaan Bukhsh |
481209 |
project = pagure.lib._get_project(self.session, 'test')
|
|
Matt Prahl |
ade970 |
project2 = pagure.lib._get_project(self.session, 'test2')
|
|
Gaurav Kumar |
cece6f |
|
|
Gaurav Kumar |
4e29d1 |
# If user not logged in
|
|
Matt Prahl |
b49f93 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Gaurav Kumar |
4e29d1 |
session=self.session,
|
|
Gaurav Kumar |
4e29d1 |
user=None,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Gaurav Kumar |
4e29d1 |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(watch_level, [])
|
|
Gaurav Kumar |
4e29d1 |
|
|
Gaurav Kumar |
cece6f |
# User does not exist
|
|
Gaurav Kumar |
4e29d1 |
user = tests.FakeUser()
|
|
Gaurav Kumar |
4e29d1 |
user.username = 'aavrug'
|
|
Matt Prahl |
b49f93 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
4e29d1 |
user=user,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(watch_level, [])
|
|
Gaurav Kumar |
cece6f |
|
|
Pierre-Yves Chibon |
a3901b |
# Invalid project
|
|
Pierre-Yves Chibon |
a3901b |
watch = pagure.lib.get_watch_level_on_repo(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
user=user,
|
|
Pierre-Yves Chibon |
a3901b |
repo='invalid',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertFalse(watch)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Gaurav Kumar |
cece6f |
pagure.lib.add_group_to_project(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
cece6f |
project=project,
|
|
Gaurav Kumar |
cece6f |
new_group='foo',
|
|
Gaurav Kumar |
cece6f |
user='pingou',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Gaurav Kumar |
cece6f |
self.session.commit()
|
|
Gaurav Kumar |
cece6f |
|
|
Gaurav Kumar |
cece6f |
group = pagure.lib.search_groups(self.session, group_name='foo')
|
|
Gaurav Kumar |
cece6f |
pagure.lib.add_user_to_group(
|
|
Gaurav Kumar |
cece6f |
self.session,
|
|
Gaurav Kumar |
cece6f |
username='foo',
|
|
Gaurav Kumar |
cece6f |
group=group,
|
|
Gaurav Kumar |
cece6f |
user='pingou',
|
|
Gaurav Kumar |
cece6f |
is_admin=False,
|
|
Gaurav Kumar |
cece6f |
)
|
|
Gaurav Kumar |
cece6f |
self.session.commit()
|
|
Pierre-Yves Chibon |
c60175 |
group = pagure.lib.search_groups(self.session, group_name='foo')
|
|
Gaurav Kumar |
cece6f |
|
|
Gaurav Kumar |
cece6f |
# If user belongs to any group of that project
|
|
Gaurav Kumar |
4e29d1 |
user.username = 'foo'
|
|
Matt Prahl |
b49f93 |
msg = watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
4e29d1 |
user=user,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(watch_level, ['issues'])
|
|
Gaurav Kumar |
cece6f |
|
|
Gaurav Kumar |
cece6f |
# If user is the creator
|
|
Gaurav Kumar |
4e29d1 |
user.username = 'pingou'
|
|
Matt Prahl |
b49f93 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
4e29d1 |
user=user,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(watch_level, ['issues'])
|
|
Gaurav Kumar |
cece6f |
|
|
Matt Prahl |
b49f93 |
# Entry into watchers table for issues and commits
|
|
Matt Prahl |
b49f93 |
msg = pagure.lib.update_watch_status(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
cece6f |
project=project,
|
|
Gaurav Kumar |
cece6f |
user='pingou',
|
|
Matt Prahl |
b49f93 |
watch='3',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Gaurav Kumar |
cece6f |
self.session.commit()
|
|
Matt Prahl |
b49f93 |
self.assertEqual(
|
|
Matt Prahl |
b49f93 |
msg,
|
|
Matt Prahl |
b49f93 |
'You are now watching issues, PRs, and commits on this project')
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
b49f93 |
# From watchers table
|
|
Matt Prahl |
b49f93 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Matt Prahl |
b49f93 |
session=self.session,
|
|
Matt Prahl |
b49f93 |
user=user,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Matt Prahl |
b49f93 |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(['issues', 'commits'], watch_level)
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
ade970 |
# Make sure that when a user watches more than one repo explicitly
|
|
Matt Prahl |
ade970 |
# they get the correct watch status
|
|
Matt Prahl |
ade970 |
msg = pagure.lib.update_watch_status(
|
|
Matt Prahl |
ade970 |
session=self.session,
|
|
Matt Prahl |
ade970 |
project=project2,
|
|
Matt Prahl |
ade970 |
user='pingou',
|
|
Matt Prahl |
ade970 |
watch='1',
|
|
Matt Prahl |
ade970 |
)
|
|
Matt Prahl |
ade970 |
self.session.commit()
|
|
Matt Prahl |
ade970 |
self.assertEqual(
|
|
Matt Prahl |
ade970 |
msg,
|
|
Matt Prahl |
ade970 |
'You are now watching issues and PRs on this project')
|
|
Matt Prahl |
ade970 |
|
|
Matt Prahl |
ade970 |
# From watchers table
|
|
Matt Prahl |
ade970 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Matt Prahl |
ade970 |
session=self.session,
|
|
Matt Prahl |
ade970 |
user=user,
|
|
Matt Prahl |
ade970 |
repo='test2',
|
|
Matt Prahl |
ade970 |
)
|
|
Matt Prahl |
ade970 |
self.assertEqual(['issues'], watch_level)
|
|
Matt Prahl |
ade970 |
|
|
Matt Prahl |
b49f93 |
# Entry into watchers table for just commits
|
|
Matt Prahl |
b49f93 |
msg = pagure.lib.update_watch_status(
|
|
Matt Prahl |
b49f93 |
session=self.session,
|
|
Matt Prahl |
b49f93 |
project=project,
|
|
Matt Prahl |
b49f93 |
user='pingou',
|
|
Matt Prahl |
b49f93 |
watch='2',
|
|
Matt Prahl |
b49f93 |
)
|
|
Matt Prahl |
b49f93 |
self.session.commit()
|
|
Matt Prahl |
b49f93 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
d7ac66 |
msg, 'You are now watching commits on this project')
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
b49f93 |
# From watchers table
|
|
Matt Prahl |
b49f93 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Matt Prahl |
b49f93 |
session=self.session,
|
|
Matt Prahl |
b49f93 |
user=user,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Matt Prahl |
b49f93 |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(['commits'], watch_level)
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
b49f93 |
# Entry into watchers table for issues
|
|
Matt Prahl |
b49f93 |
msg = pagure.lib.update_watch_status(
|
|
Matt Prahl |
b49f93 |
session=self.session,
|
|
Matt Prahl |
b49f93 |
project=project,
|
|
Matt Prahl |
b49f93 |
user='pingou',
|
|
Matt Prahl |
b49f93 |
watch='1',
|
|
Matt Prahl |
b49f93 |
)
|
|
Matt Prahl |
b49f93 |
self.session.commit()
|
|
Matt Prahl |
b49f93 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
d7ac66 |
msg, 'You are now watching issues and PRs on this project')
|
|
Gaurav Kumar |
cece6f |
|
|
Gaurav Kumar |
cece6f |
# From watchers table
|
|
Matt Prahl |
b49f93 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
4e29d1 |
user=user,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(['issues'], watch_level)
|
|
Gaurav Kumar |
cece6f |
|
|
Matt Prahl |
b49f93 |
# Entry into watchers table for no watching
|
|
Pierre-Yves Chibon |
1e86e6 |
msg = pagure.lib.update_watch_status(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
cece6f |
project=project,
|
|
Gaurav Kumar |
cece6f |
user='pingou',
|
|
Matt Prahl |
b49f93 |
watch='0',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Gaurav Kumar |
cece6f |
self.session.commit()
|
|
Matt Prahl |
b49f93 |
self.assertEqual(msg, 'You are no longer watching this project')
|
|
Gaurav Kumar |
cece6f |
|
|
Gaurav Kumar |
cece6f |
# From watchers table
|
|
Matt Prahl |
b49f93 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Gaurav Kumar |
cece6f |
session=self.session,
|
|
Gaurav Kumar |
4e29d1 |
user=user,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Gaurav Kumar |
cece6f |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(watch_level, [])
|
|
Gaurav Kumar |
cece6f |
|
|
Pierre-Yves Chibon |
207c8a |
# Add a contributor to the project
|
|
Pierre-Yves Chibon |
207c8a |
item = pagure.lib.model.User(
|
|
Pierre-Yves Chibon |
207c8a |
user='bar',
|
|
Pierre-Yves Chibon |
207c8a |
fullname='bar foo',
|
|
Pierre-Yves Chibon |
207c8a |
password='foo',
|
|
Pierre-Yves Chibon |
207c8a |
default_email='bar@bar.com',
|
|
Pierre-Yves Chibon |
207c8a |
)
|
|
Pierre-Yves Chibon |
207c8a |
self.session.add(item)
|
|
Pierre-Yves Chibon |
207c8a |
item = pagure.lib.model.UserEmail(
|
|
Pierre-Yves Chibon |
207c8a |
user_id=3,
|
|
Pierre-Yves Chibon |
207c8a |
email='bar@bar.com')
|
|
Pierre-Yves Chibon |
207c8a |
self.session.add(item)
|
|
Pierre-Yves Chibon |
207c8a |
msg = pagure.lib.add_user_to_project(
|
|
Pierre-Yves Chibon |
207c8a |
session=self.session,
|
|
Pierre-Yves Chibon |
207c8a |
project=project,
|
|
Pierre-Yves Chibon |
207c8a |
new_user='bar',
|
|
Pierre-Yves Chibon |
207c8a |
user='pingou',
|
|
Pierre-Yves Chibon |
207c8a |
)
|
|
Pierre-Yves Chibon |
207c8a |
self.session.commit()
|
|
Pierre-Yves Chibon |
207c8a |
self.assertEqual(msg, 'User added')
|
|
Pierre-Yves Chibon |
207c8a |
|
|
Pierre-Yves Chibon |
207c8a |
# Check if the new contributor is watching
|
|
Pierre-Yves Chibon |
207c8a |
user.username = 'bar'
|
|
Matt Prahl |
b49f93 |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Pierre-Yves Chibon |
207c8a |
session=self.session,
|
|
Pierre-Yves Chibon |
207c8a |
user=user,
|
|
Matt Prahl |
733eaa |
repo='test',
|
|
Pierre-Yves Chibon |
207c8a |
)
|
|
Matt Prahl |
b49f93 |
self.assertEqual(watch_level, ['issues'])
|
|
Pierre-Yves Chibon |
13128f |
|
|
Pierre-Yves Chibon |
a3901b |
# wrong project
|
|
Pierre-Yves Chibon |
a3901b |
user.username = 'bar'
|
|
Pierre-Yves Chibon |
a3901b |
watch_level = pagure.lib.get_watch_level_on_repo(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
user=user,
|
|
Pierre-Yves Chibon |
a3901b |
repo='test',
|
|
Pierre-Yves Chibon |
a3901b |
namespace='somenamespace',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(watch_level, [])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Vivek Anand |
272efb |
def test_user_watch_list(self):
|
|
Vivek Anand |
272efb |
''' test user watch list method of pagure.lib '''
|
|
Vivek Anand |
272efb |
|
|
Vivek Anand |
272efb |
tests.create_projects(self.session)
|
|
Vivek Anand |
272efb |
|
|
Vivek Anand |
272efb |
# He should be watching
|
|
Vivek Anand |
272efb |
user = tests.FakeUser()
|
|
Vivek Anand |
272efb |
user.username = 'pingou'
|
|
Vivek Anand |
272efb |
watch_list_objs = pagure.lib.user_watch_list(
|
|
Vivek Anand |
272efb |
session=self.session,
|
|
Vivek Anand |
272efb |
user='pingou',
|
|
Vivek Anand |
272efb |
)
|
|
Vivek Anand |
272efb |
watch_list = [obj.name for obj in watch_list_objs]
|
|
clime |
afed57 |
self.assertEqual(watch_list, ['test', 'test2', 'test3'])
|
|
Vivek Anand |
272efb |
|
|
Pierre-Yves Chibon |
a3901b |
# Make pingou unwatch the test3 project
|
|
Pierre-Yves Chibon |
a3901b |
project =pagure.lib._get_project(
|
|
Pierre-Yves Chibon |
a3901b |
self.session, 'test3', namespace='somenamespace')
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.update_watch_status(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
watch='0'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'You are no longer watching this project')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Re-check the watch list
|
|
Pierre-Yves Chibon |
a3901b |
watch_list_objs = pagure.lib.user_watch_list(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
watch_list = [obj.name for obj in watch_list_objs]
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(watch_list, ['test', 'test2'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Vivek Anand |
272efb |
# He isn't in the db, thus not watching anything
|
|
Vivek Anand |
272efb |
user.username = 'vivek'
|
|
Vivek Anand |
272efb |
watch_list_objs = pagure.lib.user_watch_list(
|
|
Vivek Anand |
272efb |
session=self.session,
|
|
Vivek Anand |
272efb |
user='vivek',
|
|
Vivek Anand |
272efb |
)
|
|
Vivek Anand |
272efb |
watch_list = [obj.name for obj in watch_list_objs]
|
|
Vivek Anand |
272efb |
self.assertEqual(watch_list, [])
|
|
Vivek Anand |
272efb |
|
|
Vivek Anand |
272efb |
# He shouldn't be watching anything
|
|
Vivek Anand |
272efb |
user.username = 'foo'
|
|
Vivek Anand |
272efb |
watch_list_objs = pagure.lib.user_watch_list(
|
|
Vivek Anand |
272efb |
session=self.session,
|
|
Vivek Anand |
272efb |
user='foo',
|
|
Vivek Anand |
272efb |
)
|
|
Vivek Anand |
272efb |
watch_list = [obj.name for obj in watch_list_objs]
|
|
Vivek Anand |
272efb |
self.assertEqual(watch_list, [])
|
|
Vivek Anand |
272efb |
|
|
Adam Williamson |
c9fff8 |
@patch('flask.request.url', 'http://pagure.org/test/issue/69')
|
|
Adam Williamson |
c9fff8 |
@patch('flask.request.url_root', 'http://pagure.org/')
|
|
Adam Williamson |
c9fff8 |
@patch('flask.request.args.get', return_value=None)
|
|
Adam Williamson |
c9fff8 |
@patch('flask.request')
|
|
Pierre-Yves Chibon |
b130e5 |
@patch('flask.g')
|
|
Pierre-Yves Chibon |
207c8a |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Adam Williamson |
c9fff8 |
def test_text2markdown(self, g, req, reqget):
|
|
Pierre-Yves Chibon |
9cc1bd |
''' Test the test2markdown method in pagure.lib. '''
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['TESTING'] = True
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['SERVER_NAME'] = 'pagure.org'
|
|
Pierre-Yves Chibon |
9cc1bd |
pagure.SESSION = self.session
|
|
Pierre-Yves Chibon |
9cc1bd |
pagure.lib.SESSION = self.session
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Pierre-Yves Chibon |
9cc1bd |
# This creates:
|
|
Pierre-Yves Chibon |
9cc1bd |
# project: test
|
|
Pierre-Yves Chibon |
9cc1bd |
# fork: pingou/test
|
|
Pierre-Yves Chibon |
9cc1bd |
# PR#1 to project test
|
|
Pierre-Yves Chibon |
9cc1bd |
self.test_new_pull_request()
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Adam Williamson |
c9fff8 |
# create an issue (will be #2) in 'test' project
|
|
Farhaan Bukhsh |
83f8bc |
repo = pagure.lib._get_project(self.session, 'test')
|
|
Adam Williamson |
c9fff8 |
iss = pagure.lib.new_issue(
|
|
Adam Williamson |
c9fff8 |
issue_id=2,
|
|
Adam Williamson |
c9fff8 |
session=self.session,
|
|
Adam Williamson |
c9fff8 |
repo=repo,
|
|
Adam Williamson |
c9fff8 |
title='test issue',
|
|
Adam Williamson |
c9fff8 |
content='content test issue',
|
|
Adam Williamson |
c9fff8 |
user='pingou',
|
|
Adam Williamson |
c9fff8 |
ticketfolder=None,
|
|
Adam Williamson |
c9fff8 |
)
|
|
Adam Williamson |
c9fff8 |
self.session.commit()
|
|
Adam Williamson |
c9fff8 |
self.assertEqual(iss.id, 2)
|
|
Adam Williamson |
c9fff8 |
self.assertEqual(iss.title, 'test issue')
|
|
Adam Williamson |
c9fff8 |
|
|
Adam Williamson |
c9fff8 |
# create PR#2 to project pingou/test
|
|
Farhaan Bukhsh |
83f8bc |
forked_repo = pagure.lib._get_project(self.session, 'test', user='pingou')
|
|
Pierre-Yves Chibon |
9cc1bd |
req = pagure.lib.new_pull_request(
|
|
Pierre-Yves Chibon |
9cc1bd |
requestid=2,
|
|
Pierre-Yves Chibon |
9cc1bd |
session=self.session,
|
|
Pierre-Yves Chibon |
9cc1bd |
repo_from=forked_repo,
|
|
Pierre-Yves Chibon |
9cc1bd |
branch_from='master',
|
|
Pierre-Yves Chibon |
9cc1bd |
repo_to=forked_repo,
|
|
Pierre-Yves Chibon |
9cc1bd |
branch_to='master',
|
|
Pierre-Yves Chibon |
9cc1bd |
title='test pull-request in fork',
|
|
Pierre-Yves Chibon |
9cc1bd |
user='pingou',
|
|
Pierre-Yves Chibon |
9cc1bd |
requestfolder=None,
|
|
Pierre-Yves Chibon |
9cc1bd |
)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.session.commit()
|
|
Pierre-Yves Chibon |
9cc1bd |
self.assertEqual(req.id, 2)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.assertEqual(req.title, 'test pull-request in fork')
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Pierre-Yves Chibon |
9cc1bd |
# Create the project ns/test
|
|
Pierre-Yves Chibon |
9cc1bd |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
9cc1bd |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
9cc1bd |
name='test3',
|
|
Pierre-Yves Chibon |
9cc1bd |
namespace='ns',
|
|
Pierre-Yves Chibon |
9cc1bd |
description='test project #1',
|
|
Pierre-Yves Chibon |
9cc1bd |
hook_token='aaabbbcccdd',
|
|
Pierre-Yves Chibon |
9cc1bd |
)
|
|
Pierre-Yves Chibon |
9cc1bd |
item.close_status = ['Invalid', 'Insufficient data', 'Fixed', 'Duplicate']
|
|
Pierre-Yves Chibon |
9cc1bd |
self.session.add(item)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.session.commit()
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Pierre-Yves Chibon |
9cc1bd |
iss = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
9cc1bd |
issue_id=4,
|
|
Pierre-Yves Chibon |
9cc1bd |
session=self.session,
|
|
Pierre-Yves Chibon |
9cc1bd |
repo=item,
|
|
Pierre-Yves Chibon |
9cc1bd |
title='test issue',
|
|
Pierre-Yves Chibon |
9cc1bd |
content='content test issue',
|
|
Pierre-Yves Chibon |
9cc1bd |
user='pingou',
|
|
Pierre-Yves Chibon |
9cc1bd |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
9cc1bd |
)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.session.commit()
|
|
Pierre-Yves Chibon |
9cc1bd |
self.assertEqual(iss.id, 4)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.assertEqual(iss.title, 'test issue')
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Pierre-Yves Chibon |
9cc1bd |
# Fork ns/test to pingou
|
|
Pierre-Yves Chibon |
9cc1bd |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
9cc1bd |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
9cc1bd |
name='test',
|
|
Pierre-Yves Chibon |
9cc1bd |
namespace='ns',
|
|
Pierre-Yves Chibon |
9cc1bd |
description='Forked namespaced test project #1',
|
|
Pierre-Yves Chibon |
9cc1bd |
is_fork=True,
|
|
Pierre-Yves Chibon |
9cc1bd |
parent_id=item.id,
|
|
Pierre-Yves Chibon |
9cc1bd |
hook_token='aaabbbrrrbb',
|
|
Pierre-Yves Chibon |
9cc1bd |
)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.session.add(item)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.session.commit()
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Pierre-Yves Chibon |
9cc1bd |
iss = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
9cc1bd |
issue_id=7,
|
|
Pierre-Yves Chibon |
9cc1bd |
session=self.session,
|
|
Pierre-Yves Chibon |
9cc1bd |
repo=item,
|
|
Pierre-Yves Chibon |
9cc1bd |
title='test issue #7',
|
|
Pierre-Yves Chibon |
9cc1bd |
content='content test issue #7 in forked repo',
|
|
Pierre-Yves Chibon |
9cc1bd |
user='pingou',
|
|
Pierre-Yves Chibon |
9cc1bd |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
9cc1bd |
)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.session.commit()
|
|
Pierre-Yves Chibon |
9cc1bd |
self.assertEqual(iss.id, 7)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.assertEqual(iss.title, 'test issue #7')
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Pierre-Yves Chibon |
dc35b0 |
iss = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
dc35b0 |
issue_id=8,
|
|
Pierre-Yves Chibon |
dc35b0 |
session=self.session,
|
|
Pierre-Yves Chibon |
dc35b0 |
repo=item,
|
|
Pierre-Yves Chibon |
dc35b0 |
title='private issue #8',
|
|
Pierre-Yves Chibon |
dc35b0 |
content='Private content test issue #8 in forked repo',
|
|
Pierre-Yves Chibon |
dc35b0 |
user='pingou',
|
|
Pierre-Yves Chibon |
dc35b0 |
private=True,
|
|
Pierre-Yves Chibon |
dc35b0 |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
dc35b0 |
)
|
|
Pierre-Yves Chibon |
dc35b0 |
self.session.commit()
|
|
Pierre-Yves Chibon |
dc35b0 |
self.assertEqual(iss.id, 8)
|
|
Pierre-Yves Chibon |
dc35b0 |
self.assertEqual(iss.title, 'private issue #8')
|
|
Pierre-Yves Chibon |
dc35b0 |
|
|
Pierre-Yves Chibon |
f430ee |
# newer bleach allow to customize the protocol supported
|
|
Pierre-Yves Chibon |
f430ee |
import bleach
|
|
Pierre-Yves Chibon |
f430ee |
bleach_v = bleach.__version__.split('.')
|
|
Pierre-Yves Chibon |
f430ee |
for idx, val in enumerate(bleach_v):
|
|
Pierre-Yves Chibon |
f430ee |
try:
|
|
Pierre-Yves Chibon |
f430ee |
val = int(val)
|
|
Pierre-Yves Chibon |
f430ee |
except ValueError:
|
|
Pierre-Yves Chibon |
f430ee |
pass
|
|
Pierre-Yves Chibon |
f430ee |
bleach_v[idx] = val
|
|
Pierre-Yves Chibon |
f430ee |
|
|
Pierre-Yves Chibon |
9cc1bd |
texts = [
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar test#1 see?',
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar pingou/test#2 I mean, really',
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar fork/pingou/test#2 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar forks/pingou/test#2 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar ns/test3#4 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar fork/user/ns/test#5 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar fork/pingou/ns/test#7 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
'test#1 bazinga!',
|
|
Pierre-Yves Chibon |
dc35b0 |
'pingou opened the PR forks/pingou/test#2',
|
|
Pierre-Yves Chibon |
dc35b0 |
'fork/pingou/ns/test#8 is private',
|
|
Adam Williamson |
c9fff8 |
'implicit link to #1',
|
|
Adam Williamson |
c9fff8 |
'implicit link .#1. with non-whitespace, non-word characters',
|
|
Adam Williamson |
c9fff8 |
'#2 - implicit link at start of line',
|
|
Adam Williamson |
c9fff8 |
'#2. implicit link at start of line with no whitespace after',
|
|
Adam Williamson |
c9fff8 |
'#regular header',
|
|
Adam Williamson |
c9fff8 |
'#34 looks like an implicit link, but no issue 34',
|
|
Pierre-Yves Chibon |
71ab35 |
'pingou committed on test#9364354a4555ba17aa60f0dc844d70b74eb1aecd',
|
|
Pierre-Yves Chibon |
45f16f |
'irc://pagure.io',
|
|
Pierre-Yves Chibon |
45f16f |
'ircs://pagure.io',
|
|
Pierre-Yves Chibon |
45f16f |
'http://pagure.io',
|
|
Pierre-Yves Chibon |
45f16f |
'https://pagure.io',
|
|
Pierre-Yves Chibon |
ded859 |
'<https://pagure.io/pagure>',
|
|
Pierre-Yves Chibon |
e36404 |
'~~foo~~',
|
|
Pierre-Yves Chibon |
e36404 |
'~~foo bar~~',
|
|
Pierre-Yves Chibon |
e36404 |
'~~[BZ#1435310](https://bugzilla.redhat.com/1435310)~~',
|
|
Pierre-Yves Chibon |
e36404 |
"~~[BZ#1435310](https://bugzilla.redhat.com/1435310) avc denial "
|
|
Pierre-Yves Chibon |
e36404 |
"during F26AH boot 'error_name=org.freedesktop.systemd1."
|
|
Pierre-Yves Chibon |
e36404 |
"NoSuchDynamicUser'~~",
|
|
Pierre-Yves Chibon |
e36404 |
'``~~foo bar~~``',
|
|
Pierre-Yves Chibon |
33786e |
'~~foo bar~~ and ~~another ~~',
|
|
Adam Williamson |
53d919 |
'lets mention @pingou',
|
|
Adam Williamson |
53d919 |
'@pingou at start of line',
|
|
Adam Williamson |
53d919 |
'but not someone@pingou.com',
|
|
Pierre-Yves Chibon |
8f8ef5 |
'[![Fedora_infinity_small.png]'
|
|
Pierre-Yves Chibon |
8f8ef5 |
'(/test/issue/raw/Fedora_infinity_small.png)]'
|
|
Pierre-Yves Chibon |
8f8ef5 |
'(/test/issue/raw/Fedora_infinity_small.png)',
|
|
Pierre-Yves Chibon |
9cc1bd |
]
|
|
Pierre-Yves Chibon |
9cc1bd |
expected = [
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'foo bar test#1 see?',
|
|
Pierre-Yves Chibon |
818f90 |
'foo bar
|
|
Pierre-Yves Chibon |
f8a683 |
' title="[Open] test pull-request">test#1 see?',
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'foo bar pingou/test#2 I mean, really', -- unknown namespace
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar pingou/test#2 I mean, really ',
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'foo bar fork/pingou/test#2 bouza!',
|
|
Pierre-Yves Chibon |
818f90 |
'foo bar
|
|
Pierre-Yves Chibon |
f8a683 |
'pingou/test/pull-request/2" title="[Open] test pull-request in fork">'
|
|
Pierre-Yves Chibon |
9cc1bd |
'pingou/test#2 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'foo bar forks/pingou/test#2 bouza!', -- the 's' doesn't matter
|
|
Pierre-Yves Chibon |
818f90 |
'foo bar
|
|
Pierre-Yves Chibon |
f8a683 |
'pingou/test/pull-request/2" title="[Open] test pull-request in fork">'
|
|
Pierre-Yves Chibon |
9cc1bd |
'pingou/test#2 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'foo bar ns/test3#4 bouza!',
|
|
Pierre-Yves Chibon |
818f90 |
'foo bar
|
|
Pierre-Yves Chibon |
f8a683 |
' title="[Open] test issue">ns/test3#4 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'foo bar fork/user/ns/test#5 bouza!', -- unknown fork
|
|
Pierre-Yves Chibon |
9cc1bd |
'foo bar user/ns/test#5 bouza! ',
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'foo bar fork/pingou/ns/test#7 bouza!',
|
|
Pierre-Yves Chibon |
818f90 |
'foo bar
|
|
Pierre-Yves Chibon |
f8a683 |
'fork/pingou/ns/test/issue/7" title="[Open] test issue #7">'
|
|
Pierre-Yves Chibon |
9cc1bd |
'pingou/ns/test#7 bouza!',
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'test#1 bazinga!',
|
|
Pierre-Yves Chibon |
818f90 |
'
|
|
Pierre-Yves Chibon |
f8a683 |
'title="[Open] test pull-request">test#1 bazinga!',
|
|
Pierre-Yves Chibon |
9cc1bd |
# 'pingou opened the PR forks/pingou/test#2'
|
|
Pierre-Yves Chibon |
818f90 |
'pingou opened the PR
|
|
Pierre-Yves Chibon |
9cc1bd |
'fork/pingou/test/pull-request/2" '
|
|
Pierre-Yves Chibon |
f8a683 |
'title="[Open] test pull-request in fork">pingou/test#2',
|
|
Pierre-Yves Chibon |
dc35b0 |
# 'fork/pingou/ns/test#8 is private',
|
|
Pierre-Yves Chibon |
dc35b0 |
'
|
|
Pierre-Yves Chibon |
dc35b0 |
'title="Private issue">pingou/ns/test#8 is private',
|
|
Adam Williamson |
c9fff8 |
# 'implicit link to #1',
|
|
Adam Williamson |
c9fff8 |
'implicit link to #1 ',
|
|
Adam Williamson |
c9fff8 |
# 'implicit link .#1. with non-whitespace, non-word characters',
|
|
Adam Williamson |
c9fff8 |
'implicit link .#1. with non-whitespace, non-word characters ',
|
|
Adam Williamson |
c9fff8 |
# '#2 - implicit link at start of line',
|
|
Adam Williamson |
c9fff8 |
'#2 - implicit link at start of line ',
|
|
Adam Williamson |
c9fff8 |
# '#2. implicit link at start of line with no whitespace after',
|
|
Adam Williamson |
c9fff8 |
'#2. implicit link at start of line with no whitespace after ',
|
|
Adam Williamson |
c9fff8 |
# '#regular header',
|
|
Adam Williamson |
c9fff8 |
'regular header',
|
|
Adam Williamson |
c9fff8 |
# '#34 looks like an implicit link, but no issue 34',
|
|
Adam Williamson |
c9fff8 |
'34 looks like an implicit link, but no issue 34',
|
|
Pierre-Yves Chibon |
71ab35 |
# 'pingou committed on test#9364354a4555ba17aa60f0dc844d70b74eb1aecd',
|
|
Pierre-Yves Chibon |
71ab35 |
'pingou committed on
|
|
Pierre-Yves Chibon |
71ab35 |
'test/c/9364354a4555ba17aa60f0dc844d70b74eb1aecd" '
|
|
Pierre-Yves Chibon |
71ab35 |
'title="Commit 9364354a4555ba17aa60f0dc844d70b74eb1aecd"'
|
|
Pierre-Yves Chibon |
45f16f |
'>test#9364354a4555ba17aa60f0dc844d70b74eb1aecd',
|
|
Pierre-Yves Chibon |
45f16f |
# 'irc://pagure.io'
|
|
Pierre-Yves Chibon |
45f16f |
'irc://pagure.io ',
|
|
Pierre-Yves Chibon |
45f16f |
# 'ircs://pagure.io' - This is getting cleaned by python-bleach
|
|
Pierre-Yves Chibon |
45f16f |
# and the version 1.4.3 that we have won't let us adjust the
|
|
Pierre-Yves Chibon |
45f16f |
# list of supported protocols
|
|
Pierre-Yves Chibon |
45f16f |
# 'ircs://pagure.io ',
|
|
Pierre-Yves Chibon |
f430ee |
'ircs://pagure.io ' if
|
|
Pierre-Yves Chibon |
f430ee |
tuple(bleach_v) >= (1, 5, 0)
|
|
Pierre-Yves Chibon |
f430ee |
else 'ircs://pagure.io ',
|
|
Pierre-Yves Chibon |
45f16f |
# 'http://pagure.io'
|
|
Pierre-Yves Chibon |
45f16f |
'http://pagure.io ',
|
|
Pierre-Yves Chibon |
45f16f |
# 'https://pagure.io'
|
|
Pierre-Yves Chibon |
45f16f |
'https://pagure.io ',
|
|
Pierre-Yves Chibon |
ded859 |
# '<https://pagure.io/pagure>'
|
|
Pierre-Yves Chibon |
ded859 |
'https://pagure.io/pagure'
|
|
Pierre-Yves Chibon |
ded859 |
'',
|
|
Pierre-Yves Chibon |
e36404 |
# '~~foo~~'
|
|
Pierre-Yves Chibon |
e36404 |
'foo ',
|
|
Pierre-Yves Chibon |
e36404 |
# '~~foo bar~~'
|
|
Pierre-Yves Chibon |
e36404 |
'foo bar ',
|
|
Pierre-Yves Chibon |
e36404 |
# '~~[BZ#1435310](https://bugzilla.redhat.com/1435310)~~'
|
|
Pierre-Yves Chibon |
e36404 |
''
|
|
Pierre-Yves Chibon |
e36404 |
'BZ#1435310',
|
|
Pierre-Yves Chibon |
e36404 |
# '~~[BZ#1435310](https://bugzilla.redhat.com/1435310) avc
|
|
Pierre-Yves Chibon |
e36404 |
# denial during F26AH boot 'error_name=org.freedesktop.systemd1
|
|
Pierre-Yves Chibon |
e36404 |
# .NoSuchDynamicUser~~'
|
|
Pierre-Yves Chibon |
e36404 |
""
|
|
Pierre-Yves Chibon |
e36404 |
"BZ#1435310 avc denial during F26AH boot 'error_name="
|
|
Pierre-Yves Chibon |
e36404 |
"org.freedesktop.systemd1.NoSuchDynamicUser'",
|
|
Pierre-Yves Chibon |
e36404 |
# '``~~foo bar~~``'
|
|
Pierre-Yves Chibon |
e36404 |
'~~foo bar~~ ',
|
|
Pierre-Yves Chibon |
33786e |
# '~~foo bar~~ and ~~another ~~',
|
|
Pierre-Yves Chibon |
33786e |
'foo bar and another ',
|
|
Adam Williamson |
53d919 |
# 'lets mention @pingou',
|
|
Adam Williamson |
53d919 |
'lets mention @pingou ',
|
|
Adam Williamson |
53d919 |
# '@pingou at start of line',
|
|
Adam Williamson |
53d919 |
'@pingou at start of line ',
|
|
Adam Williamson |
53d919 |
# 'but not someone@pingou.com',
|
|
Adam Williamson |
53d919 |
'but not someone@pingou.com ',
|
|
Pierre-Yves Chibon |
8f8ef5 |
# '[![Fedora_infinity_small.png]'
|
|
Pierre-Yves Chibon |
8f8ef5 |
# '(/test/issue/raw/Fedora_infinity_small.png)]'
|
|
Pierre-Yves Chibon |
8f8ef5 |
# '(/test/issue/raw/Fedora_infinity_small.png)',
|
|
Pierre-Yves Chibon |
f5dd6e |
''
|
|
Pierre-Yves Chibon |
8f8ef5 |
'
|
|
Pierre-Yves Chibon |
8f8ef5 |
'data-src="/test/issue/raw/Fedora_infinity_small.png" src="">'
|
|
Pierre-Yves Chibon |
f5dd6e |
'
|
|
Pierre-Yves Chibon |
f5dd6e |
'
|
|
Pierre-Yves Chibon |
f5dd6e |
'src="/test/issue/raw/Fedora_infinity_small.png">'
|
|
Pierre-Yves Chibon |
f5dd6e |
'',
|
|
Pierre-Yves Chibon |
9cc1bd |
]
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Pierre-Yves Chibon |
b130e5 |
with self.app.application.app_context():
|
|
Pierre-Yves Chibon |
b130e5 |
g.session = self.session
|
|
Pierre-Yves Chibon |
9cc1bd |
for idx, text in enumerate(texts):
|
|
Pierre-Yves Chibon |
9cc1bd |
html = pagure.lib.text2markdown(text)
|
|
Pierre-Yves Chibon |
9cc1bd |
self.assertEqual(html, expected[idx])
|
|
Pierre-Yves Chibon |
9cc1bd |
|
|
Pierre-Yves Chibon |
a3901b |
def test_text2markdown_exception(self):
|
|
Pierre-Yves Chibon |
a3901b |
''' Test the test2markdown method in pagure.lib. '''
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
text = 'test#1 bazinga!'
|
|
Pierre-Yves Chibon |
a3901b |
expected_html = 'test#1 bazinga!'
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
html = pagure.lib.text2markdown(text)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(html, expected_html)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_text2markdown_empty_string(self):
|
|
Pierre-Yves Chibon |
a3901b |
''' Test the test2markdown method in pagure.lib. '''
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
text = ''
|
|
Pierre-Yves Chibon |
a3901b |
expected_html = ''
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
html = pagure.lib.text2markdown(text)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(html, expected_html)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Vivek Anand |
14c156 |
def test_get_access_levels(self):
|
|
Vivek Anand |
14c156 |
''' Test the get_access_levels method in pagure.lib '''
|
|
Vivek Anand |
14c156 |
|
|
Vivek Anand |
14c156 |
acls = pagure.lib.get_access_levels(self.session)
|
|
Vivek Anand |
14c156 |
self.assertEqual(
|
|
Vivek Anand |
14c156 |
sorted(['admin', 'commit', 'ticket']),
|
|
Vivek Anand |
14c156 |
sorted(acls)
|
|
Vivek Anand |
14c156 |
)
|
|
Vivek Anand |
14c156 |
|
|
Vivek Anand |
d4986e |
def test_get_project_users(self):
|
|
Matt Prahl |
cbadc1 |
''' Test the get_project_users method when combine is True
|
|
Matt Prahl |
cbadc1 |
'''
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# Default value of combine is True
|
|
Vivek Anand |
d4986e |
# which means the an admin is a user, committer as well
|
|
Vivek Anand |
d4986e |
# and a committer is also a user
|
|
Vivek Anand |
d4986e |
# and a user is just a user
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='admin')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# Only pingou is the admin as of now
|
|
Vivek Anand |
d4986e |
# But, he is the creator and
|
|
Vivek Anand |
d4986e |
# the creator of the project is not listed in user_projects
|
|
Vivek Anand |
d4986e |
# table. Thus, get_projec_users won't return him as an admin
|
|
Vivek Anand |
d4986e |
# He has all the access of an admin though
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
self.assertEqual(project.user.username, 'pingou')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
0602a4 |
# Wrong access level, should raise Accesslevelnotfound exception
|
|
Vivek Anand |
0602a4 |
self.assertRaises(
|
|
Vivek Anand |
0602a4 |
pagure.exceptions.AccessLevelNotFound,
|
|
Matt Prahl |
cbadc1 |
project.get_project_users,
|
|
Pierre-Yves Chibon |
9e0b8e |
access='owner',
|
|
Vivek Anand |
d4986e |
)
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# Let's add a new user to the project, 'foo'
|
|
Vivek Anand |
d4986e |
# By default, if no access is specified, he becomes an admin
|
|
Vivek Anand |
d4986e |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
d4986e |
self.session,
|
|
Vivek Anand |
d4986e |
project=project,
|
|
Vivek Anand |
d4986e |
new_user='foo',
|
|
Vivek Anand |
d4986e |
user='pingou'
|
|
Vivek Anand |
d4986e |
)
|
|
Vivek Anand |
d4986e |
self.session.commit()
|
|
Vivek Anand |
d4986e |
# since, he is an admin, the msg should be 'User added'
|
|
Vivek Anand |
d4986e |
self.assertEqual(msg, 'User added')
|
|
Vivek Anand |
d4986e |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='admin')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# foo should be a committer as well, since he is an admin
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='commit')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# the admin also has ticket access
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='ticket')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# let's update the access of foo to 'committer'
|
|
Vivek Anand |
d4986e |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
d4986e |
self.session,
|
|
Vivek Anand |
d4986e |
project=project,
|
|
Vivek Anand |
d4986e |
new_user='foo',
|
|
Vivek Anand |
d4986e |
user='pingou',
|
|
Vivek Anand |
d4986e |
access='commit'
|
|
Vivek Anand |
d4986e |
)
|
|
Vivek Anand |
d4986e |
self.session.commit()
|
|
Vivek Anand |
d4986e |
self.assertEqual(msg, 'User access updated')
|
|
Vivek Anand |
d4986e |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
d4986e |
# No admin now, even though pingou the creator is there
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='admin')
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='commit')
|
|
Vivek Anand |
d4986e |
# foo is the committer currently
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='ticket')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# foo also has ticket rights
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# let's update the access of foo to 'ticket'
|
|
Vivek Anand |
d4986e |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
d4986e |
self.session,
|
|
Vivek Anand |
d4986e |
project=project,
|
|
Vivek Anand |
d4986e |
new_user='foo',
|
|
Vivek Anand |
d4986e |
user='pingou',
|
|
Vivek Anand |
d4986e |
access='ticket'
|
|
Vivek Anand |
d4986e |
)
|
|
Vivek Anand |
d4986e |
self.session.commit()
|
|
Vivek Anand |
d4986e |
self.assertEqual(msg, 'User access updated')
|
|
Vivek Anand |
d4986e |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
d4986e |
# No admin now, even though pingou the creator is there
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='admin')
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='commit')
|
|
Vivek Anand |
d4986e |
# foo deosn't have commit rights now
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='ticket')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# foo does have tickets right though
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
def test_get_project_users_combine_false(self):
|
|
Matt Prahl |
cbadc1 |
''' Test the get_project_users method when combine is False
|
|
Matt Prahl |
cbadc1 |
'''
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# Let's add a new user to the project, 'foo'
|
|
Vivek Anand |
d4986e |
# By default, if no access is specified, he becomes an admin
|
|
Vivek Anand |
d4986e |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
d4986e |
self.session,
|
|
Vivek Anand |
d4986e |
project=project,
|
|
Vivek Anand |
d4986e |
new_user='foo',
|
|
Vivek Anand |
d4986e |
user='pingou'
|
|
Vivek Anand |
d4986e |
)
|
|
Vivek Anand |
d4986e |
self.session.commit()
|
|
Vivek Anand |
d4986e |
# since, he is an admin, the msg should be 'User added'
|
|
Vivek Anand |
d4986e |
self.assertEqual(msg, 'User added')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# only one admin
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='admin', combine=False)
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# No user with only commit access
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='commit', combine=False)
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# No user with only ticket access
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='ticket', combine=False)
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# Update the access level of foo user to commit
|
|
Vivek Anand |
d4986e |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
d4986e |
self.session,
|
|
Vivek Anand |
d4986e |
project=project,
|
|
Vivek Anand |
d4986e |
new_user='foo',
|
|
Vivek Anand |
d4986e |
user='pingou',
|
|
Vivek Anand |
d4986e |
access='commit'
|
|
Vivek Anand |
d4986e |
)
|
|
Vivek Anand |
d4986e |
self.session.commit()
|
|
Vivek Anand |
d4986e |
self.assertEqual(msg, 'User access updated')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# He is just a committer
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='admin', combine=False)
|
|
Farhaan Bukhsh |
e498a1 |
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# He is just a committer
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='commit', combine=False)
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# He is just a committer
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='ticket', combine=False)
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# Update the access level of foo user to ticket
|
|
Vivek Anand |
d4986e |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
d4986e |
self.session,
|
|
Vivek Anand |
d4986e |
project=project,
|
|
Vivek Anand |
d4986e |
new_user='foo',
|
|
Vivek Anand |
d4986e |
user='pingou',
|
|
Vivek Anand |
d4986e |
access='ticket'
|
|
Vivek Anand |
d4986e |
)
|
|
Vivek Anand |
d4986e |
self.session.commit()
|
|
Vivek Anand |
d4986e |
self.assertEqual(msg, 'User access updated')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# He is just a ticketer
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='admin',combine=False)
|
|
Farhaan Bukhsh |
e498a1 |
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# He is just a ticketer
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='commit', combine=False)
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 0)
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
d4986e |
# He is just a ticketer
|
|
Matt Prahl |
cbadc1 |
users = project.get_project_users(access='ticket', combine=False)
|
|
Vivek Anand |
d4986e |
self.assertEqual(len(users), 1)
|
|
Vivek Anand |
d4986e |
self.assertEqual(users[0].username, 'foo')
|
|
Vivek Anand |
d4986e |
|
|
Vivek Anand |
a26090 |
def test_get_project_groups(self):
|
|
Matt Prahl |
cbadc1 |
''' Test the get_project_groups method when combine is True
|
|
Matt Prahl |
cbadc1 |
'''
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Create some projects
|
|
Vivek Anand |
a26090 |
tests.create_projects(self.session)
|
|
Vivek Anand |
a26090 |
# Create a group in database
|
|
Vivek Anand |
a26090 |
msg = pagure.lib.add_group(
|
|
Vivek Anand |
a26090 |
self.session,
|
|
Vivek Anand |
a26090 |
group_name='JL',
|
|
Vivek Anand |
a26090 |
display_name='Justice League',
|
|
Vivek Anand |
a26090 |
description='Nope, it\'s not JLA anymore',
|
|
Vivek Anand |
a26090 |
group_type='user',
|
|
Vivek Anand |
a26090 |
user='foo',
|
|
Vivek Anand |
a26090 |
is_admin=False,
|
|
Pierre-Yves Chibon |
b130e5 |
blacklist=pagure.config.config.get('BLACKLISTED_PROJECTS')
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
msg,
|
|
Vivek Anand |
a26090 |
'User `foo` added to the group `JL`.'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Add the group to project we just created, test
|
|
Vivek Anand |
a26090 |
# First add it as an admin
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
a26090 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
a26090 |
self.session,
|
|
Vivek Anand |
a26090 |
project=project,
|
|
Vivek Anand |
a26090 |
new_group='JL',
|
|
Vivek Anand |
a26090 |
user='pingou',
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
self.session.commit()
|
|
Vivek Anand |
a26090 |
self.assertEqual(msg, 'Group added')
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Now, the group is an admin in the project
|
|
Vivek Anand |
a26090 |
# so, it must have access to everything
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='admin')
|
|
Farhaan Bukhsh |
e498a1 |
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.admin_groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.admin_groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group should be committer as well
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='commit')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.committer_groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.committer_groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group should be ticketer as well
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='ticket')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Update the access level of the group, JL to commit
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
a26090 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
a26090 |
self.session,
|
|
Vivek Anand |
a26090 |
project=project,
|
|
Vivek Anand |
a26090 |
new_group='JL',
|
|
Vivek Anand |
a26090 |
user='pingou',
|
|
Vivek Anand |
a26090 |
access='commit'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
self.session.commit()
|
|
Vivek Anand |
a26090 |
self.assertEqual(msg, 'Group access updated')
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# It shouldn't be an admin
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='admin')
|
|
Farhaan Bukhsh |
e498a1 |
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.admin_groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# It is a committer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='commit')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.committer_groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.committer_groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group should be ticketer as well
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='ticket')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Update the access of group JL to ticket
|
|
Vivek Anand |
a26090 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
a26090 |
self.session,
|
|
Vivek Anand |
a26090 |
project=project,
|
|
Vivek Anand |
a26090 |
new_group='JL',
|
|
Vivek Anand |
a26090 |
user='pingou',
|
|
Vivek Anand |
a26090 |
access='ticket'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
self.session.commit()
|
|
Vivek Anand |
a26090 |
self.assertEqual(msg, 'Group access updated')
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# It is not an admin
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='admin')
|
|
Farhaan Bukhsh |
e498a1 |
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.admin_groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group shouldn't be a committer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='commit')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.committer_groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group should be ticketer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='ticket')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
def test_get_project_groups_combine_false(self):
|
|
Matt Prahl |
cbadc1 |
''' Test the get_project_groups method when combine is False
|
|
Matt Prahl |
cbadc1 |
'''
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Create some projects
|
|
Vivek Anand |
a26090 |
tests.create_projects(self.session)
|
|
Vivek Anand |
a26090 |
# Create a group in database
|
|
Vivek Anand |
a26090 |
msg = pagure.lib.add_group(
|
|
Vivek Anand |
a26090 |
self.session,
|
|
Vivek Anand |
a26090 |
group_name='JL',
|
|
Vivek Anand |
a26090 |
display_name='Justice League',
|
|
Vivek Anand |
a26090 |
description='Nope, it\'s not JLA anymore',
|
|
Vivek Anand |
a26090 |
group_type='user',
|
|
Vivek Anand |
a26090 |
user='foo',
|
|
Vivek Anand |
a26090 |
is_admin=False,
|
|
Pierre-Yves Chibon |
b130e5 |
blacklist=pagure.config.config.get('BLACKLISTED_PROJECTS')
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
msg,
|
|
Vivek Anand |
a26090 |
'User `foo` added to the group `JL`.'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Add the group to project we just created, test
|
|
Vivek Anand |
a26090 |
# First add it as an admin
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
a26090 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
a26090 |
self.session,
|
|
Vivek Anand |
a26090 |
project=project,
|
|
Vivek Anand |
a26090 |
new_group='JL',
|
|
Vivek Anand |
a26090 |
user='pingou',
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
self.session.commit()
|
|
Vivek Anand |
a26090 |
self.assertEqual(msg, 'Group added')
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Now, the group is an admin in the project
|
|
Vivek Anand |
a26090 |
# so, it must have access to everything
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='admin', combine=False)
|
|
Farhaan Bukhsh |
e498a1 |
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.admin_groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.admin_groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group shoudn't be a committer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='commit', combine=False)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group shoudn't be a ticketer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='ticket', combine=False)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Update the access level of the group, JL to commit
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
a26090 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
a26090 |
self.session,
|
|
Vivek Anand |
a26090 |
project=project,
|
|
Vivek Anand |
a26090 |
new_group='JL',
|
|
Vivek Anand |
a26090 |
user='pingou',
|
|
Vivek Anand |
a26090 |
access='commit'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
self.session.commit()
|
|
Vivek Anand |
a26090 |
self.assertEqual(msg, 'Group access updated')
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# It shouldn't be an admin
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='admin', combine=False)
|
|
Farhaan Bukhsh |
e498a1 |
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# It is a committer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='commit', combine=False)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.committer_groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.committer_groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group shouldn't be ticketer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='ticket', combine=False)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# Update the access of group JL to ticket
|
|
Vivek Anand |
a26090 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
a26090 |
self.session,
|
|
Vivek Anand |
a26090 |
project=project,
|
|
Vivek Anand |
a26090 |
new_group='JL',
|
|
Vivek Anand |
a26090 |
user='pingou',
|
|
Vivek Anand |
a26090 |
access='ticket'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
self.session.commit()
|
|
Vivek Anand |
a26090 |
self.assertEqual(msg, 'Group access updated')
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# It is not an admin
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='admin', combine=False)
|
|
Farhaan Bukhsh |
e498a1 |
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group shouldn't be a committer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='commit', combine=False)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 0)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
a26090 |
# The group should be ticketer
|
|
Matt Prahl |
cbadc1 |
groups = project.get_project_groups(access='ticket', combine=False)
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(groups[0].display_name, 'Justice League')
|
|
Vivek Anand |
a26090 |
self.assertEqual(len(project.groups), 1)
|
|
Vivek Anand |
a26090 |
self.assertEqual(
|
|
Vivek Anand |
a26090 |
project.groups[0].display_name,
|
|
Vivek Anand |
a26090 |
'Justice League'
|
|
Vivek Anand |
a26090 |
)
|
|
Vivek Anand |
a26090 |
|
|
Vivek Anand |
95fd88 |
def test_get_obj_access_user(self):
|
|
Vivek Anand |
95fd88 |
""" Test the get_obj_access method of pagure.lib
|
|
Vivek Anand |
95fd88 |
for model.User object """
|
|
Vivek Anand |
95fd88 |
|
|
Vivek Anand |
95fd88 |
# Create the projects
|
|
Vivek Anand |
95fd88 |
tests.create_projects(self.session)
|
|
Vivek Anand |
95fd88 |
|
|
Vivek Anand |
95fd88 |
# Add a user object - make him an admin first
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
95fd88 |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
95fd88 |
self.session,
|
|
Vivek Anand |
95fd88 |
project=project,
|
|
Vivek Anand |
95fd88 |
new_user='foo',
|
|
Vivek Anand |
95fd88 |
user='pingou'
|
|
Vivek Anand |
95fd88 |
)
|
|
Vivek Anand |
95fd88 |
self.session.commit()
|
|
Vivek Anand |
95fd88 |
self.assertEqual(msg, 'User added')
|
|
Vivek Anand |
95fd88 |
|
|
Vivek Anand |
95fd88 |
user = pagure.lib.get_user(self.session, key='foo')
|
|
Vivek Anand |
95fd88 |
# He should be an admin
|
|
Vivek Anand |
95fd88 |
access_obj = pagure.lib.get_obj_access(
|
|
Vivek Anand |
95fd88 |
self.session,
|
|
Vivek Anand |
95fd88 |
project_obj=project,
|
|
Vivek Anand |
95fd88 |
obj=user
|
|
Vivek Anand |
95fd88 |
)
|
|
Vivek Anand |
95fd88 |
self.assertEqual(access_obj.access, 'admin')
|
|
Vivek Anand |
95fd88 |
|
|
Vivek Anand |
95fd88 |
# Update and check for commit access
|
|
Vivek Anand |
95fd88 |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
95fd88 |
self.session,
|
|
Vivek Anand |
95fd88 |
project=project,
|
|
Vivek Anand |
95fd88 |
new_user='foo',
|
|
Vivek Anand |
95fd88 |
user='pingou',
|
|
Vivek Anand |
95fd88 |
access='commit'
|
|
Vivek Anand |
95fd88 |
)
|
|
Vivek Anand |
95fd88 |
self.session.commit()
|
|
Vivek Anand |
95fd88 |
self.assertEqual(msg, 'User access updated')
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
95fd88 |
|
|
Vivek Anand |
95fd88 |
# He should be a committer
|
|
Vivek Anand |
95fd88 |
access_obj = pagure.lib.get_obj_access(
|
|
Vivek Anand |
95fd88 |
self.session,
|
|
Vivek Anand |
95fd88 |
project_obj=project,
|
|
Vivek Anand |
95fd88 |
obj=user
|
|
Vivek Anand |
95fd88 |
)
|
|
Vivek Anand |
95fd88 |
self.assertEqual(access_obj.access, 'commit')
|
|
Vivek Anand |
95fd88 |
|
|
Vivek Anand |
95fd88 |
# Update and check for ticket access
|
|
Vivek Anand |
95fd88 |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
95fd88 |
self.session,
|
|
Vivek Anand |
95fd88 |
project=project,
|
|
Vivek Anand |
95fd88 |
new_user='foo',
|
|
Vivek Anand |
95fd88 |
user='pingou',
|
|
Vivek Anand |
95fd88 |
access='ticket'
|
|
Vivek Anand |
95fd88 |
)
|
|
Vivek Anand |
95fd88 |
self.session.commit()
|
|
Vivek Anand |
95fd88 |
self.assertEqual(msg, 'User access updated')
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
95fd88 |
|
|
Vivek Anand |
95fd88 |
# He should be a ticketer
|
|
Vivek Anand |
95fd88 |
access_obj = pagure.lib.get_obj_access(
|
|
Vivek Anand |
95fd88 |
self.session,
|
|
Vivek Anand |
95fd88 |
project_obj=project,
|
|
Vivek Anand |
95fd88 |
obj=user
|
|
Vivek Anand |
95fd88 |
)
|
|
Vivek Anand |
95fd88 |
self.assertEqual(access_obj.access, 'ticket')
|
|
Vivek Anand |
95fd88 |
|
|
Vivek Anand |
015a64 |
def test_get_obj_access_group(self):
|
|
Vivek Anand |
015a64 |
""" Test the get_obj_access method of pagure.lib
|
|
Vivek Anand |
015a64 |
for model.PagureGroup object """
|
|
Vivek Anand |
015a64 |
|
|
Vivek Anand |
015a64 |
# Create the projects
|
|
Vivek Anand |
015a64 |
tests.create_projects(self.session)
|
|
Vivek Anand |
015a64 |
|
|
Vivek Anand |
015a64 |
# Create a group in database
|
|
Vivek Anand |
015a64 |
msg = pagure.lib.add_group(
|
|
Vivek Anand |
015a64 |
self.session,
|
|
Vivek Anand |
015a64 |
group_name='JL',
|
|
Vivek Anand |
015a64 |
display_name='Justice League',
|
|
Vivek Anand |
015a64 |
description='Nope, it\'s not JLA anymore',
|
|
Vivek Anand |
015a64 |
group_type='user',
|
|
Vivek Anand |
015a64 |
user='foo',
|
|
Vivek Anand |
015a64 |
is_admin=False,
|
|
Pierre-Yves Chibon |
b130e5 |
blacklist=pagure.config.config.get('BLACKLISTED_PROJECTS')
|
|
Vivek Anand |
015a64 |
)
|
|
Vivek Anand |
015a64 |
|
|
Vivek Anand |
015a64 |
self.assertEqual(
|
|
Vivek Anand |
015a64 |
msg,
|
|
Vivek Anand |
015a64 |
'User `foo` added to the group `JL`.'
|
|
Vivek Anand |
015a64 |
)
|
|
Vivek Anand |
015a64 |
|
|
Vivek Anand |
015a64 |
# Add a group object - make him an admin first
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
015a64 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
015a64 |
self.session,
|
|
Vivek Anand |
015a64 |
project=project,
|
|
Vivek Anand |
015a64 |
new_group='JL',
|
|
Vivek Anand |
015a64 |
user='pingou'
|
|
Vivek Anand |
015a64 |
)
|
|
Vivek Anand |
015a64 |
self.session.commit()
|
|
Vivek Anand |
015a64 |
self.assertEqual(msg, 'Group added')
|
|
Vivek Anand |
015a64 |
|
|
Vivek Anand |
015a64 |
group = pagure.lib.search_groups(self.session, group_name='JL')
|
|
Vivek Anand |
015a64 |
# He should be an admin
|
|
Vivek Anand |
015a64 |
access_obj = pagure.lib.get_obj_access(
|
|
Vivek Anand |
015a64 |
self.session,
|
|
Vivek Anand |
015a64 |
project_obj=project,
|
|
Vivek Anand |
015a64 |
obj=group
|
|
Vivek Anand |
015a64 |
)
|
|
Vivek Anand |
015a64 |
self.assertEqual(access_obj.access, 'admin')
|
|
Vivek Anand |
015a64 |
|
|
Vivek Anand |
015a64 |
# Update and check for commit access
|
|
Vivek Anand |
015a64 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
015a64 |
self.session,
|
|
Vivek Anand |
015a64 |
project=project,
|
|
Vivek Anand |
015a64 |
new_group='JL',
|
|
Vivek Anand |
015a64 |
user='pingou',
|
|
Vivek Anand |
015a64 |
access='commit'
|
|
Vivek Anand |
015a64 |
)
|
|
Vivek Anand |
015a64 |
self.session.commit()
|
|
Vivek Anand |
015a64 |
self.assertEqual(msg, 'Group access updated')
|
|
Vivek Anand |
015a64 |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
015a64 |
# He should be a committer
|
|
Vivek Anand |
015a64 |
access_obj = pagure.lib.get_obj_access(
|
|
Vivek Anand |
015a64 |
self.session,
|
|
Vivek Anand |
015a64 |
project_obj=project,
|
|
Vivek Anand |
015a64 |
obj=group,
|
|
Vivek Anand |
015a64 |
)
|
|
Vivek Anand |
015a64 |
self.assertEqual(access_obj.access, 'commit')
|
|
Vivek Anand |
015a64 |
|
|
Vivek Anand |
015a64 |
# Update and check for ticket access
|
|
Vivek Anand |
015a64 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
015a64 |
self.session,
|
|
Vivek Anand |
015a64 |
project=project,
|
|
Vivek Anand |
015a64 |
new_group='JL',
|
|
Vivek Anand |
015a64 |
user='pingou',
|
|
Vivek Anand |
015a64 |
access='ticket'
|
|
Vivek Anand |
015a64 |
)
|
|
Vivek Anand |
015a64 |
self.session.commit()
|
|
Vivek Anand |
015a64 |
self.assertEqual(msg, 'Group access updated')
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Vivek Anand |
015a64 |
|
|
Vivek Anand |
015a64 |
# He should be a ticketer
|
|
Vivek Anand |
015a64 |
access_obj = pagure.lib.get_obj_access(
|
|
Vivek Anand |
015a64 |
self.session,
|
|
Vivek Anand |
015a64 |
project_obj=project,
|
|
Vivek Anand |
015a64 |
obj=group,
|
|
Vivek Anand |
015a64 |
)
|
|
Vivek Anand |
015a64 |
self.assertEqual(access_obj.access, 'ticket')
|
|
Vivek Anand |
015a64 |
|
|
Pierre-Yves Chibon |
c26db6 |
def test_set_watch_obj(self):
|
|
Pierre-Yves Chibon |
c26db6 |
""" Test the set_watch_obj method in pagure.lib """
|
|
Pierre-Yves Chibon |
f8cc4e |
# Create the project ns/test
|
|
Pierre-Yves Chibon |
f8cc4e |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
f8cc4e |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
f8cc4e |
name='test3',
|
|
Pierre-Yves Chibon |
f8cc4e |
namespace='ns',
|
|
Pierre-Yves Chibon |
f8cc4e |
description='test project #1',
|
|
Pierre-Yves Chibon |
f8cc4e |
hook_token='aaabbbcccdd',
|
|
Pierre-Yves Chibon |
f8cc4e |
)
|
|
Pierre-Yves Chibon |
f8cc4e |
item.close_status = ['Invalid', 'Insufficient data', 'Fixed']
|
|
Pierre-Yves Chibon |
f8cc4e |
self.session.add(item)
|
|
Pierre-Yves Chibon |
f8cc4e |
self.session.commit()
|
|
Pierre-Yves Chibon |
f8cc4e |
|
|
Pierre-Yves Chibon |
f8cc4e |
# Create the ticket
|
|
Pierre-Yves Chibon |
f8cc4e |
iss = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
f8cc4e |
issue_id=4,
|
|
Pierre-Yves Chibon |
f8cc4e |
session=self.session,
|
|
Pierre-Yves Chibon |
f8cc4e |
repo=item,
|
|
Pierre-Yves Chibon |
f8cc4e |
title='test issue',
|
|
Pierre-Yves Chibon |
f8cc4e |
content='content test issue',
|
|
Pierre-Yves Chibon |
f8cc4e |
user='pingou',
|
|
Pierre-Yves Chibon |
f8cc4e |
ticketfolder=None,
|
|
Pierre-Yves Chibon |
f8cc4e |
)
|
|
Pierre-Yves Chibon |
f8cc4e |
self.session.commit()
|
|
Pierre-Yves Chibon |
f8cc4e |
self.assertEqual(iss.id, 4)
|
|
Pierre-Yves Chibon |
f8cc4e |
self.assertEqual(iss.title, 'test issue')
|
|
Pierre-Yves Chibon |
f8cc4e |
|
|
Pierre-Yves Chibon |
f8cc4e |
# Unknown user
|
|
Pierre-Yves Chibon |
f8cc4e |
self.assertRaises(
|
|
Pierre-Yves Chibon |
f8cc4e |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
c26db6 |
pagure.lib.set_watch_obj,
|
|
Pierre-Yves Chibon |
737aa4 |
self.session, 'unknown', iss, True
|
|
Pierre-Yves Chibon |
f8cc4e |
)
|
|
Pierre-Yves Chibon |
f8cc4e |
|
|
Pierre-Yves Chibon |
dc7cb8 |
# Invalid object to watch - project
|
|
Pierre-Yves Chibon |
dc7cb8 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
ede575 |
pagure.exceptions.InvalidObjectException,
|
|
Pierre-Yves Chibon |
dc7cb8 |
pagure.lib.set_watch_obj,
|
|
Pierre-Yves Chibon |
737aa4 |
self.session, 'foo', iss.project, True
|
|
Pierre-Yves Chibon |
dc7cb8 |
)
|
|
Pierre-Yves Chibon |
dc7cb8 |
|
|
Pierre-Yves Chibon |
dc7cb8 |
# Invalid object to watch - string
|
|
Pierre-Yves Chibon |
dc7cb8 |
self.assertRaises(
|
|
Pierre-Yves Chibon |
dc7cb8 |
AttributeError,
|
|
Pierre-Yves Chibon |
dc7cb8 |
pagure.lib.set_watch_obj,
|
|
Pierre-Yves Chibon |
737aa4 |
self.session, 'foo', 'ticket', True
|
|
Pierre-Yves Chibon |
dc7cb8 |
)
|
|
Pierre-Yves Chibon |
dc7cb8 |
|
|
Pierre-Yves Chibon |
f8cc4e |
# Watch the ticket
|
|
Pierre-Yves Chibon |
737aa4 |
out = pagure.lib.set_watch_obj(self.session, 'foo', iss, True)
|
|
Pierre-Yves Chibon |
f8cc4e |
self.assertEqual(out, 'You are now watching this issue')
|
|
Pierre-Yves Chibon |
f8cc4e |
|
|
Pierre-Yves Chibon |
f8cc4e |
# Un-watch the ticket
|
|
Pierre-Yves Chibon |
737aa4 |
out = pagure.lib.set_watch_obj(self.session, 'foo', iss, False)
|
|
Pierre-Yves Chibon |
f8cc4e |
self.assertEqual(out, 'You are no longer watching this issue')
|
|
Pierre-Yves Chibon |
ad2b94 |
|
|
Vivek Anand |
272efb |
|
|
Patrick Uiterwijk |
bc617a |
def test_tokenize_search_string(self):
|
|
Patrick Uiterwijk |
bc617a |
""" Test the tokenize_search_string function. """
|
|
Patrick Uiterwijk |
bc617a |
# These are the tests performed to make sure we tokenize correctly.
|
|
Patrick Uiterwijk |
bc617a |
# This is in the form: input string, custom fields, remaining pattern
|
|
Patrick Uiterwijk |
bc617a |
tests = [
|
|
Patrick Uiterwijk |
bc617a |
('test123', {}, 'test123'),
|
|
Patrick Uiterwijk |
bc617a |
('test:key test123', {'test': 'key'}, 'test123'),
|
|
Patrick Uiterwijk |
bc617a |
('test:"key with spaces" test123', {'test': 'key with spaces'},
|
|
Patrick Uiterwijk |
bc617a |
'test123'),
|
|
Patrick Uiterwijk |
bc617a |
('test123 test:key test456', {'test': 'key'}, 'test123 test456'),
|
|
Patrick Uiterwijk |
bc617a |
('test123 test:"key with spaces" key2:value12 test456',
|
|
Patrick Uiterwijk |
bc617a |
{'test': 'key with spaces', 'key2': 'value12'},
|
|
Patrick Uiterwijk |
bc617a |
'test123 test456')
|
|
Patrick Uiterwijk |
bc617a |
]
|
|
Patrick Uiterwijk |
bc617a |
for inp, flds, rem in tests:
|
|
Patrick Uiterwijk |
bc617a |
self.assertEqual(pagure.lib.tokenize_search_string(inp),
|
|
Patrick Uiterwijk |
bc617a |
(flds, rem))
|
|
Patrick Uiterwijk |
bc617a |
|
|
Pierre-Yves Chibon |
2ecb11 |
def test_save_report(self):
|
|
Pierre-Yves Chibon |
2ecb11 |
""" Test the save_report function. """
|
|
Pierre-Yves Chibon |
2ecb11 |
# Create the projects
|
|
Pierre-Yves Chibon |
2ecb11 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
2ecb11 |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Pierre-Yves Chibon |
2ecb11 |
self.assertEqual(project.reports, {})
|
|
Pierre-Yves Chibon |
2ecb11 |
|
|
Pierre-Yves Chibon |
2ecb11 |
name = 'test report'
|
|
Pierre-Yves Chibon |
2ecb11 |
url = '?foo=bar&baz=biz'
|
|
Pierre-Yves Chibon |
2ecb11 |
|
|
Pierre-Yves Chibon |
2ecb11 |
pagure.lib.save_report(
|
|
Pierre-Yves Chibon |
2ecb11 |
self.session,
|
|
Pierre-Yves Chibon |
2ecb11 |
repo=project,
|
|
Pierre-Yves Chibon |
2ecb11 |
name=name,
|
|
Pierre-Yves Chibon |
2ecb11 |
url=url,
|
|
Pierre-Yves Chibon |
2ecb11 |
username=None
|
|
Pierre-Yves Chibon |
2ecb11 |
)
|
|
Pierre-Yves Chibon |
2ecb11 |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Pierre-Yves Chibon |
2ecb11 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
2ecb11 |
project.reports,
|
|
Pierre-Yves Chibon |
2ecb11 |
{'test report': {'baz': 'biz', 'foo': 'bar'}}
|
|
Pierre-Yves Chibon |
2ecb11 |
)
|
|
Pierre-Yves Chibon |
2ecb11 |
|
|
Pierre-Yves Chibon |
2ecb11 |
name = 'test report #2'
|
|
Pierre-Yves Chibon |
2ecb11 |
url = '?foo=bar&foo=none&foo=baz'
|
|
Pierre-Yves Chibon |
2ecb11 |
|
|
Pierre-Yves Chibon |
2ecb11 |
pagure.lib.save_report(
|
|
Pierre-Yves Chibon |
2ecb11 |
self.session,
|
|
Pierre-Yves Chibon |
2ecb11 |
repo=project,
|
|
Pierre-Yves Chibon |
2ecb11 |
name=name,
|
|
Pierre-Yves Chibon |
2ecb11 |
url=url,
|
|
Pierre-Yves Chibon |
2ecb11 |
username=None
|
|
Pierre-Yves Chibon |
2ecb11 |
)
|
|
Pierre-Yves Chibon |
2ecb11 |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Pierre-Yves Chibon |
2ecb11 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
2ecb11 |
project.reports,
|
|
Pierre-Yves Chibon |
2ecb11 |
{
|
|
Pierre-Yves Chibon |
2ecb11 |
'test report': {'baz': 'biz', 'foo': 'bar'},
|
|
Pierre-Yves Chibon |
2ecb11 |
'test report #2': {'foo': ['bar', 'none', 'baz']}
|
|
Pierre-Yves Chibon |
2ecb11 |
}
|
|
Pierre-Yves Chibon |
2ecb11 |
)
|
|
Pierre-Yves Chibon |
2ecb11 |
|
|
Pierre-Yves Chibon |
c7f385 |
def test_text2markdown_table(self):
|
|
Pierre-Yves Chibon |
c7f385 |
""" Test the text2markdown function with a markdown table. """
|
|
Pierre-Yves Chibon |
2df627 |
v = tuple([int(c) for c in markdown.version.split('.')])
|
|
Pierre-Yves Chibon |
2df627 |
|
|
Pierre-Yves Chibon |
2df627 |
if v < (2, 6, 7):
|
|
Pierre-Yves Chibon |
50c035 |
raise unittest.case.SkipTest(
|
|
Pierre-Yves Chibon |
50c035 |
'Skipping on old markdown that do not strip the orientation row'
|
|
Pierre-Yves Chibon |
50c035 |
)
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
text = """
|
|
Pierre-Yves Chibon |
c7f385 |
| Left-aligned | Center-aligned | Right-aligned |
|
|
Pierre-Yves Chibon |
c7f385 |
| :--- | :---: | ---: |
|
|
Pierre-Yves Chibon |
c7f385 |
| git status | git status | git status |
|
|
Pierre-Yves Chibon |
c7f385 |
| git diff | git diff | git diff |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
foo bar
|
|
Pierre-Yves Chibon |
c7f385 |
"""
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
expected = """
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
Left-aligned
|
|
Pierre-Yves Chibon |
c7f385 |
Center-aligned
|
|
Pierre-Yves Chibon |
c7f385 |
Right-aligned
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
git status
|
|
Pierre-Yves Chibon |
c7f385 |
git status
|
|
Pierre-Yves Chibon |
c7f385 |
git status
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
git diff
|
|
Pierre-Yves Chibon |
c7f385 |
git diff
|
|
Pierre-Yves Chibon |
c7f385 |
git diff
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
c7f385 |
foo bar """
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Pierre-Yves Chibon |
b130e5 |
with self.app.application.app_context():
|
|
Pierre-Yves Chibon |
c7f385 |
html = pagure.lib.text2markdown(text)
|
|
Pierre-Yves Chibon |
c7f385 |
self.assertEqual(html, expected)
|
|
Pierre-Yves Chibon |
c7f385 |
|
|
Patrick Uiterwijk |
bc617a |
|
|
Pierre-Yves Chibon |
50c035 |
def test_text2markdown_table_old_mk(self):
|
|
Pierre-Yves Chibon |
50c035 |
""" Test the text2markdown function with a markdown table using the old
|
|
Pierre-Yves Chibon |
50c035 |
format where the orientation instruction are provided next to the column
|
|
Pierre-Yves Chibon |
50c035 |
delimiter unlike what can be done with more recent version of markdown.
|
|
Pierre-Yves Chibon |
50c035 |
"""
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
text = """
|
|
Pierre-Yves Chibon |
50c035 |
| Left-aligned | Center-aligned | Right-aligned |
|
|
Pierre-Yves Chibon |
50c035 |
|:--- |:--------------:| ---:|
|
|
Pierre-Yves Chibon |
50c035 |
| git status | git status | git status |
|
|
Pierre-Yves Chibon |
50c035 |
| git diff | git diff | git diff |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
foo bar
|
|
Pierre-Yves Chibon |
50c035 |
"""
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
expected = """
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
Left-aligned
|
|
Pierre-Yves Chibon |
50c035 |
Center-aligned
|
|
Pierre-Yves Chibon |
50c035 |
Right-aligned
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
git status
|
|
Pierre-Yves Chibon |
50c035 |
git status
|
|
Pierre-Yves Chibon |
50c035 |
git status
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
git diff
|
|
Pierre-Yves Chibon |
50c035 |
git diff
|
|
Pierre-Yves Chibon |
50c035 |
git diff
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
50c035 |
foo bar """
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
b130e5 |
with self.app.application.app_context():
|
|
Pierre-Yves Chibon |
50c035 |
html = pagure.lib.text2markdown(text)
|
|
Pierre-Yves Chibon |
50c035 |
self.assertEqual(html, expected)
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Pierre-Yves Chibon |
a3901b |
def test_set_redis(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the set_redis function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(pagure.lib.REDIS)
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.set_redis('0.0.0.0', 6379, 0)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNotNone(pagure.lib.REDIS)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_set_pagure_ci(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the set_pagure_ci function of pagure.lib. """
|
|
Pierre-Yves Chibon |
f21734 |
# self.assertIn(pagure.lib.PAGURE_CI, [None, ['jenkins']])
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.set_pagure_ci(True)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNotNone(pagure.lib.PAGURE_CI)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(pagure.lib.PAGURE_CI)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_user_invalid_user(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the get_user function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.get_user,
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
'unknown'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_user_username(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the get_user function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.get_user(self.session, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(user.username, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_user_email(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the get_user function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.get_user(self.session, 'bar@pingou.com')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(user.username, 'pingou')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_is_valid_ssh_key_empty(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the is_valid_ssh_key function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(pagure.lib.is_valid_ssh_key(''))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Patrick Uiterwijk |
73606a |
def test_is_valid_ssh_key_invalid(self):
|
|
Patrick Uiterwijk |
73606a |
""" Test the is_valid_ssh_key function of pagure.lib. """
|
|
Patrick Uiterwijk |
73606a |
self.assertEqual(pagure.lib.is_valid_ssh_key('nonsense'), False)
|
|
Patrick Uiterwijk |
73606a |
|
|
Patrick Uiterwijk |
73606a |
def test_is_valid_ssh_key(self):
|
|
Patrick Uiterwijk |
73606a |
""" Test the is_valid_ssh_key function of pagure.lib. """
|
|
Patrick Uiterwijk |
73606a |
keyinfo = pagure.lib.is_valid_ssh_key('''ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDtgzSO9d1IrKdmyBFUvtAJPLgGOhp0lSySkWRSe+/+3KXYjSnsLnCJQlO5M7JfaXhtTHEow86rh4W9+FoJdzo5iocAwH5xPZ5ttHLy7VHgTzNMUeMgKpjy6bBOdPoGPPG4mo7QCMCRJdWBRDv4OSEMLU5jQAvC272YK2V8L918VQ== root@test''')
|
|
Patrick Uiterwijk |
73606a |
keys = keyinfo.split('\n')
|
|
Patrick Uiterwijk |
73606a |
self.assertEqual(len(keys), 2)
|
|
Patrick Uiterwijk |
73606a |
self.assertEqual(keys[1], '')
|
|
Patrick Uiterwijk |
73606a |
key = keys[0].split(' ')
|
|
Patrick Uiterwijk |
73606a |
self.assertEqual(key[0], '1024')
|
|
Patrick Uiterwijk |
73606a |
# We should always get the MD5 version
|
|
Patrick Uiterwijk |
73606a |
if key[1].startswith('MD5'):
|
|
Patrick Uiterwijk |
73606a |
self.assertEqual(key[1], 'MD5:f9:a2:14:97:a5:42:78:f7:16:f8:fb:73:ba:f0:f4:fe')
|
|
Patrick Uiterwijk |
73606a |
else:
|
|
Patrick Uiterwijk |
73606a |
self.assertEqual(key[1], 'f9:a2:14:97:a5:42:78:f7:16:f8:fb:73:ba:f0:f4:fe')
|
|
Patrick Uiterwijk |
73606a |
self.assertEqual(key[3], '(RSA)')
|
|
Patrick Uiterwijk |
73606a |
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_deploykeys_ssh_keys_on_disk_empty(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_deploykeys_ssh_keys_on_disk function of
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_deploykeys_ssh_keys_on_disk(None, None))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertFalse(
|
|
Pierre-Yves Chibon |
a3901b |
os.path.exists(os.path.join(self.path, 'deploykeys', 'test')))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_deploykeys_ssh_keys_on_disk_nokey(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_deploykeys_ssh_keys_on_disk function of
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_deploykeys_ssh_keys_on_disk(
|
|
Pierre-Yves Chibon |
a3901b |
project, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(
|
|
Pierre-Yves Chibon |
a3901b |
os.path.exists(os.path.join(self.path, 'deploykeys', 'test')))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
os.listdir(os.path.join(self.path, 'deploykeys', 'test')), [])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.is_valid_ssh_key', MagicMock(return_value='foo bar'))
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_deploykeys_ssh_keys_on_disk(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_deploykeys_ssh_keys_on_disk function of
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Add a deploy key to the project
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.add_deploykey_to_project(
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
ssh_key='foo bar',
|
|
Pierre-Yves Chibon |
a3901b |
pushaccess=False,
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Deploy key added')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_deploykeys_ssh_keys_on_disk(
|
|
Pierre-Yves Chibon |
a3901b |
project, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(
|
|
Pierre-Yves Chibon |
a3901b |
os.path.exists(os.path.join(self.path, 'deploykeys', 'test')))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
os.listdir(os.path.join(self.path, 'deploykeys', 'test')),
|
|
Pierre-Yves Chibon |
a3901b |
['deploykey_test_1.pub'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Remove the deploykey
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.session.delete(project.deploykeys[0])
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Remove the file on disk
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_deploykeys_ssh_keys_on_disk(
|
|
Pierre-Yves Chibon |
a3901b |
project, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(
|
|
Pierre-Yves Chibon |
a3901b |
os.path.exists(os.path.join(self.path, 'deploykeys', 'test')))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
os.listdir(os.path.join(self.path, 'deploykeys', 'test')), [])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.is_valid_ssh_key', MagicMock(return_value='\nfoo bar'))
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_deploykeys_ssh_keys_on_disk_empty_first_key(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_deploykeys_ssh_keys_on_disk function of
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Add a deploy key to the project
|
|
Pierre-Yves Chibon |
a3901b |
new_key_obj = pagure.lib.model.DeployKey(
|
|
Pierre-Yves Chibon |
a3901b |
project_id=project.id,
|
|
Pierre-Yves Chibon |
a3901b |
pushaccess=False,
|
|
Pierre-Yves Chibon |
a3901b |
public_ssh_key='\n foo bar',
|
|
Pierre-Yves Chibon |
a3901b |
ssh_short_key='\n foo bar',
|
|
Pierre-Yves Chibon |
a3901b |
ssh_search_key='\n foo bar',
|
|
Pierre-Yves Chibon |
a3901b |
creator_user_id=1 # pingou
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(new_key_obj)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_deploykeys_ssh_keys_on_disk(
|
|
Pierre-Yves Chibon |
a3901b |
project, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(
|
|
Pierre-Yves Chibon |
a3901b |
os.path.exists(os.path.join(self.path, 'deploykeys', 'test')))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
os.listdir(os.path.join(self.path, 'deploykeys', 'test')),
|
|
Pierre-Yves Chibon |
a3901b |
[])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_deploykeys_ssh_keys_on_disk_invalid(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_deploykeys_ssh_keys_on_disk function of
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Add a deploy key to the project
|
|
Pierre-Yves Chibon |
a3901b |
new_key_obj = pagure.lib.model.DeployKey(
|
|
Pierre-Yves Chibon |
a3901b |
project_id=project.id,
|
|
Pierre-Yves Chibon |
a3901b |
pushaccess=False,
|
|
Pierre-Yves Chibon |
a3901b |
public_ssh_key='foo bar',
|
|
Pierre-Yves Chibon |
a3901b |
ssh_short_key='foo bar',
|
|
Pierre-Yves Chibon |
a3901b |
ssh_search_key='foo bar',
|
|
Pierre-Yves Chibon |
a3901b |
creator_user_id=1 # pingou
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(new_key_obj)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_deploykeys_ssh_keys_on_disk(
|
|
Pierre-Yves Chibon |
a3901b |
project, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(
|
|
Pierre-Yves Chibon |
a3901b |
os.path.exists(os.path.join(self.path, 'deploykeys', 'test')))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
os.listdir(os.path.join(self.path, 'deploykeys', 'test')),
|
|
Pierre-Yves Chibon |
a3901b |
[])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_user_ssh_keys_on_disk_none(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_user_ssh_keys_on_disk function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_user_ssh_keys_on_disk(None, None))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_user_ssh_keys_on_disk_no_key(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_user_ssh_keys_on_disk function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.get_user(self.session, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_user_ssh_keys_on_disk(user, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_user_ssh_keys_on_disk_invalid_key(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_user_ssh_keys_on_disk function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.get_user(self.session, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
user.public_ssh_key = 'foo\n bar'
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(user)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_user_ssh_keys_on_disk(user, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_user_ssh_keys_on_disk_empty_first_key(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_user_ssh_keys_on_disk function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.get_user(self.session, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
user.public_ssh_key = '\nbar'
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(user)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_user_ssh_keys_on_disk(user, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.is_valid_ssh_key', MagicMock(return_value='foo bar'))
|
|
Pierre-Yves Chibon |
a3901b |
def test_create_user_ssh_keys_on_disk(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the create_user_ssh_keys_on_disk function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.get_user(self.session, 'foo')
|
|
Pierre-Yves Chibon |
a3901b |
user.public_ssh_key = 'foo bar'
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(user)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_user_ssh_keys_on_disk(user, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Re-generate the ssh keys on disk:
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNone(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.create_user_ssh_keys_on_disk(user, self.path))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_update_user_settings_invalid_user(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the update_user_settings function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.update_user_settings,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
settings={},
|
|
Pierre-Yves Chibon |
a3901b |
user='invalid'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_update_user_settings_no_change(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the update_user_settings function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# First update the setting
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.update_user_settings(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
settings={'cc_me_to_my_actions': True},
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Successfully edited your settings')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Then change it back to its default
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.update_user_settings(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
settings={},
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Successfully edited your settings')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_update_user_settings_no_data(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the update_user_settings function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.update_user_settings(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
settings={'cc_me_to_my_actions': False},
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'No settings to change')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_update_user_settings(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the update_user_settings function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.update_user_settings(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
settings={'cc_me_to_my_actions': True},
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Successfully edited your settings')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_email_to_user_with_logs(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the add_email_to_user function of pagure.lib when there
|
|
Pierre-Yves Chibon |
a3901b |
are log entries associated to the email added.
|
|
Pierre-Yves Chibon |
a3901b |
"""
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.search_user(self.session, username='pingou')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Add a couple of log entries associated with the new email
|
|
Pierre-Yves Chibon |
a3901b |
for i in range(3):
|
|
Pierre-Yves Chibon |
a3901b |
log = pagure.lib.model.PagureLog(
|
|
Pierre-Yves Chibon |
a3901b |
user_email='new_email@pingoured.fr',
|
|
Pierre-Yves Chibon |
a3901b |
log_type='commit',
|
|
Pierre-Yves Chibon |
a3901b |
ref_id=i
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.add(log)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Check emails before
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(user.emails), 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Add the new_email to the user
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.add_email_to_user(
|
|
Pierre-Yves Chibon |
a3901b |
self.session, user, 'new_email@pingoured.fr'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Check emails after
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(user.emails), 3)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.is_valid_ssh_key', MagicMock(return_value='foo bar'))
|
|
Pierre-Yves Chibon |
88a128 |
def test_update_user_ssh_valid_key(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the update_user_ssh function of pagure.lib. """
|
|
Pierre-Yves Chibon |
88a128 |
pagure.SESSION = self.session
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.update_user_ssh(
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
ssh_key='foo key',
|
|
Pierre-Yves Chibon |
a3901b |
keydir=self.path,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
88a128 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(
|
|
Pierre-Yves Chibon |
a3901b |
os.path.exists(os.path.join(self.path, 'keys_0'))
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
os.listdir(os.path.join(self.path, 'keys_0')),
|
|
Pierre-Yves Chibon |
a3901b |
['pingou.pub']
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_user_pending_email_existing_email(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the add_user_pending_email function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.search_user(self.session, username='pingou')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.add_user_pending_email,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
userobj=user,
|
|
Pierre-Yves Chibon |
a3901b |
email='foo@bar.com'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.notify.notify_new_email', MagicMock(return_value=True))
|
|
Pierre-Yves Chibon |
a3901b |
def test_add_user_pending_email(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the add_user_pending_email function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.search_user(self.session, username='pingou')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(user.emails), 2)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(user.emails_pending), 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.add_user_pending_email(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
userobj=user,
|
|
Pierre-Yves Chibon |
a3901b |
email='new_mail@pingoured.fr'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(user.emails), 2)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(user.emails_pending), 1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_resend_pending_email_someone_else_email(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the resend_pending_email function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.search_user(self.session, username='pingou')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.resend_pending_email,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
userobj=user,
|
|
Pierre-Yves Chibon |
a3901b |
email='foo@bar.com'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_resend_pending_email_email_validated(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the resend_pending_email function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
user = pagure.lib.search_user(self.session, username='pingou')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.PagureException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.resend_pending_email,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
userobj=user,
|
|
Pierre-Yves Chibon |
a3901b |
email='foo@pingou.com'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_acls(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the get_acls function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
acls = pagure.lib.get_acls(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
f21734 |
sorted([a.name for a in acls]),
|
|
Pierre-Yves Chibon |
a3901b |
[
|
|
Pierre-Yves Chibon |
8715b5 |
'commit_flag',
|
|
Pierre-Yves Chibon |
a3901b |
'create_project',
|
|
Pierre-Yves Chibon |
a3901b |
'fork_project',
|
|
Matt Prahl |
489ad1 |
'generate_acls_project',
|
|
Pierre-Yves Chibon |
a3901b |
'issue_assign',
|
|
Pierre-Yves Chibon |
a3901b |
'issue_change_status',
|
|
Pierre-Yves Chibon |
a3901b |
'issue_comment',
|
|
Pierre-Yves Chibon |
a3901b |
'issue_create',
|
|
Pierre-Yves Chibon |
a3901b |
'issue_subscribe',
|
|
Pierre-Yves Chibon |
a3901b |
'issue_update',
|
|
Pierre-Yves Chibon |
a3901b |
'issue_update_custom_fields',
|
|
Pierre-Yves Chibon |
a3901b |
'issue_update_milestone',
|
|
Pierre-Yves Chibon |
0e867d |
'modify_project',
|
|
Pierre-Yves Chibon |
a3901b |
'pull_request_close',
|
|
Pierre-Yves Chibon |
a3901b |
'pull_request_comment',
|
|
Pierre-Yves Chibon |
f21734 |
'pull_request_create',
|
|
Pierre-Yves Chibon |
a3901b |
'pull_request_flag',
|
|
Pierre-Yves Chibon |
16c2c0 |
'pull_request_merge',
|
|
Pierre-Yves Chibon |
16c2c0 |
'pull_request_subscribe',
|
|
Pierre-Yves Chibon |
a3901b |
]
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_acls_restrict_one(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the get_acls function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
acls = pagure.lib.get_acls(self.session, restrict='create_project')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual([a.name for a in acls], ['create_project'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_get_acls_restrict_two(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the get_acls function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
acls = pagure.lib.get_acls(
|
|
Pierre-Yves Chibon |
a3901b |
self.session, restrict=['create_project', 'issue_create'])
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
[a.name for a in acls],
|
|
Pierre-Yves Chibon |
a3901b |
['create_project', 'issue_create'])
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_filter_img_src(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the filter_img_src function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
for name in ('alt', 'height', 'width', 'class'):
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(pagure.lib.filter_img_src(name, 'caption'))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(pagure.lib.filter_img_src(
|
|
Pierre-Yves Chibon |
a3901b |
'src', '/path/to/image'))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertTrue(pagure.lib.filter_img_src(
|
|
Pierre-Yves Chibon |
a3901b |
'src', 'http://pagure.org/path/to/image'))
|
|
Pierre-Yves Chibon |
a3901b |
self.assertFalse(pagure.lib.filter_img_src(
|
|
Pierre-Yves Chibon |
a3901b |
'src', 'http://foo.org/path/to/image'))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertFalse(pagure.lib.filter_img_src(
|
|
Pierre-Yves Chibon |
a3901b |
'anything', 'http://foo.org/path/to/image'))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_clean_input(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the clean_input function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
text = 'Click here'
|
|
Pierre-Yves Chibon |
a3901b |
output = pagure.lib.clean_input(text)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(output, text)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_could_be_text(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the could_be_text function of pagure.lib. """
|
|
Aurélien Bompard |
626417 |
self.assertTrue(pagure.lib.could_be_text(b'foo'))
|
|
Aurélien Bompard |
626417 |
self.assertTrue(pagure.lib.could_be_text('fĂ¢Ă¶'.encode("utf-8")))
|
|
Aurélien Bompard |
626417 |
self.assertFalse(pagure.lib.could_be_text(b'\x89PNG\r\n\x1a\n\x00'))
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_set_custom_key_fields_empty(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the set_custom_key_fields function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNotNone(project)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_fields(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
fields=[],
|
|
Pierre-Yves Chibon |
a3901b |
types=[],
|
|
Pierre-Yves Chibon |
a3901b |
data=[],
|
|
Pierre-Yves Chibon |
a3901b |
notify=False
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'List of custom fields updated')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_set_custom_key_fields(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the set_custom_key_fields function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNotNone(project)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Set a custom key
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_fields(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
fields=['upstream'],
|
|
Pierre-Yves Chibon |
a3901b |
types=['url'],
|
|
Pierre-Yves Chibon |
a3901b |
data=[None],
|
|
Pierre-Yves Chibon |
a3901b |
notify=False
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'List of custom fields updated')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Set another one, with notifications on
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_fields(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
fields=['bugzilla_url'],
|
|
Pierre-Yves Chibon |
a3901b |
types=['url'],
|
|
Pierre-Yves Chibon |
a3901b |
data=[None],
|
|
Pierre-Yves Chibon |
a3901b |
notify=['on']
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'List of custom fields updated')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Re-set the second one but with notifications off
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_fields(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
fields=['bugzilla_url'],
|
|
Pierre-Yves Chibon |
a3901b |
types=['url'],
|
|
Pierre-Yves Chibon |
a3901b |
data=[None],
|
|
Pierre-Yves Chibon |
a3901b |
notify=['off']
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'List of custom fields updated')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS')
|
|
Pierre-Yves Chibon |
a3901b |
def test_set_custom_key_value_boolean(self, mock_redis):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the set_custom_key_value function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
mock_redis.return_value = True
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNotNone(project)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Set a custom key
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_fields(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
fields=['tested'],
|
|
Pierre-Yves Chibon |
a3901b |
types=['boolean'],
|
|
Pierre-Yves Chibon |
a3901b |
data=[None],
|
|
Pierre-Yves Chibon |
a3901b |
notify=False
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'List of custom fields updated')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Create issues
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
repo=project,
|
|
Pierre-Yves Chibon |
a3901b |
title='Test issue',
|
|
Pierre-Yves Chibon |
a3901b |
content='We should work on this',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
ticketfolder=None
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg.title, 'Test issue')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, project, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.issue_keys), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.issue_keys[0].key_type, 'boolean')
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_value(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
issue=issue,
|
|
Pierre-Yves Chibon |
a3901b |
key=project.issue_keys[0],
|
|
Pierre-Yves Chibon |
a3901b |
value=True
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Custom field tested adjusted to True')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Update it a second time to trigger edit
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_value(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
issue=issue,
|
|
Pierre-Yves Chibon |
a3901b |
key=project.issue_keys[0],
|
|
Pierre-Yves Chibon |
a3901b |
value=False
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
88a128 |
if str(self.session.bind.engine.url).startswith('sqlite'):
|
|
Pierre-Yves Chibon |
88a128 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
88a128 |
msg, 'Custom field tested reset (from 1)')
|
|
Pierre-Yves Chibon |
88a128 |
else:
|
|
Pierre-Yves Chibon |
88a128 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
88a128 |
msg, 'Custom field tested reset (from true)')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
baaf54 |
self.assertEqual(mock_redis.publish.call_count, 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS')
|
|
Pierre-Yves Chibon |
a3901b |
def test_set_custom_key_value_boolean_private_issue(self, mock_redis):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the set_custom_key_value function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
mock_redis.return_value = True
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNotNone(project)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Set a custom key
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_fields(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
fields=['tested'],
|
|
Pierre-Yves Chibon |
a3901b |
types=['boolean'],
|
|
Pierre-Yves Chibon |
a3901b |
data=[None],
|
|
Pierre-Yves Chibon |
a3901b |
notify=False
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'List of custom fields updated')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Create issues
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
repo=project,
|
|
Pierre-Yves Chibon |
a3901b |
title='Test issue',
|
|
Pierre-Yves Chibon |
a3901b |
content='We should work on this',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
private=True,
|
|
Pierre-Yves Chibon |
a3901b |
ticketfolder=None
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg.title, 'Test issue')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, project, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.issue_keys), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.issue_keys[0].key_type, 'boolean')
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_value(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
issue=issue,
|
|
Pierre-Yves Chibon |
a3901b |
key=project.issue_keys[0],
|
|
Pierre-Yves Chibon |
a3901b |
value=True
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Custom field tested adjusted to True')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Update it a second time to trigger edit
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_value(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
issue=issue,
|
|
Pierre-Yves Chibon |
a3901b |
key=project.issue_keys[0],
|
|
Pierre-Yves Chibon |
a3901b |
value=False
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
88a128 |
if str(self.session.bind.engine.url).startswith('sqlite'):
|
|
Pierre-Yves Chibon |
88a128 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
88a128 |
msg, 'Custom field tested reset (from 1)')
|
|
Pierre-Yves Chibon |
88a128 |
else:
|
|
Pierre-Yves Chibon |
88a128 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
88a128 |
msg, 'Custom field tested reset (from true)')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(mock_redis.publish.call_count, 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
@patch('pagure.lib.REDIS')
|
|
Pierre-Yves Chibon |
a3901b |
def test_set_custom_key_value_text(self, mock_redis):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the set_custom_key_value function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
mock_redis.return_value = True
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
project = pagure.lib._get_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a3901b |
self.assertIsNotNone(project)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Set a custom key
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_fields(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
project=project,
|
|
Pierre-Yves Chibon |
a3901b |
fields=['tested'],
|
|
Pierre-Yves Chibon |
a3901b |
types=['text'],
|
|
Pierre-Yves Chibon |
a3901b |
data=[None],
|
|
Pierre-Yves Chibon |
a3901b |
notify=False
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'List of custom fields updated')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Create issues
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
repo=project,
|
|
Pierre-Yves Chibon |
a3901b |
title='Test issue',
|
|
Pierre-Yves Chibon |
a3901b |
content='We should work on this',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
ticketfolder=None
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg.title, 'Test issue')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
issue = pagure.lib.search_issues(self.session, project, issueid=1)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(project.issue_keys), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(project.issue_keys[0].key_type, 'text')
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_value(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
issue=issue,
|
|
Pierre-Yves Chibon |
a3901b |
key=project.issue_keys[0],
|
|
Pierre-Yves Chibon |
a3901b |
value='In progress'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.session.commit()
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(msg, 'Custom field tested adjusted to In progress')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
# Update it a second time to trigger edit
|
|
Pierre-Yves Chibon |
a3901b |
msg = pagure.lib.set_custom_key_value(
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
issue=issue,
|
|
Pierre-Yves Chibon |
a3901b |
key=project.issue_keys[0],
|
|
Pierre-Yves Chibon |
a3901b |
value='Done'
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(
|
|
Pierre-Yves Chibon |
a3901b |
msg, 'Custom field tested adjusted to Done (was: In progress)')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
baaf54 |
self.assertEqual(mock_redis.publish.call_count, 2)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_log_action_invalid(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the log_action function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
obj = MagicMock
|
|
Pierre-Yves Chibon |
a3901b |
obj.isa = "invalid"
|
|
Pierre-Yves Chibon |
a3901b |
self.assertRaises(
|
|
Pierre-Yves Chibon |
a3901b |
pagure.exceptions.InvalidObjectException,
|
|
Pierre-Yves Chibon |
a3901b |
pagure.lib.log_action,
|
|
Pierre-Yves Chibon |
a3901b |
session=self.session,
|
|
Pierre-Yves Chibon |
a3901b |
action="foo",
|
|
Pierre-Yves Chibon |
a3901b |
obj=obj,
|
|
Pierre-Yves Chibon |
a3901b |
user_obj=None,
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_search_token_no_acls(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the search_token function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens_acl(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
out = pagure.lib.search_token(
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
[]
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(out), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(out[0].id, 'aaabbbcccddd')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_search_token_single_acls(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the search_token function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens_acl(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
out = pagure.lib.search_token(
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
'issue_create',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(out), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(out[0].id, 'aaabbbcccddd')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_search_token_single_acls_user(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the search_token function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens_acl(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
out = pagure.lib.search_token(
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
'issue_create',
|
|
Pierre-Yves Chibon |
a3901b |
user='pingou',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(out), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(out[0].id, 'aaabbbcccddd')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
out = pagure.lib.search_token(
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
'issue_create',
|
|
Pierre-Yves Chibon |
a3901b |
user='foo',
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(out), 0)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
def test_search_token_single_acls_active(self):
|
|
Pierre-Yves Chibon |
a3901b |
""" Test the search_token function of pagure.lib. """
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
tests.create_tokens_acl(self.session)
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
out = pagure.lib.search_token(
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
'issue_create',
|
|
Pierre-Yves Chibon |
a3901b |
active=True
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(out), 1)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(out[0].id, 'aaabbbcccddd')
|
|
Pierre-Yves Chibon |
a3901b |
|
|
Pierre-Yves Chibon |
a3901b |
out = pagure.lib.search_token(
|
|
Pierre-Yves Chibon |
a3901b |
self.session,
|
|
Pierre-Yves Chibon |
a3901b |
'issue_create',
|
|
Pierre-Yves Chibon |
a3901b |
expired=True
|
|
Pierre-Yves Chibon |
a3901b |
)
|
|
Pierre-Yves Chibon |
a3901b |
self.assertEqual(len(out), 0)
|
|
Pierre-Yves Chibon |
50c035 |
|
|
Vivek Anand |
16c578 |
def test_update_read_only_mode(self):
|
|
Vivek Anand |
16c578 |
""" Test the update_read_only_mode method of pagure.lib """
|
|
Vivek Anand |
16c578 |
|
|
Vivek Anand |
16c578 |
tests.create_projects(self.session)
|
|
Vivek Anand |
16c578 |
|
|
Vivek Anand |
16c578 |
project_obj = pagure.lib._get_project(self.session, 'test')
|
|
Vivek Anand |
16c578 |
# Default mode of project is read only
|
|
Vivek Anand |
16c578 |
self.assertEqual(project_obj.read_only, True)
|
|
Vivek Anand |
16c578 |
|
|
Vivek Anand |
16c578 |
# Remove read only
|
|
Vivek Anand |
16c578 |
pagure.lib.update_read_only_mode(self.session, project_obj, False)
|
|
Vivek Anand |
16c578 |
self.session.commit()
|
|
Vivek Anand |
16c578 |
|
|
Vivek Anand |
16c578 |
project_obj = pagure.lib._get_project(self.session, 'test')
|
|
Vivek Anand |
16c578 |
self.assertEqual(project_obj.read_only, False)
|
|
Vivek Anand |
16c578 |
|
|
Vivek Anand |
16c578 |
# Try reversing it back
|
|
Vivek Anand |
16c578 |
pagure.lib.update_read_only_mode(self.session, project_obj, True)
|
|
Vivek Anand |
16c578 |
self.session.commit()
|
|
Vivek Anand |
16c578 |
|
|
Vivek Anand |
16c578 |
project_obj = pagure.lib._get_project(self.session, 'test')
|
|
Vivek Anand |
16c578 |
self.assertEqual(project_obj.read_only, True)
|
|
Vivek Anand |
16c578 |
|
|
Vivek Anand |
16c578 |
|
|
Pierre-Yves Chibon |
d88010 |
if __name__ == '__main__':
|
|
Pierre-Yves Chibon |
393f31 |
unittest.main(verbosity=2)
|