diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2017-02-04 08:54:55 +0100 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2017-02-04 08:58:54 +0100 |
commit | 492a75121375059a66accbbbd6af433acf6d7106 (patch) | |
tree | caec79591c0a886dd035384d476de86fb9e22d33 | |
parent | dad134556dd624243c85b5f61a40cc893357492d (diff) | |
download | gitlab-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.py | 4 | ||||
-rw-r--r-- | gitlab/objects.py | 17 | ||||
-rw-r--r-- | tools/python_test.py | 16 |
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') |