gitlab 3.0.0 → 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.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.travis.yml +6 -2
  4. data/CHANGELOG.md +244 -0
  5. data/CONTRIBUTING.md +195 -0
  6. data/LICENSE.txt +1 -1
  7. data/README.md +122 -10
  8. data/Rakefile +1 -1
  9. data/bin/console +10 -0
  10. data/bin/setup +6 -0
  11. data/exe/gitlab +7 -0
  12. data/gitlab.gemspec +9 -3
  13. data/lib/gitlab.rb +18 -2
  14. data/lib/gitlab/api.rb +6 -4
  15. data/lib/gitlab/cli.rb +89 -0
  16. data/lib/gitlab/cli_helpers.rb +241 -0
  17. data/lib/gitlab/client.rb +42 -6
  18. data/lib/gitlab/client/branches.rb +91 -0
  19. data/lib/gitlab/client/build_triggers.rb +51 -0
  20. data/lib/gitlab/client/build_variables.rb +66 -0
  21. data/lib/gitlab/client/builds.rb +106 -0
  22. data/lib/gitlab/client/commits.rb +146 -0
  23. data/lib/gitlab/client/groups.rb +66 -10
  24. data/lib/gitlab/client/issues.rb +61 -16
  25. data/lib/gitlab/client/labels.rb +57 -0
  26. data/lib/gitlab/client/merge_requests.rb +137 -26
  27. data/lib/gitlab/client/milestones.rb +44 -9
  28. data/lib/gitlab/client/namespaces.rb +20 -0
  29. data/lib/gitlab/client/notes.rb +71 -16
  30. data/lib/gitlab/client/pipelines.rb +68 -0
  31. data/lib/gitlab/client/projects.rb +236 -27
  32. data/lib/gitlab/client/repositories.rb +39 -45
  33. data/lib/gitlab/client/repository_files.rb +107 -0
  34. data/lib/gitlab/client/runners.rb +115 -0
  35. data/lib/gitlab/client/services.rb +50 -0
  36. data/lib/gitlab/client/snippets.rb +26 -21
  37. data/lib/gitlab/client/system_hooks.rb +59 -0
  38. data/lib/gitlab/client/tags.rb +96 -0
  39. data/lib/gitlab/client/users.rb +151 -7
  40. data/lib/gitlab/configuration.rb +20 -4
  41. data/lib/gitlab/error.rb +55 -12
  42. data/lib/gitlab/file_response.rb +46 -0
  43. data/lib/gitlab/help.rb +95 -0
  44. data/lib/gitlab/objectified_hash.rb +19 -3
  45. data/lib/gitlab/page_links.rb +33 -0
  46. data/lib/gitlab/paginated_response.rb +97 -0
  47. data/lib/gitlab/request.rb +65 -33
  48. data/lib/gitlab/shell.rb +84 -0
  49. data/lib/gitlab/shell_history.rb +59 -0
  50. data/lib/gitlab/version.rb +1 -1
  51. data/spec/fixtures/{project_branch.json → branch.json} +1 -1
  52. data/spec/fixtures/branch_delete.json +3 -0
  53. data/spec/fixtures/{project_branches.json → branches.json} +0 -0
  54. data/spec/fixtures/build.json +38 -0
  55. data/spec/fixtures/build_artifacts.json +0 -0
  56. data/spec/fixtures/build_cancel.json +24 -0
  57. data/spec/fixtures/build_erase.json +24 -0
  58. data/spec/fixtures/build_retry.json +24 -0
  59. data/spec/fixtures/builds.json +78 -0
  60. data/spec/fixtures/builds_commits.json +64 -0
  61. data/spec/fixtures/compare_merge_request_diff.json +31 -0
  62. data/spec/fixtures/error_project_not_found.json +1 -0
  63. data/spec/fixtures/get_repository_file.json +1 -0
  64. data/spec/fixtures/group_create_with_description.json +1 -0
  65. data/spec/fixtures/group_delete.json +1 -0
  66. data/spec/fixtures/group_member_edit.json +1 -0
  67. data/spec/fixtures/group_projects.json +44 -0
  68. data/spec/fixtures/group_search.json +2 -0
  69. data/spec/fixtures/label.json +1 -0
  70. data/spec/fixtures/labels.json +1 -0
  71. data/spec/fixtures/merge_request_changes.json +1 -0
  72. data/spec/fixtures/merge_request_closes_issues.json +1 -0
  73. data/spec/fixtures/{comment_merge_request.json → merge_request_comment.json} +0 -0
  74. data/spec/fixtures/merge_request_comments.json +1 -0
  75. data/spec/fixtures/merge_request_commits.json +1 -0
  76. data/spec/fixtures/milestone_issues.json +1 -0
  77. data/spec/fixtures/milestone_merge_requests.json +1 -0
  78. data/spec/fixtures/namespaces.json +1 -0
  79. data/spec/fixtures/pipeline.json +23 -0
  80. data/spec/fixtures/pipeline_cancel.json +23 -0
  81. data/spec/fixtures/pipeline_create.json +23 -0
  82. data/spec/fixtures/pipeline_retry.json +23 -0
  83. data/spec/fixtures/pipelines.json +48 -0
  84. data/spec/fixtures/project_commit.json +13 -0
  85. data/spec/fixtures/project_commit_comment.json +1 -0
  86. data/spec/fixtures/project_commit_comments.json +1 -0
  87. data/spec/fixtures/project_commit_create.json +22 -0
  88. data/spec/fixtures/project_commit_diff.json +10 -0
  89. data/spec/fixtures/project_commit_status.json +42 -0
  90. data/spec/fixtures/project_edit.json +21 -0
  91. data/spec/fixtures/project_events.json +1 -0
  92. data/spec/fixtures/project_fork.json +50 -0
  93. data/spec/fixtures/project_forked_for_user.json +50 -0
  94. data/spec/fixtures/project_runner_enable.json +7 -0
  95. data/spec/fixtures/project_runners.json +16 -0
  96. data/spec/fixtures/project_search.json +1 -0
  97. data/spec/fixtures/project_star.json +44 -0
  98. data/spec/fixtures/project_tag_annotated.json +1 -0
  99. data/spec/fixtures/project_tag_lightweight.json +1 -0
  100. data/spec/fixtures/project_unstar.json +44 -0
  101. data/spec/fixtures/project_update_commit_status.json +20 -0
  102. data/spec/fixtures/push_rule.json +1 -0
  103. data/spec/fixtures/raw_file.json +2 -0
  104. data/spec/fixtures/release_create.json +1 -0
  105. data/spec/fixtures/release_update.json +1 -0
  106. data/spec/fixtures/repository_file.json +1 -0
  107. data/spec/fixtures/runner.json +26 -0
  108. data/spec/fixtures/runner_delete.json +7 -0
  109. data/spec/fixtures/runner_edit.json +26 -0
  110. data/spec/fixtures/runners.json +16 -0
  111. data/spec/fixtures/runners_all.json +30 -0
  112. data/spec/fixtures/service.json +1 -0
  113. data/spec/fixtures/shell_history.json +2 -0
  114. data/spec/fixtures/snippet_content.json +3 -0
  115. data/spec/fixtures/system_hook.json +1 -0
  116. data/spec/fixtures/system_hooks.json +1 -0
  117. data/spec/fixtures/tag.json +1 -0
  118. data/spec/fixtures/tag_create.json +1 -0
  119. data/spec/fixtures/tag_create_with_description.json +1 -0
  120. data/spec/fixtures/tag_delete.json +1 -0
  121. data/spec/fixtures/tags.json +1 -0
  122. data/spec/fixtures/tree.json +1 -0
  123. data/spec/fixtures/trigger.json +7 -0
  124. data/spec/fixtures/triggers.json +16 -0
  125. data/spec/fixtures/user.json +1 -1
  126. data/spec/fixtures/user_block_unblock.json +1 -0
  127. data/spec/fixtures/user_email.json +1 -0
  128. data/spec/fixtures/user_emails.json +1 -0
  129. data/spec/fixtures/user_search.json +1 -0
  130. data/spec/fixtures/users.json +1 -1
  131. data/spec/fixtures/variable.json +4 -0
  132. data/spec/fixtures/variables.json +10 -0
  133. data/spec/gitlab/cli_helpers_spec.rb +57 -0
  134. data/spec/gitlab/cli_spec.rb +119 -0
  135. data/spec/gitlab/client/branches_spec.rb +99 -0
  136. data/spec/gitlab/client/build_triggers_spec.rb +67 -0
  137. data/spec/gitlab/client/build_variables_spec.rb +86 -0
  138. data/spec/gitlab/client/builds_spec.rb +148 -0
  139. data/spec/gitlab/client/client_spec.rb +11 -0
  140. data/spec/gitlab/client/commits_spec.rb +168 -0
  141. data/spec/gitlab/client/groups_spec.rb +116 -30
  142. data/spec/gitlab/client/issues_spec.rb +93 -29
  143. data/spec/gitlab/client/labels_spec.rb +68 -0
  144. data/spec/gitlab/client/merge_requests_spec.rb +171 -39
  145. data/spec/gitlab/client/milestones_spec.rb +45 -13
  146. data/spec/gitlab/client/namespaces_spec.rb +22 -0
  147. data/spec/gitlab/client/notes_spec.rb +82 -33
  148. data/spec/gitlab/client/pipelines_spec.rb +95 -0
  149. data/spec/gitlab/client/projects_spec.rb +371 -71
  150. data/spec/gitlab/client/repositories_spec.rb +51 -30
  151. data/spec/gitlab/client/repository_files_spec.rb +77 -0
  152. data/spec/gitlab/client/runners_spec.rb +185 -0
  153. data/spec/gitlab/client/services_spec.rb +55 -0
  154. data/spec/gitlab/client/snippets_spec.rb +35 -20
  155. data/spec/gitlab/client/system_hooks_spec.rb +69 -0
  156. data/spec/gitlab/client/tags_spec.rb +109 -0
  157. data/spec/gitlab/client/users_spec.rb +296 -34
  158. data/spec/gitlab/error_spec.rb +45 -0
  159. data/spec/gitlab/file_response_spec.rb +33 -0
  160. data/spec/gitlab/help_spec.rb +46 -0
  161. data/spec/gitlab/objectified_hash_spec.rb +48 -0
  162. data/spec/gitlab/page_links_spec.rb +16 -0
  163. data/spec/gitlab/paginated_response_spec.rb +60 -0
  164. data/spec/gitlab/request_spec.rb +73 -0
  165. data/spec/gitlab/shell_history_spec.rb +53 -0
  166. data/spec/gitlab/shell_spec.rb +80 -0
  167. data/spec/gitlab_spec.rb +48 -7
  168. data/spec/spec_helper.rb +24 -13
  169. metadata +287 -33
  170. data/spec/fixtures/create_merge_request.json +0 -1
  171. data/spec/fixtures/project_delete_key.json +0 -8
  172. data/spec/fixtures/update_merge_request.json +0 -1
@@ -0,0 +1,99 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ it { should respond_to :repo_branches }
5
+ it { should respond_to :repo_branch }
6
+ it { should respond_to :repo_protect_branch }
7
+ it { should respond_to :repo_unprotect_branch }
8
+
9
+ describe ".branches" do
10
+ before do
11
+ stub_get("/projects/3/repository/branches", "branches")
12
+ @branches = Gitlab.branches(3)
13
+ end
14
+
15
+ it "should get the correct resource" do
16
+ expect(a_get("/projects/3/repository/branches")).to have_been_made
17
+ end
18
+
19
+ it "should return a paginated response of repository branches" do
20
+ expect(@branches).to be_a Gitlab::PaginatedResponse
21
+ expect(@branches.first.name).to eq("api")
22
+ end
23
+ end
24
+
25
+ describe ".branch" do
26
+ before do
27
+ stub_get("/projects/3/repository/branches/api", "branch")
28
+ @branch = Gitlab.branch(3, "api")
29
+ end
30
+
31
+ it "should get the correct resource" do
32
+ expect(a_get("/projects/3/repository/branches/api")).to have_been_made
33
+ end
34
+
35
+ it "should return information about a repository branch" do
36
+ expect(@branch.name).to eq("api")
37
+ end
38
+ end
39
+
40
+ describe ".protect_branch" do
41
+ before do
42
+ stub_put("/projects/3/repository/branches/api/protect", "branch")
43
+ @branch = Gitlab.protect_branch(3, "api")
44
+ end
45
+
46
+ it "should get the correct resource" do
47
+ expect(a_put("/projects/3/repository/branches/api/protect")).to have_been_made
48
+ end
49
+
50
+ it "should return information about a protected repository branch" do
51
+ expect(@branch.name).to eq("api")
52
+ end
53
+ end
54
+
55
+ describe ".unprotect_branch" do
56
+ before do
57
+ stub_put("/projects/3/repository/branches/api/unprotect", "branch")
58
+ @branch = Gitlab.unprotect_branch(3, "api")
59
+ end
60
+
61
+ it "should get the correct resource" do
62
+ expect(a_put("/projects/3/repository/branches/api/unprotect")).to have_been_made
63
+ end
64
+
65
+ it "should return information about an unprotected repository branch" do
66
+ expect(@branch.name).to eq("api")
67
+ end
68
+ end
69
+
70
+ describe ".create_branch" do
71
+ before do
72
+ stub_post("/projects/3/repository/branches", "branch")
73
+ @branch = Gitlab.create_branch(3, "api", "master")
74
+ end
75
+
76
+ it "should get the correct resource" do
77
+ expect(a_post("/projects/3/repository/branches")).to have_been_made
78
+ end
79
+
80
+ it "should return information about a new repository branch" do
81
+ expect(@branch.name).to eq("api")
82
+ end
83
+ end
84
+
85
+ describe ".delete_branch" do
86
+ before do
87
+ stub_delete("/projects/3/repository/branches/api", "branch_delete")
88
+ @branch = Gitlab.delete_branch(3, "api")
89
+ end
90
+
91
+ it "should get the correct resource" do
92
+ expect(a_delete("/projects/3/repository/branches/api")).to have_been_made
93
+ end
94
+
95
+ it "should return information about the deleted repository branch" do
96
+ expect(@branch.branch_name).to eq("api")
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ describe ".triggers" do
5
+ before do
6
+ stub_get("/projects/3/triggers", "triggers")
7
+ @triggers = Gitlab.triggers(3)
8
+ end
9
+
10
+ it "should get the correct resource" do
11
+ expect(a_get("/projects/3/triggers")).to have_been_made
12
+ end
13
+
14
+ it "should return an array of project's triggers" do
15
+ expect(@triggers).to be_a Gitlab::PaginatedResponse
16
+ expect(@triggers.first.token).to eq("fbdb730c2fbdb095a0862dbd8ab88b")
17
+ end
18
+ end
19
+
20
+ describe ".trigger" do
21
+ before do
22
+ stub_get("/projects/3/triggers/7b9148c158980bbd9bcea92c17522d", "trigger")
23
+ @trigger = Gitlab.trigger(3, "7b9148c158980bbd9bcea92c17522d")
24
+ end
25
+
26
+ it "should get the correct resource" do
27
+ expect(a_get("/projects/3/triggers/7b9148c158980bbd9bcea92c17522d")).to have_been_made
28
+ end
29
+
30
+ it "should return information about a trigger" do
31
+ expect(@trigger.created_at).to eq("2015-12-23T16:25:56.760Z")
32
+ expect(@trigger.token).to eq("7b9148c158980bbd9bcea92c17522d")
33
+ end
34
+ end
35
+
36
+ describe ".create_trigger" do
37
+ before do
38
+ stub_post("/projects/3/triggers", "trigger")
39
+ @trigger = Gitlab.create_trigger(3)
40
+ end
41
+
42
+ it "should get the correct resource" do
43
+ expect(a_post("/projects/3/triggers")).to have_been_made
44
+ end
45
+
46
+ it "should return information about a new trigger" do
47
+ expect(@trigger.created_at).to eq("2015-12-23T16:25:56.760Z")
48
+ expect(@trigger.token).to eq("7b9148c158980bbd9bcea92c17522d")
49
+ end
50
+ end
51
+
52
+ describe ".remove_trigger" do
53
+ before do
54
+ stub_delete("/projects/3/triggers/7b9148c158980bbd9bcea92c17522d", "trigger")
55
+ @trigger = Gitlab.remove_trigger(3, "7b9148c158980bbd9bcea92c17522d")
56
+ end
57
+
58
+ it "should get the correct resource" do
59
+ expect(a_delete("/projects/3/triggers/7b9148c158980bbd9bcea92c17522d")).to have_been_made
60
+ end
61
+
62
+ it "should return information about a deleted trigger" do
63
+ expect(@trigger.created_at).to eq("2015-12-23T16:25:56.760Z")
64
+ expect(@trigger.token).to eq("7b9148c158980bbd9bcea92c17522d")
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ describe ".variables" do
5
+ before do
6
+ stub_get("/projects/3/variables", "variables")
7
+ @variables = Gitlab.variables(3)
8
+ end
9
+
10
+ it "should get the correct resource" do
11
+ expect(a_get("/projects/3/variables")).to have_been_made
12
+ end
13
+
14
+ it "should return an array of project's variables" do
15
+ expect(@variables).to be_a Gitlab::PaginatedResponse
16
+ expect(@variables.first.key).to eq("TEST_VARIABLE_1")
17
+ expect(@variables.first.value).to eq("TEST_1")
18
+ end
19
+ end
20
+
21
+ describe ".variable" do
22
+ before do
23
+ stub_get("/projects/3/variables/VARIABLE", "variable")
24
+ @variable = Gitlab.variable(3, "VARIABLE")
25
+ end
26
+
27
+ it "should get the correct resource" do
28
+ expect(a_get("/projects/3/variables/VARIABLE")).to have_been_made
29
+ end
30
+
31
+ it "should return information about a variable" do
32
+ expect(@variable.key).to eq("VARIABLE")
33
+ expect(@variable.value).to eq("the value")
34
+ end
35
+ end
36
+
37
+ describe ".create_variable" do
38
+ before do
39
+ stub_post("/projects/3/variables", "variable")
40
+ @variable = Gitlab.create_variable(3, "NEW_VARIABLE", "new value")
41
+ end
42
+
43
+ it "should get the correct resource" do
44
+ body = { key: "NEW_VARIABLE", value: "new value" }
45
+ expect(a_post("/projects/3/variables").with(body: body)).to have_been_made
46
+ end
47
+
48
+ it "should return information about a new variable" do
49
+ expect(@variable.key).to eq("VARIABLE")
50
+ expect(@variable.value).to eq("the value")
51
+ end
52
+ end
53
+
54
+ describe ".update_variable" do
55
+ before do
56
+ stub_put("/projects/3/variables/UPD_VARIABLE", "variable")
57
+ @variable = Gitlab.update_variable(3, "UPD_VARIABLE", "updated value")
58
+ end
59
+
60
+ it "should put the correct resource" do
61
+ body = { value: "updated value" }
62
+ expect(a_put("/projects/3/variables/UPD_VARIABLE").with(body: body)).to have_been_made
63
+ end
64
+
65
+ it "should return information about an updated variable" do
66
+ expect(@variable.key).to eq("VARIABLE")
67
+ expect(@variable.value).to eq("the value")
68
+ end
69
+ end
70
+
71
+ describe ".remove_variable" do
72
+ before do
73
+ stub_delete("/projects/3/variables/DEL_VARIABLE", "variable")
74
+ @variable = Gitlab.remove_variable(3, "DEL_VARIABLE")
75
+ end
76
+
77
+ it "should get the correct resource" do
78
+ expect(a_delete("/projects/3/variables/DEL_VARIABLE")).to have_been_made
79
+ end
80
+
81
+ it "should return information about a deleted variable" do
82
+ expect(@variable.key).to eq("VARIABLE")
83
+ expect(@variable.value).to eq("the value")
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,148 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ describe ".builds" do
5
+ before do
6
+ stub_get("/projects/3/builds", "builds")
7
+ @builds = Gitlab.builds(3)
8
+ end
9
+
10
+ it "should get the correct resource" do
11
+ expect(a_get("/projects/3/builds")).to have_been_made
12
+ end
13
+
14
+ it "should return a paginated response of project's builds" do
15
+ expect(@builds).to be_a Gitlab::PaginatedResponse
16
+ end
17
+ end
18
+
19
+ describe ".build" do
20
+ before do
21
+ stub_get("/projects/3/builds/8", "build")
22
+ @build = Gitlab.build(3, 8)
23
+ end
24
+
25
+ it "should get the correct resource" do
26
+ expect(a_get("/projects/3/builds/8")).to have_been_made
27
+ end
28
+
29
+ it "should return a single build" do
30
+ expect(@build).to be_a Gitlab::ObjectifiedHash
31
+ end
32
+
33
+ it "should return information about a build" do
34
+ expect(@build.id).to eq(8)
35
+ expect(@build.user.name).to eq("John Smith")
36
+ end
37
+ end
38
+
39
+ describe ".build_artifacts" do
40
+ context "when successful request" do
41
+ before do
42
+ fixture = load_fixture('build_artifacts')
43
+ fixture.set_encoding(Encoding::ASCII_8BIT)
44
+ stub_request(:get, "#{Gitlab.endpoint}/projects/3/builds/8/artifacts").
45
+ with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token }).
46
+ to_return(body: fixture.read, headers: { 'Content-Disposition' => "attachment; filename=artifacts.zip" })
47
+ @build_artifacts = Gitlab.build_artifacts(3, 8)
48
+ end
49
+
50
+ it "should get the correct resource" do
51
+ expect(a_get("/projects/3/builds/8/artifacts")).to have_been_made
52
+ end
53
+
54
+ it "should return a FileResponse" do
55
+ expect(@build_artifacts).to be_a Gitlab::FileResponse
56
+ end
57
+
58
+ it "should return a file with filename" do
59
+ expect(@build_artifacts.filename).to eq "artifacts.zip"
60
+ end
61
+ end
62
+
63
+ context "when bad request" do
64
+ it "should throw an exception" do
65
+ stub_get("/projects/3/builds/8/artifacts", "error_project_not_found", 404)
66
+ expect{ Gitlab.build_artifacts(3, 8) }.to raise_error(Gitlab::Error::NotFound, "Server responded with code 404, message: 404 Project Not Found. Request URI: #{Gitlab.endpoint}/projects/3/builds/8/artifacts")
67
+ end
68
+ end
69
+ end
70
+
71
+ describe ".builds_commits" do
72
+ before do
73
+ stub_get("/projects/3/repository/commits/0ff3ae198f8601a285adcf5c0fff204ee6fba5fd/builds", "builds_commits")
74
+ @builds_commits = Gitlab.commit_builds(3, "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd")
75
+ end
76
+
77
+ it "should get the correct resource" do
78
+ expect(a_get("/projects/3/repository/commits/0ff3ae198f8601a285adcf5c0fff204ee6fba5fd/builds")).to have_been_made
79
+ end
80
+
81
+ it "should return a paginated response of commit builds" do
82
+ expect(@builds_commits).to be_a Gitlab::PaginatedResponse
83
+ end
84
+
85
+ it "should return information about the builds" do
86
+ expect(@builds_commits.count).to eq(2)
87
+ end
88
+ end
89
+
90
+
91
+
92
+ describe ".build_cancel" do
93
+ before do
94
+ stub_post("/projects/3/builds/8/cancel", "build_cancel")
95
+ @build_cancel = Gitlab.build_cancel(3, 8)
96
+ end
97
+
98
+ it "should get the correct resource" do
99
+ expect(a_post("/projects/3/builds/8/cancel")).to have_been_made
100
+ end
101
+
102
+ it "should return a single build" do
103
+ expect(@build_cancel).to be_a Gitlab::ObjectifiedHash
104
+ end
105
+
106
+ it "should return information about a build" do
107
+ expect(@build_cancel.commit.author_name).to eq("John Smith")
108
+ end
109
+ end
110
+
111
+ describe ".build_retry" do
112
+ before do
113
+ stub_post("/projects/3/builds/69/retry", "build_retry")
114
+ @build_retry = Gitlab.build_retry(3, 69)
115
+ end
116
+
117
+ it "should get the correct resource" do
118
+ expect(a_post("/projects/3/builds/69/retry")).to have_been_made
119
+ end
120
+
121
+ it "should return a single build" do
122
+ expect(@build_retry).to be_a Gitlab::ObjectifiedHash
123
+ end
124
+
125
+ it "should return information about a build" do
126
+ expect(@build_retry.commit.author_name).to eq("John Smith")
127
+ end
128
+ end
129
+
130
+ describe ".build_erase" do
131
+ before do
132
+ stub_post("/projects/3/builds/69/erase", "build_erase")
133
+ @build_retry = Gitlab.build_erase(3, 69)
134
+ end
135
+
136
+ it "should get the correct resource" do
137
+ expect(a_post("/projects/3/builds/69/erase")).to have_been_made
138
+ end
139
+
140
+ it "should return a single build" do
141
+ expect(@build_retry).to be_a Gitlab::ObjectifiedHash
142
+ end
143
+
144
+ it "should return information about a build" do
145
+ expect(@build_retry.commit.author_name).to eq("John Smith")
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ describe '#inspect' do
5
+ it 'masks tokens on inspect' do
6
+ client = described_class.new(private_token: 'ui3gIYf4MMzTx-Oh5cEBx')
7
+ inspected = client.inspect
8
+ expect(inspected).to include('****************cEBx')
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,168 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ it { should respond_to :repo_commits }
5
+ it { should respond_to :repo_commit }
6
+ it { should respond_to :repo_commit_diff }
7
+ it { should respond_to :repo_commit_comments }
8
+ it { should respond_to :repo_create_commit_comment }
9
+ it { should respond_to :repo_commit_status }
10
+ it { should respond_to :repo_update_commit_status }
11
+
12
+ describe ".commits" do
13
+ before do
14
+ stub_get("/projects/3/repository/commits", "project_commits").
15
+ with(query: { ref_name: "api" })
16
+ @commits = Gitlab.commits(3, ref_name: "api")
17
+ end
18
+
19
+ it "should get the correct resource" do
20
+ expect(a_get("/projects/3/repository/commits").
21
+ with(query: { ref_name: "api" })).to have_been_made
22
+ end
23
+
24
+ it "should return a paginated response of repository commits" do
25
+ expect(@commits).to be_a Gitlab::PaginatedResponse
26
+ expect(@commits.first.id).to eq("f7dd067490fe57505f7226c3b54d3127d2f7fd46")
27
+ end
28
+ end
29
+
30
+ describe ".commit" do
31
+ before do
32
+ stub_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6", "project_commit")
33
+ @commit = Gitlab.commit(3, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
34
+ end
35
+
36
+ it "should get the correct resource" do
37
+ expect(a_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6")).
38
+ to have_been_made
39
+ end
40
+
41
+ it "should return a repository commit" do
42
+ expect(@commit.id).to eq("6104942438c14ec7bd21c6cd5bd995272b3faff6")
43
+ end
44
+ end
45
+
46
+ describe ".commit_diff" do
47
+ before do
48
+ stub_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/diff", "project_commit_diff")
49
+ @diff = Gitlab.commit_diff(3, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
50
+ end
51
+
52
+ it "should get the correct resource" do
53
+ expect(a_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/diff")).
54
+ to have_been_made
55
+ end
56
+
57
+ it "should return a diff of a commit" do
58
+ expect(@diff.new_path).to eq("doc/update/5.4-to-6.0.md")
59
+ end
60
+ end
61
+
62
+ describe ".commit_comments" do
63
+ before do
64
+ stub_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/comments", "project_commit_comments")
65
+ @commit_comments = Gitlab.commit_comments(3, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
66
+ end
67
+
68
+ it "should get the correct resource" do
69
+ expect(a_get("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/comments")).
70
+ to have_been_made
71
+ end
72
+
73
+ it "should return commit's comments" do
74
+ expect(@commit_comments).to be_a Gitlab::PaginatedResponse
75
+ expect(@commit_comments.length).to eq(2)
76
+ expect(@commit_comments[0].note).to eq("this is the 1st comment on commit 6104942438c14ec7bd21c6cd5bd995272b3faff6")
77
+ expect(@commit_comments[0].author.id).to eq(11)
78
+ expect(@commit_comments[1].note).to eq("another discussion point on commit 6104942438c14ec7bd21c6cd5bd995272b3faff6")
79
+ expect(@commit_comments[1].author.id).to eq(12)
80
+ end
81
+ end
82
+
83
+ describe ".create_commit_comment" do
84
+ before do
85
+ stub_post("/projects/3/repository/commits/6104942438c14ec7bd21c6cd5bd995272b3faff6/comments", "project_commit_comment")
86
+ @merge_request = Gitlab.create_commit_comment(3, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'Nice code!')
87
+ end
88
+
89
+ it "should return information about the newly created comment" do
90
+ expect(@merge_request.note).to eq('Nice code!')
91
+ expect(@merge_request.author.id).to eq(1)
92
+ end
93
+ end
94
+
95
+ describe ".commit_status" do
96
+ before do
97
+ stub_get("/projects/6/repository/commits/7d938cb8ac15788d71f4b67c035515a160ea76d8/statuses", 'project_commit_status').
98
+ with(query: { all: 'true' })
99
+ @statuses = Gitlab.commit_status(6, '7d938cb8ac15788d71f4b67c035515a160ea76d8', all: true)
100
+ end
101
+
102
+ it "should get the correct resource" do
103
+ expect(a_get("/projects/6/repository/commits/7d938cb8ac15788d71f4b67c035515a160ea76d8/statuses").
104
+ with(query: { all: true }))
105
+ end
106
+
107
+ it "should get statuses of a commit" do
108
+ expect(@statuses).to be_kind_of Gitlab::PaginatedResponse
109
+ expect(@statuses.first.sha).to eq('7d938cb8ac15788d71f4b67c035515a160ea76d8')
110
+ expect(@statuses.first.ref).to eq('decreased-spec')
111
+ expect(@statuses.first.status).to eq('failed')
112
+ expect(@statuses.last.sha).to eq('7d938cb8ac15788d71f4b67c035515a160ea76d8')
113
+ expect(@statuses.last.status).to eq('success')
114
+ end
115
+ end
116
+
117
+ describe ".update_commit_status" do
118
+ before do
119
+ stub_post("/projects/6/statuses/7d938cb8ac15788d71f4b67c035515a160ea76d8", 'project_update_commit_status').
120
+ with(query: { name: 'test', ref: 'decreased-spec', state: 'failed' })
121
+ @status = Gitlab.update_commit_status(6, '7d938cb8ac15788d71f4b67c035515a160ea76d8', 'failed', name: 'test', ref: 'decreased-spec')
122
+ end
123
+
124
+ it "should get the correct resource" do
125
+ expect(a_post('/projects/6/statuses/7d938cb8ac15788d71f4b67c035515a160ea76d8').
126
+ with(query: { name: 'test', ref: 'decreased-spec', state: 'failed' }))
127
+ end
128
+
129
+ it "should information about the newly created status" do
130
+ expect(@status).to be_kind_of Gitlab::ObjectifiedHash
131
+ expect(@status.id).to eq(498)
132
+ expect(@status.sha).to eq('7d938cb8ac15788d71f4b67c035515a160ea76d8')
133
+ expect(@status.status).to eq('failed')
134
+ expect(@status.ref).to eq('decreased-spec')
135
+ end
136
+ end
137
+
138
+ describe ".create_commit" do
139
+ let(:actions) do
140
+ [
141
+ {
142
+ action: "create",
143
+ file_path: "foo/bar",
144
+ content: "some content"
145
+ }
146
+ ]
147
+ end
148
+
149
+ let(:query) do
150
+ {
151
+ branch_name: 'dev',
152
+ commit_message: 'refactors everything',
153
+ actions: actions,
154
+ author_email: 'joe@sample.org',
155
+ author_name: 'Joe Sample'
156
+ }
157
+ end
158
+
159
+ before do
160
+ stub_post("/projects/6/repository/commits", 'project_commit_create').with(query: query)
161
+ @commit = Gitlab.create_commit(6, 'dev', 'refactors everything', actions, {author_email: 'joe@sample.org', author_name: 'Joe Sample'})
162
+ end
163
+
164
+ it "should return id of a created commit" do
165
+ expect(@commit.id).to eq('ed899a2f4b50b4370feeea94676502b42383c746')
166
+ end
167
+ end
168
+ end