gitlab-akerl 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.prospectus +11 -0
- data/.travis.yml +8 -0
- data/CHANGELOG.md +229 -0
- data/CONTRIBUTING.md +195 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +24 -0
- data/README.md +192 -0
- data/Rakefile +9 -0
- data/bin/console +10 -0
- data/bin/setup +6 -0
- data/exe/gitlab +7 -0
- data/gitlab-akerl.gemspec +31 -0
- data/lib/gitlab.rb +45 -0
- data/lib/gitlab/api.rb +19 -0
- data/lib/gitlab/cli.rb +89 -0
- data/lib/gitlab/cli_helpers.rb +241 -0
- data/lib/gitlab/client.rb +48 -0
- data/lib/gitlab/client/branches.rb +91 -0
- data/lib/gitlab/client/build_triggers.rb +51 -0
- data/lib/gitlab/client/build_variables.rb +66 -0
- data/lib/gitlab/client/builds.rb +106 -0
- data/lib/gitlab/client/commits.rb +121 -0
- data/lib/gitlab/client/groups.rb +144 -0
- data/lib/gitlab/client/issues.rb +113 -0
- data/lib/gitlab/client/labels.rb +57 -0
- data/lib/gitlab/client/merge_requests.rb +168 -0
- data/lib/gitlab/client/milestones.rb +78 -0
- data/lib/gitlab/client/namespaces.rb +20 -0
- data/lib/gitlab/client/notes.rb +161 -0
- data/lib/gitlab/client/pipelines.rb +68 -0
- data/lib/gitlab/client/projects.rb +471 -0
- data/lib/gitlab/client/repositories.rb +78 -0
- data/lib/gitlab/client/repository_files.rb +88 -0
- data/lib/gitlab/client/runners.rb +115 -0
- data/lib/gitlab/client/services.rb +50 -0
- data/lib/gitlab/client/snippets.rb +91 -0
- data/lib/gitlab/client/system_hooks.rb +59 -0
- data/lib/gitlab/client/tags.rb +96 -0
- data/lib/gitlab/client/users.rb +250 -0
- data/lib/gitlab/configuration.rb +55 -0
- data/lib/gitlab/error.rb +85 -0
- data/lib/gitlab/file_response.rb +46 -0
- data/lib/gitlab/help.rb +95 -0
- data/lib/gitlab/objectified_hash.rb +34 -0
- data/lib/gitlab/page_links.rb +33 -0
- data/lib/gitlab/paginated_response.rb +97 -0
- data/lib/gitlab/request.rb +117 -0
- data/lib/gitlab/shell.rb +84 -0
- data/lib/gitlab/shell_history.rb +59 -0
- data/lib/gitlab/version.rb +3 -0
- data/spec/fixtures/branch.json +1 -0
- data/spec/fixtures/branch_delete.json +3 -0
- data/spec/fixtures/branches.json +1 -0
- data/spec/fixtures/build.json +38 -0
- data/spec/fixtures/build_artifacts.json +0 -0
- data/spec/fixtures/build_cancel.json +24 -0
- data/spec/fixtures/build_erase.json +24 -0
- data/spec/fixtures/build_retry.json +24 -0
- data/spec/fixtures/builds.json +78 -0
- data/spec/fixtures/builds_commits.json +64 -0
- data/spec/fixtures/compare_merge_request_diff.json +31 -0
- data/spec/fixtures/error_already_exists.json +1 -0
- data/spec/fixtures/error_project_not_found.json +1 -0
- data/spec/fixtures/get_repository_file.json +1 -0
- data/spec/fixtures/git_hook.json +1 -0
- data/spec/fixtures/group.json +60 -0
- data/spec/fixtures/group_create.json +1 -0
- data/spec/fixtures/group_create_with_description.json +1 -0
- data/spec/fixtures/group_delete.json +1 -0
- data/spec/fixtures/group_member.json +1 -0
- data/spec/fixtures/group_member_delete.json +1 -0
- data/spec/fixtures/group_member_edit.json +1 -0
- data/spec/fixtures/group_members.json +1 -0
- data/spec/fixtures/group_projects.json +44 -0
- data/spec/fixtures/group_search.json +2 -0
- data/spec/fixtures/groups.json +2 -0
- data/spec/fixtures/issue.json +1 -0
- data/spec/fixtures/issues.json +1 -0
- data/spec/fixtures/key.json +1 -0
- data/spec/fixtures/keys.json +1 -0
- data/spec/fixtures/label.json +1 -0
- data/spec/fixtures/labels.json +1 -0
- data/spec/fixtures/merge_request.json +1 -0
- data/spec/fixtures/merge_request_changes.json +1 -0
- data/spec/fixtures/merge_request_comment.json +1 -0
- data/spec/fixtures/merge_request_comments.json +1 -0
- data/spec/fixtures/merge_request_commits.json +1 -0
- data/spec/fixtures/merge_requests.json +1 -0
- data/spec/fixtures/milestone.json +1 -0
- data/spec/fixtures/milestone_issues.json +1 -0
- data/spec/fixtures/milestones.json +1 -0
- data/spec/fixtures/namespaces.json +1 -0
- data/spec/fixtures/note.json +1 -0
- data/spec/fixtures/notes.json +1 -0
- data/spec/fixtures/pipeline.json +23 -0
- data/spec/fixtures/pipeline_cancel.json +23 -0
- data/spec/fixtures/pipeline_create.json +23 -0
- data/spec/fixtures/pipeline_retry.json +23 -0
- data/spec/fixtures/pipelines.json +48 -0
- data/spec/fixtures/project.json +1 -0
- data/spec/fixtures/project_commit.json +13 -0
- data/spec/fixtures/project_commit_comment.json +1 -0
- data/spec/fixtures/project_commit_comments.json +1 -0
- data/spec/fixtures/project_commit_diff.json +10 -0
- data/spec/fixtures/project_commit_status.json +42 -0
- data/spec/fixtures/project_commits.json +1 -0
- data/spec/fixtures/project_edit.json +21 -0
- data/spec/fixtures/project_events.json +1 -0
- data/spec/fixtures/project_for_user.json +1 -0
- data/spec/fixtures/project_fork.json +50 -0
- data/spec/fixtures/project_fork_link.json +1 -0
- data/spec/fixtures/project_forked_for_user.json +50 -0
- data/spec/fixtures/project_hook.json +1 -0
- data/spec/fixtures/project_hooks.json +1 -0
- data/spec/fixtures/project_issues.json +1 -0
- data/spec/fixtures/project_key.json +6 -0
- data/spec/fixtures/project_keys.json +6 -0
- data/spec/fixtures/project_runner_enable.json +7 -0
- data/spec/fixtures/project_runners.json +16 -0
- data/spec/fixtures/project_search.json +1 -0
- data/spec/fixtures/project_star.json +44 -0
- data/spec/fixtures/project_tag_annotated.json +1 -0
- data/spec/fixtures/project_tag_lightweight.json +1 -0
- data/spec/fixtures/project_tags.json +1 -0
- data/spec/fixtures/project_unstar.json +44 -0
- data/spec/fixtures/project_update_commit_status.json +20 -0
- data/spec/fixtures/projects.json +1 -0
- data/spec/fixtures/raw_file.json +2 -0
- data/spec/fixtures/release_create.json +1 -0
- data/spec/fixtures/release_update.json +1 -0
- data/spec/fixtures/repository_file.json +1 -0
- data/spec/fixtures/runner.json +26 -0
- data/spec/fixtures/runner_delete.json +7 -0
- data/spec/fixtures/runner_edit.json +26 -0
- data/spec/fixtures/runners.json +16 -0
- data/spec/fixtures/runners_all.json +30 -0
- data/spec/fixtures/service.json +1 -0
- data/spec/fixtures/session.json +1 -0
- data/spec/fixtures/shell_history.json +2 -0
- data/spec/fixtures/snippet.json +1 -0
- data/spec/fixtures/snippet_content.json +3 -0
- data/spec/fixtures/snippets.json +1 -0
- data/spec/fixtures/system_hook.json +1 -0
- data/spec/fixtures/system_hooks.json +1 -0
- data/spec/fixtures/tag.json +1 -0
- data/spec/fixtures/tag_create.json +1 -0
- data/spec/fixtures/tag_create_with_description.json +1 -0
- data/spec/fixtures/tag_delete.json +1 -0
- data/spec/fixtures/tags.json +1 -0
- data/spec/fixtures/team_member.json +1 -0
- data/spec/fixtures/team_members.json +1 -0
- data/spec/fixtures/tree.json +1 -0
- data/spec/fixtures/trigger.json +7 -0
- data/spec/fixtures/triggers.json +16 -0
- data/spec/fixtures/user.json +1 -0
- data/spec/fixtures/user_block_unblock.json +1 -0
- data/spec/fixtures/user_email.json +1 -0
- data/spec/fixtures/user_emails.json +1 -0
- data/spec/fixtures/user_search.json +1 -0
- data/spec/fixtures/users.json +1 -0
- data/spec/fixtures/variable.json +4 -0
- data/spec/fixtures/variables.json +10 -0
- data/spec/gitlab/cli_helpers_spec.rb +57 -0
- data/spec/gitlab/cli_spec.rb +110 -0
- data/spec/gitlab/client/branches_spec.rb +99 -0
- data/spec/gitlab/client/build_triggers_spec.rb +67 -0
- data/spec/gitlab/client/build_variables_spec.rb +86 -0
- data/spec/gitlab/client/builds_spec.rb +148 -0
- data/spec/gitlab/client/client_spec.rb +11 -0
- data/spec/gitlab/client/commits_spec.rb +137 -0
- data/spec/gitlab/client/groups_spec.rb +197 -0
- data/spec/gitlab/client/issues_spec.rb +138 -0
- data/spec/gitlab/client/labels_spec.rb +68 -0
- data/spec/gitlab/client/merge_requests_spec.rb +177 -0
- data/spec/gitlab/client/milestones_spec.rb +82 -0
- data/spec/gitlab/client/namespaces_spec.rb +22 -0
- data/spec/gitlab/client/notes_spec.rb +205 -0
- data/spec/gitlab/client/pipelines_spec.rb +95 -0
- data/spec/gitlab/client/projects_spec.rb +603 -0
- data/spec/gitlab/client/repositories_spec.rb +109 -0
- data/spec/gitlab/client/repository_files_spec.rb +62 -0
- data/spec/gitlab/client/runners_spec.rb +185 -0
- data/spec/gitlab/client/services_spec.rb +55 -0
- data/spec/gitlab/client/snippets_spec.rb +100 -0
- data/spec/gitlab/client/system_hooks_spec.rb +69 -0
- data/spec/gitlab/client/tags_spec.rb +109 -0
- data/spec/gitlab/client/users_spec.rb +418 -0
- data/spec/gitlab/error_spec.rb +45 -0
- data/spec/gitlab/file_response_spec.rb +33 -0
- data/spec/gitlab/help_spec.rb +46 -0
- data/spec/gitlab/objectified_hash_spec.rb +48 -0
- data/spec/gitlab/page_links_spec.rb +16 -0
- data/spec/gitlab/paginated_response_spec.rb +60 -0
- data/spec/gitlab/request_spec.rb +73 -0
- data/spec/gitlab/shell_history_spec.rb +53 -0
- data/spec/gitlab/shell_spec.rb +80 -0
- data/spec/gitlab_spec.rb +97 -0
- data/spec/spec_helper.rb +74 -0
- metadata +476 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Gitlab::Client do
|
|
4
|
+
describe ".pipelines" do
|
|
5
|
+
before do
|
|
6
|
+
stub_get("/projects/3/pipelines", "pipelines")
|
|
7
|
+
@pipelines = Gitlab.pipelines(3)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should get the correct resource" do
|
|
11
|
+
expect(a_get("/projects/3/pipelines")).to have_been_made
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should return a paginated response of project's pipelines" do
|
|
15
|
+
expect(@pipelines).to be_a Gitlab::PaginatedResponse
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe ".pipeline" do
|
|
20
|
+
before do
|
|
21
|
+
stub_get("/projects/3/pipelines/46", "pipeline")
|
|
22
|
+
@pipeline = Gitlab.pipeline(3, 46)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should get the correct resource" do
|
|
26
|
+
expect(a_get("/projects/3/pipelines/46")).to have_been_made
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should return a single pipeline" do
|
|
30
|
+
expect(@pipeline).to be_a Gitlab::ObjectifiedHash
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should return information about a pipeline" do
|
|
34
|
+
expect(@pipeline.id).to eq(46)
|
|
35
|
+
expect(@pipeline.user.name).to eq("Administrator")
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe ".create_pipeline" do
|
|
40
|
+
before do
|
|
41
|
+
stub_post("/projects/3/pipeline?ref=master", "pipeline_create")
|
|
42
|
+
@pipeline_create = Gitlab.create_pipeline(3, 'master')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should get the correct resource" do
|
|
46
|
+
expect(a_post("/projects/3/pipeline?ref=master")).to have_been_made
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should return a single pipeline" do
|
|
50
|
+
expect(@pipeline_create).to be_a Gitlab::ObjectifiedHash
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should return information about a pipeline" do
|
|
54
|
+
expect(@pipeline_create.user.name).to eq("Administrator")
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe ".cancel_pipeline" do
|
|
59
|
+
before do
|
|
60
|
+
stub_post("/projects/3/pipelines/46/cancel", "pipeline_cancel")
|
|
61
|
+
@pipeline_cancel = Gitlab.cancel_pipeline(3, 46)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should get the correct resource" do
|
|
65
|
+
expect(a_post("/projects/3/pipelines/46/cancel")).to have_been_made
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should return a single pipeline" do
|
|
69
|
+
expect(@pipeline_cancel).to be_a Gitlab::ObjectifiedHash
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should return information about a pipeline" do
|
|
73
|
+
expect(@pipeline_cancel.user.name).to eq("Administrator")
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe ".retry_pipeline" do
|
|
78
|
+
before do
|
|
79
|
+
stub_post("/projects/3/pipelines/46/retry", "pipeline_retry")
|
|
80
|
+
@pipeline_retry = Gitlab.retry_pipeline(3, 46)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should get the correct resource" do
|
|
84
|
+
expect(a_post("/projects/3/pipelines/46/retry")).to have_been_made
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "should return a single pipeline" do
|
|
88
|
+
expect(@pipeline_retry).to be_a Gitlab::ObjectifiedHash
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "should return information about a pipeline" do
|
|
92
|
+
expect(@pipeline_retry.user.name).to eq("Administrator")
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,603 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Gitlab::Client do
|
|
4
|
+
it { should respond_to :search_projects }
|
|
5
|
+
|
|
6
|
+
describe ".projects" do
|
|
7
|
+
before do
|
|
8
|
+
stub_get("/projects", "projects")
|
|
9
|
+
@projects = Gitlab.projects
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should get the correct resource" do
|
|
13
|
+
expect(a_get("/projects")).to have_been_made
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should return a paginated response of projects" do
|
|
17
|
+
expect(@projects).to be_a Gitlab::PaginatedResponse
|
|
18
|
+
expect(@projects.first.name).to eq("Brute")
|
|
19
|
+
expect(@projects.first.owner.name).to eq("John Smith")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe ".project_search" do
|
|
24
|
+
before do
|
|
25
|
+
stub_get("/projects/search/Gitlab", "project_search")
|
|
26
|
+
@project_search = Gitlab.project_search("Gitlab")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should get the correct resource" do
|
|
30
|
+
expect(a_get("/projects/search/Gitlab")).to have_been_made
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should return a paginated response of projects found" do
|
|
34
|
+
expect(@project_search).to be_a Gitlab::PaginatedResponse
|
|
35
|
+
expect(@project_search.first.name).to eq("Gitlab")
|
|
36
|
+
expect(@project_search.first.owner.name).to eq("John Smith")
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe ".project" do
|
|
41
|
+
before do
|
|
42
|
+
stub_get("/projects/3", "project")
|
|
43
|
+
@project = Gitlab.project(3)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "should get the correct resource" do
|
|
47
|
+
expect(a_get("/projects/3")).to have_been_made
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should return information about a project" do
|
|
51
|
+
expect(@project.name).to eq("Gitlab")
|
|
52
|
+
expect(@project.owner.name).to eq("John Smith")
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe ".project_events" do
|
|
57
|
+
before do
|
|
58
|
+
stub_get("/projects/2/events", "project_events")
|
|
59
|
+
@events = Gitlab.project_events(2)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should get the correct resource" do
|
|
63
|
+
expect(a_get("/projects/2/events")).to have_been_made
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should return a paginated response of events" do
|
|
67
|
+
expect(@events).to be_a Gitlab::PaginatedResponse
|
|
68
|
+
expect(@events.size).to eq(2)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "should return the action name of the event" do
|
|
72
|
+
expect(@events.first.action_name).to eq("opened")
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe ".create_project" do
|
|
77
|
+
before do
|
|
78
|
+
stub_post("/projects", "project")
|
|
79
|
+
@project = Gitlab.create_project('Gitlab')
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should get the correct resource" do
|
|
83
|
+
expect(a_post("/projects")).to have_been_made
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "should return information about a created project" do
|
|
87
|
+
expect(@project.name).to eq("Gitlab")
|
|
88
|
+
expect(@project.owner.name).to eq("John Smith")
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
describe ".create_project for user" do
|
|
93
|
+
before do
|
|
94
|
+
stub_post("/users", "user")
|
|
95
|
+
@owner = Gitlab.create_user("john@example.com", "pass", name: 'John Owner')
|
|
96
|
+
stub_post("/projects/user/#{@owner.id}", "project_for_user")
|
|
97
|
+
@project = Gitlab.create_project('Brute', user_id: @owner.id)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "should return information about a created project" do
|
|
101
|
+
expect(@project.name).to eq("Brute")
|
|
102
|
+
expect(@project.owner.name).to eq("John Owner")
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe ".delete_project" do
|
|
107
|
+
before do
|
|
108
|
+
stub_delete("/projects/Gitlab", "project")
|
|
109
|
+
@project = Gitlab.delete_project('Gitlab')
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should get the correct resource" do
|
|
113
|
+
expect(a_delete("/projects/Gitlab")).to have_been_made
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "should return information about a deleted project" do
|
|
117
|
+
expect(@project.name).to eq("Gitlab")
|
|
118
|
+
expect(@project.owner.name).to eq("John Smith")
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
describe ".create_fork" do
|
|
123
|
+
context "without sudo option" do
|
|
124
|
+
before do
|
|
125
|
+
stub_post("/projects/fork/3", "project_fork")
|
|
126
|
+
@project = Gitlab.create_fork(3)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "should post to the correct resource" do
|
|
130
|
+
expect(a_post("/projects/fork/3")).to have_been_made
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it "should return information about the forked project" do
|
|
134
|
+
expect(@project.forked_from_project.id).to eq(3)
|
|
135
|
+
expect(@project.id).to eq(20)
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
context "with the sudo option" do
|
|
140
|
+
before do
|
|
141
|
+
stub_post("/projects/fork/3", "project_forked_for_user")
|
|
142
|
+
@sudoed_username = 'jack.smith'
|
|
143
|
+
@project = Gitlab.create_fork(3, sudo: @sudoed_username)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "should post to the correct resource" do
|
|
147
|
+
expect(a_post("/projects/fork/3")).to have_been_made
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
it "should return information about the forked project" do
|
|
151
|
+
expect(@project.forked_from_project.id).to eq(3)
|
|
152
|
+
expect(@project.id).to eq(20)
|
|
153
|
+
expect(@project.owner.username).to eq(@sudoed_username)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
describe ".team_members" do
|
|
159
|
+
before do
|
|
160
|
+
stub_get("/projects/3/members", "team_members")
|
|
161
|
+
@team_members = Gitlab.team_members(3)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
it "should get the correct resource" do
|
|
165
|
+
expect(a_get("/projects/3/members")).to have_been_made
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
it "should return a paginated response of team members" do
|
|
169
|
+
expect(@team_members).to be_a Gitlab::PaginatedResponse
|
|
170
|
+
expect(@team_members.first.name).to eq("John Smith")
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
describe ".team_member" do
|
|
175
|
+
before do
|
|
176
|
+
stub_get("/projects/3/members/1", "team_member")
|
|
177
|
+
@team_member = Gitlab.team_member(3, 1)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
it "should get the correct resource" do
|
|
181
|
+
expect(a_get("/projects/3/members/1")).to have_been_made
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "should return information about a team member" do
|
|
185
|
+
expect(@team_member.name).to eq("John Smith")
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
describe ".add_team_member" do
|
|
190
|
+
before do
|
|
191
|
+
stub_post("/projects/3/members", "team_member")
|
|
192
|
+
@team_member = Gitlab.add_team_member(3, 1, 40)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
it "should get the correct resource" do
|
|
196
|
+
expect(a_post("/projects/3/members").
|
|
197
|
+
with(body: { user_id: '1', access_level: '40' })).to have_been_made
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
it "should return information about an added team member" do
|
|
201
|
+
expect(@team_member.name).to eq("John Smith")
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
describe ".edit_team_member" do
|
|
206
|
+
before do
|
|
207
|
+
stub_put("/projects/3/members/1", "team_member")
|
|
208
|
+
@team_member = Gitlab.edit_team_member(3, 1, 40)
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
it "should get the correct resource" do
|
|
212
|
+
expect(a_put("/projects/3/members/1").
|
|
213
|
+
with(body: { access_level: '40' })).to have_been_made
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
it "should return information about an edited team member" do
|
|
217
|
+
expect(@team_member.name).to eq("John Smith")
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
describe ".remove_team_member" do
|
|
222
|
+
before do
|
|
223
|
+
stub_delete("/projects/3/members/1", "team_member")
|
|
224
|
+
@team_member = Gitlab.remove_team_member(3, 1)
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
it "should get the correct resource" do
|
|
228
|
+
expect(a_delete("/projects/3/members/1")).to have_been_made
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
it "should return information about a removed team member" do
|
|
232
|
+
expect(@team_member.name).to eq("John Smith")
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
describe ".project_hooks" do
|
|
237
|
+
before do
|
|
238
|
+
stub_get("/projects/1/hooks", "project_hooks")
|
|
239
|
+
@hooks = Gitlab.project_hooks(1)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
it "should get the correct resource" do
|
|
243
|
+
expect(a_get("/projects/1/hooks")).to have_been_made
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
it "should return a paginated response of hooks" do
|
|
247
|
+
expect(@hooks).to be_a Gitlab::PaginatedResponse
|
|
248
|
+
expect(@hooks.first.url).to eq("https://api.example.net/v1/webhooks/ci")
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
describe ".project_hook" do
|
|
253
|
+
before do
|
|
254
|
+
stub_get("/projects/1/hooks/1", "project_hook")
|
|
255
|
+
@hook = Gitlab.project_hook(1, 1)
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
it "should get the correct resource" do
|
|
259
|
+
expect(a_get("/projects/1/hooks/1")).to have_been_made
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
it "should return information about a hook" do
|
|
263
|
+
expect(@hook.url).to eq("https://api.example.net/v1/webhooks/ci")
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
describe ".add_project_hook" do
|
|
268
|
+
context "without specified events" do
|
|
269
|
+
before do
|
|
270
|
+
stub_post("/projects/1/hooks", "project_hook")
|
|
271
|
+
@hook = Gitlab.add_project_hook(1, "https://api.example.net/v1/webhooks/ci")
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
it "should get the correct resource" do
|
|
275
|
+
body = { url: "https://api.example.net/v1/webhooks/ci" }
|
|
276
|
+
expect(a_post("/projects/1/hooks").with(body: body)).to have_been_made
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
it "should return information about an added hook" do
|
|
280
|
+
expect(@hook.url).to eq("https://api.example.net/v1/webhooks/ci")
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
context "with specified events" do
|
|
285
|
+
before do
|
|
286
|
+
stub_post("/projects/1/hooks", "project_hook")
|
|
287
|
+
@hook = Gitlab.add_project_hook(1, "https://api.example.net/v1/webhooks/ci", push_events: true, merge_requests_events: true)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
it "should get the correct resource" do
|
|
291
|
+
body = { url: "https://api.example.net/v1/webhooks/ci", push_events: "true", merge_requests_events: "true" }
|
|
292
|
+
expect(a_post("/projects/1/hooks").with(body: body)).to have_been_made
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
it "should return information about an added hook" do
|
|
296
|
+
expect(@hook.url).to eq("https://api.example.net/v1/webhooks/ci")
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
describe ".edit_project_hook" do
|
|
302
|
+
before do
|
|
303
|
+
stub_put("/projects/1/hooks/1", "project_hook")
|
|
304
|
+
@hook = Gitlab.edit_project_hook(1, 1, "https://api.example.net/v1/webhooks/ci")
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
it "should get the correct resource" do
|
|
308
|
+
body = { url: "https://api.example.net/v1/webhooks/ci" }
|
|
309
|
+
expect(a_put("/projects/1/hooks/1").with(body: body)).to have_been_made
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
it "should return information about an edited hook" do
|
|
313
|
+
expect(@hook.url).to eq("https://api.example.net/v1/webhooks/ci")
|
|
314
|
+
end
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
describe ".edit_project" do
|
|
318
|
+
before do
|
|
319
|
+
stub_put("/projects/3", "project_edit").with(query: { name: "Gitlab-edit" })
|
|
320
|
+
@edited_project = Gitlab.edit_project(3, name: "Gitlab-edit")
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
it "should get the correct resource" do
|
|
324
|
+
expect(a_put("/projects/3").with(query: { name: "Gitlab-edit" })).to have_been_made
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
it "should return information about an edited project" do
|
|
328
|
+
expect(@edited_project.name).to eq("Gitlab-edit")
|
|
329
|
+
end
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
describe ".delete_project_hook" do
|
|
333
|
+
context "when empty response" do
|
|
334
|
+
before do
|
|
335
|
+
stub_request(:delete, "#{Gitlab.endpoint}/projects/1/hooks/1").
|
|
336
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token }).
|
|
337
|
+
to_return(body: '')
|
|
338
|
+
@hook = Gitlab.delete_project_hook(1, 1)
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
it "should get the correct resource" do
|
|
342
|
+
expect(a_delete("/projects/1/hooks/1")).to have_been_made
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
it "should return false" do
|
|
346
|
+
expect(@hook).to be(false)
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
context "when JSON response" do
|
|
351
|
+
before do
|
|
352
|
+
stub_delete("/projects/1/hooks/1", "project_hook")
|
|
353
|
+
@hook = Gitlab.delete_project_hook(1, 1)
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
it "should get the correct resource" do
|
|
357
|
+
expect(a_delete("/projects/1/hooks/1")).to have_been_made
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
it "should return information about a deleted hook" do
|
|
361
|
+
expect(@hook.url).to eq("https://api.example.net/v1/webhooks/ci")
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
describe ".git_hook" do
|
|
367
|
+
before do
|
|
368
|
+
stub_get("/projects/1/git_hook", "git_hook")
|
|
369
|
+
@git_hook = Gitlab.git_hook(1)
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
it "should get the correct resource" do
|
|
373
|
+
expect(a_get("/projects/1/git_hook")).to have_been_made
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
it "should return information about a git hook" do
|
|
377
|
+
expect(@git_hook.commit_message_regex).to eq("\\b[A-Z]{3}-[0-9]+\\b")
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
describe ".add_git_hook" do
|
|
382
|
+
before do
|
|
383
|
+
stub_post("/projects/1/git_hook", "git_hook")
|
|
384
|
+
@git_hook = Gitlab.add_git_hook(1, { deny_delete_tag: false, commit_message_regex: "\\b[A-Z]{3}-[0-9]+\\b" })
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
it "should get the correct resource" do
|
|
388
|
+
expect(a_post("/projects/1/git_hook")).to have_been_made
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
it "should return information about an added git hook" do
|
|
392
|
+
expect(@git_hook.commit_message_regex).to eq("\\b[A-Z]{3}-[0-9]+\\b")
|
|
393
|
+
end
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
describe ".edit_git_hook" do
|
|
397
|
+
before do
|
|
398
|
+
stub_put("/projects/1/git_hook", "git_hook")
|
|
399
|
+
@git_hook = Gitlab.edit_git_hook(1, { deny_delete_tag: false, commit_message_regex: "\\b[A-Z]{3}-[0-9]+\\b" })
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
it "should get the correct resource" do
|
|
403
|
+
expect(a_put("/projects/1/git_hook")).to have_been_made
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
it "should return information about an edited git hook" do
|
|
407
|
+
expect(@git_hook.commit_message_regex).to eq("\\b[A-Z]{3}-[0-9]+\\b")
|
|
408
|
+
end
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
describe ".delete_git_hook" do
|
|
412
|
+
context "when empty response" do
|
|
413
|
+
before do
|
|
414
|
+
stub_request(:delete, "#{Gitlab.endpoint}/projects/1/git_hook").
|
|
415
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token }).
|
|
416
|
+
to_return(body: '')
|
|
417
|
+
@git_hook = Gitlab.delete_git_hook(1)
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
it "should get the correct resource" do
|
|
421
|
+
expect(a_delete("/projects/1/git_hook")).to have_been_made
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
it "should return false" do
|
|
425
|
+
expect(@git_hook).to be(false)
|
|
426
|
+
end
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
context "when JSON response" do
|
|
430
|
+
before do
|
|
431
|
+
stub_delete("/projects/1/git_hook", "git_hook")
|
|
432
|
+
@git_hook = Gitlab.delete_git_hook(1)
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
it "should get the correct resource" do
|
|
436
|
+
expect(a_delete("/projects/1/git_hook")).to have_been_made
|
|
437
|
+
end
|
|
438
|
+
|
|
439
|
+
it "should return information about a deleted git hook" do
|
|
440
|
+
expect(@git_hook.commit_message_regex).to eq("\\b[A-Z]{3}-[0-9]+\\b")
|
|
441
|
+
end
|
|
442
|
+
end
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
describe ".make_forked_from" do
|
|
446
|
+
before do
|
|
447
|
+
stub_post("/projects/42/fork/24", "project_fork_link")
|
|
448
|
+
@forked_project_link = Gitlab.make_forked_from(42, 24)
|
|
449
|
+
end
|
|
450
|
+
|
|
451
|
+
it "should get the correct resource" do
|
|
452
|
+
expect(a_post("/projects/42/fork/24")).to have_been_made
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
it "should return information about a forked project" do
|
|
456
|
+
expect(@forked_project_link.forked_from_project_id).to eq(24)
|
|
457
|
+
expect(@forked_project_link.forked_to_project_id).to eq(42)
|
|
458
|
+
end
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
describe ".remove_forked" do
|
|
462
|
+
before do
|
|
463
|
+
stub_delete("/projects/42/fork", "project_fork_link")
|
|
464
|
+
@forked_project_link = Gitlab.remove_forked(42)
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
it "should be sent to correct resource" do
|
|
468
|
+
expect(a_delete("/projects/42/fork")).to have_been_made
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
it "should return information about an unforked project" do
|
|
472
|
+
expect(@forked_project_link.forked_to_project_id).to eq(42)
|
|
473
|
+
end
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
describe ".deploy_keys" do
|
|
477
|
+
before do
|
|
478
|
+
stub_get("/projects/42/keys", "project_keys")
|
|
479
|
+
@deploy_keys = Gitlab.deploy_keys(42)
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
it "should get the correct resource" do
|
|
483
|
+
expect(a_get("/projects/42/keys")).to have_been_made
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
it "should return project deploy keys" do
|
|
487
|
+
expect(@deploy_keys).to be_a Gitlab::PaginatedResponse
|
|
488
|
+
expect(@deploy_keys.first.id).to eq 2
|
|
489
|
+
expect(@deploy_keys.first.title).to eq "Key Title"
|
|
490
|
+
expect(@deploy_keys.first.key).to match(/ssh-rsa/)
|
|
491
|
+
end
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
describe ".deploy_key" do
|
|
495
|
+
before do
|
|
496
|
+
stub_get("/projects/42/keys/2", "project_key")
|
|
497
|
+
@deploy_key = Gitlab.deploy_key(42, 2)
|
|
498
|
+
end
|
|
499
|
+
|
|
500
|
+
it "should get the correct resource" do
|
|
501
|
+
expect(a_get("/projects/42/keys/2")).to have_been_made
|
|
502
|
+
end
|
|
503
|
+
|
|
504
|
+
it "should return project deploy key" do
|
|
505
|
+
expect(@deploy_key.id).to eq 2
|
|
506
|
+
expect(@deploy_key.title).to eq "Key Title"
|
|
507
|
+
expect(@deploy_key.key).to match(/ssh-rsa/)
|
|
508
|
+
end
|
|
509
|
+
end
|
|
510
|
+
|
|
511
|
+
describe ".delete_deploy_key" do
|
|
512
|
+
before do
|
|
513
|
+
stub_delete("/projects/42/keys/2", "project_key")
|
|
514
|
+
@deploy_key = Gitlab.delete_deploy_key(42, 2)
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
it "should get the correct resource" do
|
|
518
|
+
expect(a_delete("/projects/42/keys/2")).to have_been_made
|
|
519
|
+
end
|
|
520
|
+
|
|
521
|
+
it "should return information about a deleted key" do
|
|
522
|
+
expect(@deploy_key.id).to eq(2)
|
|
523
|
+
end
|
|
524
|
+
end
|
|
525
|
+
|
|
526
|
+
describe ".enable_deploy_key" do
|
|
527
|
+
before do
|
|
528
|
+
stub_post("/projects/42/deploy_keys/2/enable", "project_key")
|
|
529
|
+
@deploy_key = Gitlab.enable_deploy_key(42, 2)
|
|
530
|
+
end
|
|
531
|
+
|
|
532
|
+
it "should get the correct resource" do
|
|
533
|
+
expect(a_post("/projects/42/deploy_keys/2/enable").
|
|
534
|
+
with(body: { id: '42', key_id: '2' })).to have_been_made
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
it "should return information about an enabled key" do
|
|
538
|
+
expect(@deploy_key.id).to eq(2)
|
|
539
|
+
end
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
describe ".disable_deploy_key" do
|
|
543
|
+
before do
|
|
544
|
+
stub_post("/projects/42/deploy_keys/2/disable", "project_key")
|
|
545
|
+
@deploy_key = Gitlab.disable_deploy_key(42, 2)
|
|
546
|
+
end
|
|
547
|
+
|
|
548
|
+
it "should get the correct resource" do
|
|
549
|
+
expect(a_post("/projects/42/deploy_keys/2/disable").
|
|
550
|
+
with(body: { id: '42', key_id: '2' })).to have_been_made
|
|
551
|
+
end
|
|
552
|
+
|
|
553
|
+
it "should return information about a disabled key" do
|
|
554
|
+
expect(@deploy_key.id).to eq(2)
|
|
555
|
+
end
|
|
556
|
+
end
|
|
557
|
+
|
|
558
|
+
describe ".share_project_with_group" do
|
|
559
|
+
before do
|
|
560
|
+
stub_post("/projects/3/share", "group")
|
|
561
|
+
@group = Gitlab.share_project_with_group(3, 10, 40)
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
it "should get the correct resource" do
|
|
565
|
+
expect(a_post("/projects/3/share").
|
|
566
|
+
with(body: { group_id: '10', group_access: '40' })).to have_been_made
|
|
567
|
+
end
|
|
568
|
+
|
|
569
|
+
it "should return information about an added group" do
|
|
570
|
+
expect(@group.id).to eq(10)
|
|
571
|
+
end
|
|
572
|
+
end
|
|
573
|
+
|
|
574
|
+
describe ".star_project" do
|
|
575
|
+
before do
|
|
576
|
+
stub_post("/projects/3/star", "project_star")
|
|
577
|
+
@starred_project = Gitlab.star_project(3)
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
it "should get the correct resource" do
|
|
581
|
+
expect(a_post("/projects/3/star")).to have_been_made
|
|
582
|
+
end
|
|
583
|
+
|
|
584
|
+
it "should return information about the starred project" do
|
|
585
|
+
expect(@starred_project.id).to eq(3)
|
|
586
|
+
end
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
describe ".unstar_project" do
|
|
590
|
+
before do
|
|
591
|
+
stub_delete("/projects/3/star", "project_unstar")
|
|
592
|
+
@unstarred_project = Gitlab.unstar_project(3)
|
|
593
|
+
end
|
|
594
|
+
|
|
595
|
+
it "should get the correct resource" do
|
|
596
|
+
expect(a_delete("/projects/3/star")).to have_been_made
|
|
597
|
+
end
|
|
598
|
+
|
|
599
|
+
it "should return information about the unstarred project" do
|
|
600
|
+
expect(@unstarred_project.id).to eq(3)
|
|
601
|
+
end
|
|
602
|
+
end
|
|
603
|
+
end
|