gitlab: set the user for a project

This commit is contained in:
Loic Dachary 2021-01-28 23:17:33 +01:00
parent 9a855645e4
commit f54063e998
No known key found for this signature in database
GPG Key ID: 992D23B392F9E4F2
2 changed files with 28 additions and 21 deletions

View File

@ -115,14 +115,18 @@ class GitLab(object):
pass
@retry(DeletionInProgress, tries=5)
def _project_create(self, namespace, project):
def _project_create(self, admin, user, namespace, project, **data):
user_id = self.user_get(user)['id']
admin_id = self.user_get(admin)['id']
namespace_id = self.get_namespace_id(namespace)
data = {
data.update({
"name": project,
"namespace_id": int(namespace_id),
"visibility": "public",
}
r = self.s.post(f'{self.s.api}/projects', data=data)
"user_id": user_id,
})
r = self.s.post(f'{self.s.api}/projects/user/{admin_id}', data=data)
logger.info(r.text)
if r.status_code == 201:
return r.json()
if r.status_code == 400 and (
@ -132,10 +136,10 @@ class GitLab(object):
raise GitLab.DeletionInProgress()
r.raise_for_status()
def project_create(self, namespace, project):
def project_create(self, admin, user, namespace, project, **data):
info = self.project_get(namespace, project)
if info is None:
return self._project_create(namespace, project)
return self._project_create(admin, user, namespace, project, **data)
else:
return info

View File

@ -5,24 +5,30 @@ import gzip
from fedeproxy.common.gitlab import GitLab
@pytest.mark.gitlab
def test_project_create():
@pytest.fixture
def gitlab():
ip = os.environ.get('FEDEPROXY_IP', '0.0.0.0')
gitlab = GitLab(f'http://{ip}:8181')
gitlab.login('root', 'Wrobyak4')
return gitlab
@pytest.mark.gitlab
def test_project_create(gitlab):
gitlab.project_delete('root', 'testproject')
assert gitlab.project_get('root', 'testproject') is None
p = gitlab.project_create('root', 'testproject')
assert p['id'] == gitlab.project_create('root', 'testproject')['id']
assert gitlab.project_delete('root', 'testproject') is True
assert gitlab.project_delete('root', 'testproject') is False
user = 'testuser1'
email = 'testuser1@example.com'
u = gitlab.user_create(user, email)
p = gitlab.project_create('root', user, user, 'testproject')
assert p['id'] == gitlab.project_create('root', user, user, 'testproject')['id']
assert gitlab.project_delete(user, 'testproject') is True
assert gitlab.project_delete(user, 'testproject') is False
assert gitlab.user_delete(user) is True
@pytest.mark.gitlab
def test_user_create():
ip = os.environ.get('FEDEPROXY_IP', '0.0.0.0')
gitlab = GitLab(f'http://{ip}:8181')
gitlab.login('root', 'Wrobyak4')
def test_user_create(gitlab):
user = 'testuser1'
email = 'testuser1@example.com'
gitlab.user_delete(user)
@ -33,12 +39,9 @@ def test_user_create():
@pytest.mark.gitlab
def test_project_export(tmpdir):
ip = os.environ.get('FEDEPROXY_IP', '0.0.0.0')
gitlab = GitLab(f'http://{ip}:8181')
gitlab.login('root', 'Wrobyak4')
def test_project_export(gitlab, tmpdir):
gitlab.project_delete('root', 'testproject')
gitlab.project_create('root', 'testproject')
gitlab.project_create('root', 'root', 'root', 'testproject')
exported = f'{tmpdir}/testproject.tar.gz'
gitlab.project_export('root', 'testproject', exported)
assert gzip.open(exported)