summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2017-02-04 08:54:55 +0100
committerGauvain Pocentek <gauvain@pocentek.net>2017-02-04 08:58:54 +0100
commit492a75121375059a66accbbbd6af433acf6d7106 (patch)
treecaec79591c0a886dd035384d476de86fb9e22d33
parentdad134556dd624243c85b5f61a40cc893357492d (diff)
downloadgitlab-492a75121375059a66accbbbd6af433acf6d7106.tar.gz
Deploy keys: rework enable/disable
The method have been moved to the keys manager class as they don't make sens at all on the project keys themselves. Update doc and add tests. Fixes #196
-rw-r--r--docs/gl_objects/deploy_keys.py4
-rw-r--r--gitlab/objects.py17
-rw-r--r--tools/python_test.py16
3 files changed, 26 insertions, 11 deletions
diff --git a/docs/gl_objects/deploy_keys.py b/docs/gl_objects/deploy_keys.py
index f86f2f7..5d85055 100644
--- a/docs/gl_objects/deploy_keys.py
+++ b/docs/gl_objects/deploy_keys.py
@@ -36,9 +36,9 @@ key.delete()
# end delete
# enable
-deploy_key.enable()
+project.keys.enable(key_id)
# end enable
# disable
-deploy_key.disable()
+project.keys.disable(key_id)
# end disable
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 846da20..1ea3049 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -1366,24 +1366,23 @@ class ProjectKey(GitlabObject):
requiredUrlAttrs = ['project_id']
requiredCreateAttrs = ['title', 'key']
- def enable(self):
+
+class ProjectKeyManager(BaseManager):
+ obj_cls = ProjectKey
+
+ def enable(self, key_id):
"""Enable a deploy key for a project."""
- url = '/projects/%s/deploy_keys/%s/enable' % (self.project_id, self.id)
+ url = '/projects/%s/deploy_keys/%s/enable' % (self.parent.id, key_id)
r = self.gitlab._raw_post(url)
raise_error_from_response(r, GitlabProjectDeployKeyError, 201)
- def disable(self):
+ def disable(self, key_id):
"""Disable a deploy key for a project."""
- url = '/projects/%s/deploy_keys/%s/disable' % (self.project_id,
- self.id)
+ url = '/projects/%s/deploy_keys/%s/disable' % (self.parent.id, key_id)
r = self.gitlab._raw_delete(url)
raise_error_from_response(r, GitlabProjectDeployKeyError, 200)
-class ProjectKeyManager(BaseManager):
- obj_cls = ProjectKey
-
-
class ProjectEvent(GitlabObject):
_url = '/projects/%(project_id)s/events'
canGet = 'from_list'
diff --git a/tools/python_test.py b/tools/python_test.py
index 2d31d9f..ae5e099 100644
--- a/tools/python_test.py
+++ b/tools/python_test.py
@@ -12,6 +12,13 @@ SSH_KEY = ("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZAjAX8vTiHD7Yi3/EzuVaDChtih"
"a6WP5lTi/HJIjAl6Hu+zHgdj1XVExeH+S52EwpZf/ylTJub0Bl5gHwf/siVE48mLMI"
"sqrukXTZ6Zg+8EHAIvIQwJ1dKcXe8P5IoLT7VKrbkgAnolS0I8J+uH7KtErZJb5oZh"
"S4OEwsNpaXMAr+6/wWSpircV2/e7sFLlhlKBC4Iq1MpqlZ7G3p foo@bar")
+DEPLOY_KEY = ("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFdRyjJQh+1niBpXqE2I8dzjG"
+ "MXFHlRjX9yk/UfOn075IdaockdU58sw2Ai1XIWFpZpfJkW7z+P47ZNSqm1gzeXI"
+ "rtKa9ZUp8A7SZe8vH4XVn7kh7bwWCUirqtn8El9XdqfkzOs/+FuViriUWoJVpA6"
+ "WZsDNaqINFKIA5fj/q8XQw+BcS92L09QJg9oVUuH0VVwNYbU2M2IRmSpybgC/gu"
+ "uWTrnCDMmLItksATifLvRZwgdI8dr+q6tbxbZknNcgEPrI2jT0hYN9ZcjNeWuyv"
+ "rke9IepE7SPBT41C+YtUX4dfDZDmczM1cE0YL/krdUCfuZHMa4ZS2YyNd6slufc"
+ "vn bar@foo")
# login/password authentication
gl = gitlab.Gitlab('http://localhost:8080', email=LOGIN, password=PASSWORD)
@@ -183,6 +190,15 @@ archive1 = admin_project.repository_archive()
archive2 = admin_project.repository_archive('master')
assert(archive1 == archive2)
+# deploy keys
+deploy_key = admin_project.keys.create({'title': 'foo@bar', 'key': DEPLOY_KEY})
+project_keys = admin_project.keys.list()
+assert(len(project_keys) == 1)
+sudo_project.keys.enable(deploy_key.id)
+assert(len(sudo_project.keys.list()) == 1)
+sudo_project.keys.disable(deploy_key.id)
+assert(len(sudo_project.keys.list()) == 0)
+
# labels
label1 = admin_project.labels.create({'name': 'label1', 'color': '#778899'})
label1 = admin_project.labels.get('label1')