gitlab: set the user for a project
This commit is contained in:
parent
9a855645e4
commit
f54063e998
|
@ -115,14 +115,18 @@ class GitLab(object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@retry(DeletionInProgress, tries=5)
|
@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)
|
namespace_id = self.get_namespace_id(namespace)
|
||||||
data = {
|
data.update({
|
||||||
"name": project,
|
"name": project,
|
||||||
"namespace_id": int(namespace_id),
|
"namespace_id": int(namespace_id),
|
||||||
"visibility": "public",
|
"visibility": "public",
|
||||||
}
|
"user_id": user_id,
|
||||||
r = self.s.post(f'{self.s.api}/projects', data=data)
|
})
|
||||||
|
r = self.s.post(f'{self.s.api}/projects/user/{admin_id}', data=data)
|
||||||
|
logger.info(r.text)
|
||||||
if r.status_code == 201:
|
if r.status_code == 201:
|
||||||
return r.json()
|
return r.json()
|
||||||
if r.status_code == 400 and (
|
if r.status_code == 400 and (
|
||||||
|
@ -132,10 +136,10 @@ class GitLab(object):
|
||||||
raise GitLab.DeletionInProgress()
|
raise GitLab.DeletionInProgress()
|
||||||
r.raise_for_status()
|
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)
|
info = self.project_get(namespace, project)
|
||||||
if info is None:
|
if info is None:
|
||||||
return self._project_create(namespace, project)
|
return self._project_create(admin, user, namespace, project, **data)
|
||||||
else:
|
else:
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
|
|
@ -5,24 +5,30 @@ import gzip
|
||||||
from fedeproxy.common.gitlab import GitLab
|
from fedeproxy.common.gitlab import GitLab
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.gitlab
|
@pytest.fixture
|
||||||
def test_project_create():
|
def gitlab():
|
||||||
ip = os.environ.get('FEDEPROXY_IP', '0.0.0.0')
|
ip = os.environ.get('FEDEPROXY_IP', '0.0.0.0')
|
||||||
gitlab = GitLab(f'http://{ip}:8181')
|
gitlab = GitLab(f'http://{ip}:8181')
|
||||||
gitlab.login('root', 'Wrobyak4')
|
gitlab.login('root', 'Wrobyak4')
|
||||||
|
return gitlab
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.gitlab
|
||||||
|
def test_project_create(gitlab):
|
||||||
gitlab.project_delete('root', 'testproject')
|
gitlab.project_delete('root', 'testproject')
|
||||||
assert gitlab.project_get('root', 'testproject') is None
|
assert gitlab.project_get('root', 'testproject') is None
|
||||||
p = gitlab.project_create('root', 'testproject')
|
user = 'testuser1'
|
||||||
assert p['id'] == gitlab.project_create('root', 'testproject')['id']
|
email = 'testuser1@example.com'
|
||||||
assert gitlab.project_delete('root', 'testproject') is True
|
u = gitlab.user_create(user, email)
|
||||||
assert gitlab.project_delete('root', 'testproject') is False
|
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
|
@pytest.mark.gitlab
|
||||||
def test_user_create():
|
def test_user_create(gitlab):
|
||||||
ip = os.environ.get('FEDEPROXY_IP', '0.0.0.0')
|
|
||||||
gitlab = GitLab(f'http://{ip}:8181')
|
|
||||||
gitlab.login('root', 'Wrobyak4')
|
|
||||||
user = 'testuser1'
|
user = 'testuser1'
|
||||||
email = 'testuser1@example.com'
|
email = 'testuser1@example.com'
|
||||||
gitlab.user_delete(user)
|
gitlab.user_delete(user)
|
||||||
|
@ -33,12 +39,9 @@ def test_user_create():
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.gitlab
|
@pytest.mark.gitlab
|
||||||
def test_project_export(tmpdir):
|
def test_project_export(gitlab, tmpdir):
|
||||||
ip = os.environ.get('FEDEPROXY_IP', '0.0.0.0')
|
|
||||||
gitlab = GitLab(f'http://{ip}:8181')
|
|
||||||
gitlab.login('root', 'Wrobyak4')
|
|
||||||
gitlab.project_delete('root', 'testproject')
|
gitlab.project_delete('root', 'testproject')
|
||||||
gitlab.project_create('root', 'testproject')
|
gitlab.project_create('root', 'root', 'root', 'testproject')
|
||||||
exported = f'{tmpdir}/testproject.tar.gz'
|
exported = f'{tmpdir}/testproject.tar.gz'
|
||||||
gitlab.project_export('root', 'testproject', exported)
|
gitlab.project_export('root', 'testproject', exported)
|
||||||
assert gzip.open(exported)
|
assert gzip.open(exported)
|
||||||
|
|
Loading…
Reference in New Issue