Fix comment_tests to create fixtures
This commit is contained in:
parent
a4614ac13e
commit
767f3e453b
@ -1,4 +1,5 @@
|
||||
from . import OBSLocal
|
||||
from . import vcrhelpers
|
||||
from osclib.comments import CommentAPI
|
||||
import random
|
||||
import re
|
||||
@ -93,10 +94,20 @@ handle
|
||||
class TestCommentOBS(OBSLocal.TestCase):
|
||||
def setUp(self):
|
||||
super(TestCommentOBS, self).setUp()
|
||||
self.wf = vcrhelpers.StagingWorkflow()
|
||||
self.wf.create_user('factory-auto')
|
||||
self.wf.create_user('repo-checker')
|
||||
self.wf.create_user('staging-bot')
|
||||
self.wf.create_group('factory-staging', ['staging-bot'])
|
||||
self.wf.create_project(PROJECT, maintainer={'groups': ['factory-staging']})
|
||||
self.api = CommentAPI(self.apiurl)
|
||||
# Ensure different test runs operate in unique namespace.
|
||||
self.bot = '::'.join([type(self).__name__, str(random.getrandbits(8))])
|
||||
|
||||
def tearDown(self):
|
||||
self.osc_user('Admin')
|
||||
del self.wf
|
||||
|
||||
def test_basic(self):
|
||||
self.osc_user('staging-bot')
|
||||
|
||||
@ -142,6 +153,7 @@ class TestCommentOBS(OBSLocal.TestCase):
|
||||
users = ['factory-auto', 'repo-checker', 'staging-bot']
|
||||
for user in users:
|
||||
self.osc_user(user)
|
||||
print('logged in as ', user)
|
||||
from osc import conf
|
||||
bot = '::'.join([self.bot, user])
|
||||
comment = self.api.add_marker(COMMENT, bot)
|
||||
|
@ -86,14 +86,23 @@ class StagingWorkflow(object):
|
||||
attribute_value_save(APIURL, self.project, 'Config', 'overridden-by-local = remote-nope\n'
|
||||
'remote-only = remote-indeed\n')
|
||||
|
||||
def create_group(self, name):
|
||||
if name in self.groups: return
|
||||
def create_group(self, name, users=[]):
|
||||
|
||||
meta = """
|
||||
<group>
|
||||
<title>{}</title>
|
||||
</group>
|
||||
""".format(name)
|
||||
self.groups.append(name)
|
||||
|
||||
if len(users):
|
||||
root = ET.fromstring(meta)
|
||||
persons = ET.SubElement(root, 'person')
|
||||
for user in users:
|
||||
ET.SubElement(persons, 'person', { 'userid': user } )
|
||||
meta = ET.tostring(root)
|
||||
|
||||
if not name in self.groups:
|
||||
self.groups.append(name)
|
||||
url = osc.core.makeurl(APIURL, ['group', name])
|
||||
osc.core.http_PUT(url, data=meta)
|
||||
|
||||
@ -111,6 +120,8 @@ class StagingWorkflow(object):
|
||||
osc.core.http_PUT(url, data=meta)
|
||||
url = osc.core.makeurl(APIURL, ['person', name], {'cmd': 'change_password'})
|
||||
osc.core.http_POST(url, data='opensuse')
|
||||
home_project = 'home:' + name
|
||||
self.projects[home_project] = Project(home_project, create=False)
|
||||
|
||||
def create_target(self):
|
||||
if self.projects.get('target'): return
|
||||
@ -138,12 +149,14 @@ class StagingWorkflow(object):
|
||||
source_package.name))
|
||||
return target_package
|
||||
|
||||
def create_project(self, name):
|
||||
def create_project(self, name, reviewer={}, maintainer={}, project_links=[]):
|
||||
if isinstance(name, Project):
|
||||
return name
|
||||
if name in self.projects:
|
||||
return self.projects[name]
|
||||
self.projects[name] = Project(name)
|
||||
self.projects[name] = Project(name, reviewer=reviewer,
|
||||
maintainer=maintainer,
|
||||
project_links=project_links)
|
||||
return self.projects[name]
|
||||
|
||||
def create_submit_request(self, project, package, text=None):
|
||||
@ -187,21 +200,18 @@ class StagingWorkflow(object):
|
||||
osc.core.http_DELETE(url)
|
||||
except HTTPError:
|
||||
pass
|
||||
for login in self.users:
|
||||
url = osc.core.makeurl(APIURL, ['person', login])
|
||||
try:
|
||||
osc.core.http_DELETE(url)
|
||||
except HTTPError:
|
||||
pass
|
||||
print('done')
|
||||
if hasattr(self.api, '_invalidate_all'):
|
||||
self.api._invalidate_all()
|
||||
|
||||
class Project(object):
|
||||
def __init__(self, name, reviewer={}, project_links=[]):
|
||||
def __init__(self, name, reviewer={}, maintainer={}, project_links=[], create=True):
|
||||
self.name = name
|
||||
self.packages = []
|
||||
|
||||
if not create:
|
||||
return
|
||||
|
||||
meta = """
|
||||
<project name="{0}">
|
||||
<title></title>
|
||||
@ -213,7 +223,13 @@ class Project(object):
|
||||
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'reviewer'} )
|
||||
for group in reviewer.get('users', []):
|
||||
ET.SubElement(root, 'person', { 'userid': group, 'role': 'reviewer'} )
|
||||
for link in project_links:
|
||||
# TODO: avoid this duplication
|
||||
for group in maintainer.get('groups', []):
|
||||
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'maintainer'} )
|
||||
for group in maintainer.get('users', []):
|
||||
ET.SubElement(root, 'person', { 'userid': group, 'role': 'maintainer'} )
|
||||
|
||||
for link in project_links:
|
||||
ET.SubElement(root, 'link', { 'project': link })
|
||||
|
||||
url = osc.core.make_meta_url('prj', self.name, APIURL)
|
||||
|
Loading…
x
Reference in New Issue
Block a user