summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2018-05-19 17:10:08 +0200
committerGauvain Pocentek <gauvain@pocentek.net>2018-05-19 17:10:08 +0200
commitfe89b949922c028830dd49095432ba627d330186 (patch)
treeaa14611d11c550a790d7976f2b24fabb77e81a67 /tools
parent701169441194bf0441cee13f2ab5784ffad7a207 (diff)
downloadgitlab-fe89b949922c028830dd49095432ba627d330186.tar.gz
Drop API v3 support
Drop the code, the tests, and update the documentation.
Diffstat (limited to 'tools')
-rwxr-xr-xtools/build_test_env.sh4
-rw-r--r--tools/cli_test_v3.sh107
-rw-r--r--tools/python_test_v3.py354
-rw-r--r--tools/python_test_v4.py10
4 files changed, 7 insertions, 468 deletions
diff --git a/tools/build_test_env.sh b/tools/build_test_env.sh
index 9961333..0b2fc34 100755
--- a/tools/build_test_env.sh
+++ b/tools/build_test_env.sh
@@ -46,8 +46,8 @@ case $PY_VER in
esac
case $API_VER in
- 3|4) ;;
- *) fatal "Wrong API version (3 or 4)";;
+ 4) ;;
+ *) fatal "Wrong API version (4 only)";;
esac
for req in \
diff --git a/tools/cli_test_v3.sh b/tools/cli_test_v3.sh
deleted file mode 100644
index ed433ce..0000000
--- a/tools/cli_test_v3.sh
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2015 Gauvain Pocentek <gauvain@pocentek.net>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-testcase "project creation" '
- OUTPUT=$(try GITLAB project create --name test-project1) || exit 1
- PROJECT_ID=$(pecho "${OUTPUT}" | grep ^id: | cut -d" " -f2)
- OUTPUT=$(try GITLAB project list) || exit 1
- pecho "${OUTPUT}" | grep -q test-project1
-'
-
-testcase "project update" '
- GITLAB project update --id "$PROJECT_ID" --description "My New Description"
-'
-
-testcase "user creation" '
- OUTPUT=$(GITLAB user create --email fake@email.com --username user1 \
- --name "User One" --password fakepassword)
-'
-USER_ID=$(pecho "${OUTPUT}" | grep ^id: | cut -d' ' -f2)
-
-testcase "user get (by id)" '
- GITLAB user get --id $USER_ID >/dev/null 2>&1
-'
-
-testcase "user get (by username)" '
- GITLAB user get-by-username --query user1 >/dev/null 2>&1
-'
-
-testcase "verbose output" '
- OUTPUT=$(try GITLAB -v user list) || exit 1
- pecho "${OUTPUT}" | grep -q avatar-url
-'
-
-testcase "CLI args not in output" '
- OUTPUT=$(try GITLAB -v user list) || exit 1
- pecho "${OUTPUT}" | grep -qv config-file
-'
-
-testcase "adding member to a project" '
- GITLAB project-member create --project-id "$PROJECT_ID" \
- --user-id "$USER_ID" --access-level 40 >/dev/null 2>&1
-'
-
-testcase "file creation" '
- GITLAB project-file create --project-id "$PROJECT_ID" \
- --file-path README --branch-name master --content "CONTENT" \
- --commit-message "Initial commit" >/dev/null 2>&1
-'
-
-testcase "issue creation" '
- OUTPUT=$(GITLAB project-issue create --project-id "$PROJECT_ID" \
- --title "my issue" --description "my issue description")
-'
-ISSUE_ID=$(pecho "${OUTPUT}" | grep ^id: | cut -d' ' -f2)
-
-testcase "note creation" '
- GITLAB project-issue-note create --project-id "$PROJECT_ID" \
- --issue-id "$ISSUE_ID" --body "the body" >/dev/null 2>&1
-'
-
-testcase "branch creation" '
- GITLAB project-branch create --project-id "$PROJECT_ID" \
- --branch-name branch1 --ref master >/dev/null 2>&1
-'
-
-GITLAB project-file create --project-id "$PROJECT_ID" \
- --file-path README2 --branch-name branch1 --content "CONTENT" \
- --commit-message "second commit" >/dev/null 2>&1
-
-testcase "merge request creation" '
- OUTPUT=$(GITLAB project-merge-request create \
- --project-id "$PROJECT_ID" \
- --source-branch branch1 --target-branch master \
- --title "Update README")
-'
-MR_ID=$(pecho "${OUTPUT}" | grep ^id: | cut -d' ' -f2)
-
-testcase "merge request validation" '
- GITLAB project-merge-request merge --project-id "$PROJECT_ID" \
- --id "$MR_ID" >/dev/null 2>&1
-'
-
-testcase "branch deletion" '
- GITLAB project-branch delete --project-id "$PROJECT_ID" \
- --name branch1 >/dev/null 2>&1
-'
-
-testcase "project upload" '
- GITLAB project upload --id "$PROJECT_ID" --filename '$(basename $0)' --filepath '$0'
-'
-
-testcase "project deletion" '
- GITLAB project delete --id "$PROJECT_ID"
-'
diff --git a/tools/python_test_v3.py b/tools/python_test_v3.py
deleted file mode 100644
index c16bb40..0000000
--- a/tools/python_test_v3.py
+++ /dev/null
@@ -1,354 +0,0 @@
-import base64
-import re
-import time
-
-import gitlab
-
-LOGIN = 'root'
-PASSWORD = '5iveL!fe'
-
-SSH_KEY = ("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZAjAX8vTiHD7Yi3/EzuVaDChtih"
- "79HyJZ6H9dEqxFfmGA1YnncE0xujQ64TCebhkYJKzmTJCImSVkOu9C4hZgsw6eE76n"
- "+Cg3VwEeDUFy+GXlEJWlHaEyc3HWioxgOALbUp3rOezNh+d8BDwwqvENGoePEBsz5l"
- "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")
-
-# token authentication from config file
-gl = gitlab.Gitlab.from_config(config_files=['/tmp/python-gitlab.cfg'])
-gl.auth()
-assert(isinstance(gl.user, gitlab.v3.objects.CurrentUser))
-
-# settings
-settings = gl.settings.get()
-settings.default_projects_limit = 42
-settings.save()
-settings = gl.settings.get()
-assert(settings.default_projects_limit == 42)
-
-# user manipulations
-new_user = gl.users.create({'email': 'foo@bar.com', 'username': 'foo',
- 'name': 'foo', 'password': 'foo_password'})
-users_list = gl.users.list()
-for user in users_list:
- if user.username == 'foo':
- break
-assert(new_user.username == user.username)
-assert(new_user.email == user.email)
-
-new_user.block()
-new_user.unblock()
-
-foobar_user = gl.users.create(
- {'email': 'foobar@example.com', 'username': 'foobar',
- 'name': 'Foo Bar', 'password': 'foobar_password'})
-
-assert(gl.users.search('foobar')[0].id == foobar_user.id)
-usercmp = lambda x,y: cmp(x.id, y.id)
-expected = sorted([new_user, foobar_user], cmp=usercmp)
-actual = sorted(gl.users.search('foo'), cmp=usercmp)
-assert len(expected) == len(actual)
-assert len(gl.users.search('asdf')) == 0
-
-assert gl.users.get_by_username('foobar').id == foobar_user.id
-assert gl.users.get_by_username('foo').id == new_user.id
-try:
- gl.users.get_by_username('asdf')
-except gitlab.GitlabGetError:
- pass
-else:
- assert False
-
-# SSH keys
-key = new_user.keys.create({'title': 'testkey', 'key': SSH_KEY})
-assert(len(new_user.keys.list()) == 1)
-key.delete()
-assert(len(new_user.keys.list()) == 0)
-
-# emails
-email = new_user.emails.create({'email': 'foo2@bar.com'})
-assert(len(new_user.emails.list()) == 1)
-email.delete()
-assert(len(new_user.emails.list()) == 0)
-
-new_user.delete()
-foobar_user.delete()
-assert(len(gl.users.list()) == 3)
-
-# current user key
-key = gl.user.keys.create({'title': 'testkey', 'key': SSH_KEY})
-assert(len(gl.user.keys.list()) == 1)
-key.delete()
-
-# groups
-user1 = gl.users.create({'email': 'user1@test.com', 'username': 'user1',
- 'name': 'user1', 'password': 'user1_pass'})
-user2 = gl.users.create({'email': 'user2@test.com', 'username': 'user2',
- 'name': 'user2', 'password': 'user2_pass'})
-group1 = gl.groups.create({'name': 'group1', 'path': 'group1'})
-group2 = gl.groups.create({'name': 'group2', 'path': 'group2'})
-
-p_id = gl.groups.search('group2')[0].id
-group3 = gl.groups.create({'name': 'group3', 'path': 'group3', 'parent_id': p_id})
-
-assert(len(gl.groups.list()) == 3)
-assert(len(gl.groups.search("oup1")) == 1)
-assert(group3.parent_id == p_id)
-
-group1.members.create({'access_level': gitlab.Group.OWNER_ACCESS,
- 'user_id': user1.id})
-group1.members.create({'access_level': gitlab.Group.GUEST_ACCESS,
- 'user_id': user2.id})
-
-group2.members.create({'access_level': gitlab.Group.OWNER_ACCESS,
- 'user_id': user2.id})
-
-# Administrator belongs to the groups
-assert(len(group1.members.list()) == 3)
-assert(len(group2.members.list()) == 2)
-
-group1.members.delete(user1.id)
-assert(len(group1.members.list()) == 2)
-member = group1.members.get(user2.id)
-member.access_level = gitlab.Group.OWNER_ACCESS
-member.save()
-member = group1.members.get(user2.id)
-assert(member.access_level == gitlab.Group.OWNER_ACCESS)
-
-group2.members.delete(gl.user.id)
-
-# hooks
-hook = gl.hooks.create({'url': 'http://whatever.com'})
-assert(len(gl.hooks.list()) == 1)
-hook.delete()
-assert(len(gl.hooks.list()) == 0)
-
-# projects
-admin_project = gl.projects.create({'name': 'admin_project'})
-gr1_project = gl.projects.create({'name': 'gr1_project',
- 'namespace_id': group1.id})
-gr2_project = gl.projects.create({'name': 'gr2_project',
- 'namespace_id': group2.id})
-sudo_project = gl.projects.create({'name': 'sudo_project'}, sudo=user1.name)
-
-assert(len(gl.projects.all()) == 4)
-assert(len(gl.projects.owned()) == 2)
-assert(len(gl.projects.list(search="admin")) == 1)
-
-# test pagination
-l1 = gl.projects.list(per_page=1, page=1)
-l2 = gl.projects.list(per_page=1, page=2)
-assert(len(l1) == 1)
-assert(len(l2) == 1)
-assert(l1[0].id != l2[0].id)
-
-# project content (files)
-admin_project.files.create({'file_path': 'README',
- 'branch_name': 'master',
- 'content': 'Initial content',
- 'commit_message': 'Initial commit'})
-readme = admin_project.files.get(file_path='README', ref='master')
-readme.content = base64.b64encode("Improved README")
-time.sleep(2)
-readme.save(branch_name="master", commit_message="new commit")
-readme.delete(commit_message="Removing README", branch_name="master")
-
-admin_project.files.create({'file_path': 'README.rst',
- 'branch_name': 'master',
- 'content': 'Initial content',
- 'commit_message': 'New commit'})
-readme = admin_project.files.get(file_path='README.rst', ref='master')
-assert(readme.decode() == 'Initial content')
-
-data = {
- 'branch_name': 'master',
- 'commit_message': 'blah blah blah',
- 'actions': [
- {
- 'action': 'create',
- 'file_path': 'blah',
- 'content': 'blah'
- }
- ]
-}
-admin_project.commits.create(data)
-
-tree = admin_project.repository_tree()
-assert(len(tree) == 2)
-assert(tree[0]['name'] == 'README.rst')
-blob = admin_project.repository_blob('master', 'README.rst')
-assert(blob == 'Initial content')
-archive1 = admin_project.repository_archive()
-archive2 = admin_project.repository_archive('master')
-assert(archive1 == archive2)
-
-# project file uploads
-filename = "test.txt"
-file_contents = "testing contents"
-uploaded_file = admin_project.upload(filename, file_contents)
-assert(uploaded_file["alt"] == filename)
-assert(uploaded_file["url"].startswith("/uploads/"))
-assert(uploaded_file["url"].endswith("/" + filename))
-assert(uploaded_file["markdown"] == "[{}]({})".format(
- uploaded_file["alt"],
- uploaded_file["url"],
-))
-
-# 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')
-assert(len(admin_project.labels.list()) == 1)
-label1.new_name = 'label1updated'
-label1.save()
-assert(label1.name == 'label1updated')
-label1.subscribe()
-assert(label1.subscribed == True)
-label1.unsubscribe()
-assert(label1.subscribed == False)
-label1.delete()
-
-# milestones
-m1 = admin_project.milestones.create({'title': 'milestone1'})
-assert(len(admin_project.milestones.list()) == 1)
-m1.due_date = '2020-01-01T00:00:00Z'
-m1.save()
-m1.state_event = 'close'
-m1.save()
-m1 = admin_project.milestones.get(1)
-assert(m1.state == 'closed')
-
-# issues
-issue1 = admin_project.issues.create({'title': 'my issue 1',
- 'milestone_id': m1.id})
-issue2 = admin_project.issues.create({'title': 'my issue 2'})
-issue3 = admin_project.issues.create({'title': 'my issue 3'})
-assert(len(admin_project.issues.list()) == 3)
-issue3.state_event = 'close'
-issue3.save()
-assert(len(admin_project.issues.list(state='closed')) == 1)
-assert(len(admin_project.issues.list(state='opened')) == 2)
-assert(len(admin_project.issues.list(milestone='milestone1')) == 1)
-assert(m1.issues()[0].title == 'my issue 1')
-
-# tags
-tag1 = admin_project.tags.create({'tag_name': 'v1.0', 'ref': 'master'})
-assert(len(admin_project.tags.list()) == 1)
-tag1.set_release_description('Description 1')
-tag1.set_release_description('Description 2')
-assert(tag1.release.description == 'Description 2')
-tag1.delete()
-
-# triggers
-tr1 = admin_project.triggers.create({})
-assert(len(admin_project.triggers.list()) == 1)
-tr1 = admin_project.triggers.get(tr1.token)
-tr1.delete()
-
-# variables
-v1 = admin_project.variables.create({'key': 'key1', 'value': 'value1'})
-assert(len(admin_project.variables.list()) == 1)
-v1.value = 'new_value1'
-v1.save()
-v1 = admin_project.variables.get(v1.key)
-assert(v1.value == 'new_value1')
-v1.delete()
-
-# branches and merges
-to_merge = admin_project.branches.create({'branch_name': 'branch1',
- 'ref': 'master'})
-admin_project.files.create({'file_path': 'README2.rst',
- 'branch_name': 'branch1',
- 'content': 'Initial content',
- 'commit_message': 'New commit in new branch'})
-mr = admin_project.mergerequests.create({'source_branch': 'branch1',
- 'target_branch': 'master',
- 'title': 'MR readme2'})
-ret = mr.merge()
-admin_project.branches.delete('branch1')
-
-try:
- mr.merge()
-except gitlab.GitlabMRClosedError:
- pass
-
-# stars
-admin_project = admin_project.star()
-assert(admin_project.star_count == 1)
-admin_project = admin_project.unstar()
-assert(admin_project.star_count == 0)
-
-# project boards
-#boards = admin_project.boards.list()
-#assert(len(boards))
-#board = boards[0]
-#lists = board.lists.list()
-#begin_size = len(lists)
-#last_list = lists[-1]
-#last_list.position = 0
-#last_list.save()
-#last_list.delete()
-#lists = board.lists.list()
-#assert(len(lists) == begin_size - 1)
-
-# namespaces
-ns = gl.namespaces.list()
-assert(len(ns) != 0)
-ns = gl.namespaces.list(search='root')[0]
-assert(ns.kind == 'user')
-
-# broadcast messages
-msg = gl.broadcastmessages.create({'message': 'this is the message'})
-msg.color = '#444444'
-msg.save()
-msg = gl.broadcastmessages.list()[0]
-assert(msg.color == '#444444')
-msg = gl.broadcastmessages.get(1)
-assert(msg.color == '#444444')
-msg.delete()
-assert(len(gl.broadcastmessages.list()) == 0)
-
-# notification settings
-settings = gl.notificationsettings.get()
-settings.level = gitlab.NOTIFICATION_LEVEL_WATCH
-settings.save()
-settings = gl.notificationsettings.get()
-assert(settings.level == gitlab.NOTIFICATION_LEVEL_WATCH)
-
-# services
-service = admin_project.services.get(service_name='asana')
-service.active = True
-service.api_key = 'whatever'
-service.save()
-service = admin_project.services.get(service_name='asana')
-assert(service.active == True)
-
-# snippets
-snippets = gl.snippets.list()
-assert(len(snippets) == 0)
-snippet = gl.snippets.create({'title': 'snippet1', 'file_name': 'snippet1.py',
- 'content': 'import gitlab'})
-snippet = gl.snippets.get(1)
-snippet.title = 'updated_title'
-snippet.save()
-snippet = gl.snippets.get(1)
-assert(snippet.title == 'updated_title')
-content = snippet.raw()
-assert(content == 'import gitlab')
-snippet.delete()
-assert(len(gl.snippets.list()) == 0)
diff --git a/tools/python_test_v4.py b/tools/python_test_v4.py
index 407a03c..885492b 100644
--- a/tools/python_test_v4.py
+++ b/tools/python_test_v4.py
@@ -214,12 +214,12 @@ assert(len(gl.groups.list(search='oup1')) == 1)
assert(group3.parent_id == p_id)
assert(group2.subgroups.list()[0].id == group3.id)
-group1.members.create({'access_level': gitlab.Group.OWNER_ACCESS,
+group1.members.create({'access_level': gitlab.const.OWNER_ACCESS,
'user_id': user1.id})
-group1.members.create({'access_level': gitlab.Group.GUEST_ACCESS,
+group1.members.create({'access_level': gitlab.const.GUEST_ACCESS,
'user_id': user2.id})
-group2.members.create({'access_level': gitlab.Group.OWNER_ACCESS,
+group2.members.create({'access_level': gitlab.const.OWNER_ACCESS,
'user_id': user2.id})
# Administrator belongs to the groups
@@ -229,10 +229,10 @@ assert(len(group2.members.list()) == 2)
group1.members.delete(user1.id)
assert(len(group1.members.list()) == 2)
member = group1.members.get(user2.id)
-member.access_level = gitlab.Group.OWNER_ACCESS
+member.access_level = gitlab.const.OWNER_ACCESS
member.save()
member = group1.members.get(user2.id)
-assert(member.access_level == gitlab.Group.OWNER_ACCESS)
+assert(member.access_level == gitlab.const.OWNER_ACCESS)
group2.members.delete(gl.user.id)