gitlab-akerl 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.prospectus +11 -0
  4. data/.travis.yml +8 -0
  5. data/CHANGELOG.md +229 -0
  6. data/CONTRIBUTING.md +195 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +24 -0
  9. data/README.md +192 -0
  10. data/Rakefile +9 -0
  11. data/bin/console +10 -0
  12. data/bin/setup +6 -0
  13. data/exe/gitlab +7 -0
  14. data/gitlab-akerl.gemspec +31 -0
  15. data/lib/gitlab.rb +45 -0
  16. data/lib/gitlab/api.rb +19 -0
  17. data/lib/gitlab/cli.rb +89 -0
  18. data/lib/gitlab/cli_helpers.rb +241 -0
  19. data/lib/gitlab/client.rb +48 -0
  20. data/lib/gitlab/client/branches.rb +91 -0
  21. data/lib/gitlab/client/build_triggers.rb +51 -0
  22. data/lib/gitlab/client/build_variables.rb +66 -0
  23. data/lib/gitlab/client/builds.rb +106 -0
  24. data/lib/gitlab/client/commits.rb +121 -0
  25. data/lib/gitlab/client/groups.rb +144 -0
  26. data/lib/gitlab/client/issues.rb +113 -0
  27. data/lib/gitlab/client/labels.rb +57 -0
  28. data/lib/gitlab/client/merge_requests.rb +168 -0
  29. data/lib/gitlab/client/milestones.rb +78 -0
  30. data/lib/gitlab/client/namespaces.rb +20 -0
  31. data/lib/gitlab/client/notes.rb +161 -0
  32. data/lib/gitlab/client/pipelines.rb +68 -0
  33. data/lib/gitlab/client/projects.rb +471 -0
  34. data/lib/gitlab/client/repositories.rb +78 -0
  35. data/lib/gitlab/client/repository_files.rb +88 -0
  36. data/lib/gitlab/client/runners.rb +115 -0
  37. data/lib/gitlab/client/services.rb +50 -0
  38. data/lib/gitlab/client/snippets.rb +91 -0
  39. data/lib/gitlab/client/system_hooks.rb +59 -0
  40. data/lib/gitlab/client/tags.rb +96 -0
  41. data/lib/gitlab/client/users.rb +250 -0
  42. data/lib/gitlab/configuration.rb +55 -0
  43. data/lib/gitlab/error.rb +85 -0
  44. data/lib/gitlab/file_response.rb +46 -0
  45. data/lib/gitlab/help.rb +95 -0
  46. data/lib/gitlab/objectified_hash.rb +34 -0
  47. data/lib/gitlab/page_links.rb +33 -0
  48. data/lib/gitlab/paginated_response.rb +97 -0
  49. data/lib/gitlab/request.rb +117 -0
  50. data/lib/gitlab/shell.rb +84 -0
  51. data/lib/gitlab/shell_history.rb +59 -0
  52. data/lib/gitlab/version.rb +3 -0
  53. data/spec/fixtures/branch.json +1 -0
  54. data/spec/fixtures/branch_delete.json +3 -0
  55. data/spec/fixtures/branches.json +1 -0
  56. data/spec/fixtures/build.json +38 -0
  57. data/spec/fixtures/build_artifacts.json +0 -0
  58. data/spec/fixtures/build_cancel.json +24 -0
  59. data/spec/fixtures/build_erase.json +24 -0
  60. data/spec/fixtures/build_retry.json +24 -0
  61. data/spec/fixtures/builds.json +78 -0
  62. data/spec/fixtures/builds_commits.json +64 -0
  63. data/spec/fixtures/compare_merge_request_diff.json +31 -0
  64. data/spec/fixtures/error_already_exists.json +1 -0
  65. data/spec/fixtures/error_project_not_found.json +1 -0
  66. data/spec/fixtures/get_repository_file.json +1 -0
  67. data/spec/fixtures/git_hook.json +1 -0
  68. data/spec/fixtures/group.json +60 -0
  69. data/spec/fixtures/group_create.json +1 -0
  70. data/spec/fixtures/group_create_with_description.json +1 -0
  71. data/spec/fixtures/group_delete.json +1 -0
  72. data/spec/fixtures/group_member.json +1 -0
  73. data/spec/fixtures/group_member_delete.json +1 -0
  74. data/spec/fixtures/group_member_edit.json +1 -0
  75. data/spec/fixtures/group_members.json +1 -0
  76. data/spec/fixtures/group_projects.json +44 -0
  77. data/spec/fixtures/group_search.json +2 -0
  78. data/spec/fixtures/groups.json +2 -0
  79. data/spec/fixtures/issue.json +1 -0
  80. data/spec/fixtures/issues.json +1 -0
  81. data/spec/fixtures/key.json +1 -0
  82. data/spec/fixtures/keys.json +1 -0
  83. data/spec/fixtures/label.json +1 -0
  84. data/spec/fixtures/labels.json +1 -0
  85. data/spec/fixtures/merge_request.json +1 -0
  86. data/spec/fixtures/merge_request_changes.json +1 -0
  87. data/spec/fixtures/merge_request_comment.json +1 -0
  88. data/spec/fixtures/merge_request_comments.json +1 -0
  89. data/spec/fixtures/merge_request_commits.json +1 -0
  90. data/spec/fixtures/merge_requests.json +1 -0
  91. data/spec/fixtures/milestone.json +1 -0
  92. data/spec/fixtures/milestone_issues.json +1 -0
  93. data/spec/fixtures/milestones.json +1 -0
  94. data/spec/fixtures/namespaces.json +1 -0
  95. data/spec/fixtures/note.json +1 -0
  96. data/spec/fixtures/notes.json +1 -0
  97. data/spec/fixtures/pipeline.json +23 -0
  98. data/spec/fixtures/pipeline_cancel.json +23 -0
  99. data/spec/fixtures/pipeline_create.json +23 -0
  100. data/spec/fixtures/pipeline_retry.json +23 -0
  101. data/spec/fixtures/pipelines.json +48 -0
  102. data/spec/fixtures/project.json +1 -0
  103. data/spec/fixtures/project_commit.json +13 -0
  104. data/spec/fixtures/project_commit_comment.json +1 -0
  105. data/spec/fixtures/project_commit_comments.json +1 -0
  106. data/spec/fixtures/project_commit_diff.json +10 -0
  107. data/spec/fixtures/project_commit_status.json +42 -0
  108. data/spec/fixtures/project_commits.json +1 -0
  109. data/spec/fixtures/project_edit.json +21 -0
  110. data/spec/fixtures/project_events.json +1 -0
  111. data/spec/fixtures/project_for_user.json +1 -0
  112. data/spec/fixtures/project_fork.json +50 -0
  113. data/spec/fixtures/project_fork_link.json +1 -0
  114. data/spec/fixtures/project_forked_for_user.json +50 -0
  115. data/spec/fixtures/project_hook.json +1 -0
  116. data/spec/fixtures/project_hooks.json +1 -0
  117. data/spec/fixtures/project_issues.json +1 -0
  118. data/spec/fixtures/project_key.json +6 -0
  119. data/spec/fixtures/project_keys.json +6 -0
  120. data/spec/fixtures/project_runner_enable.json +7 -0
  121. data/spec/fixtures/project_runners.json +16 -0
  122. data/spec/fixtures/project_search.json +1 -0
  123. data/spec/fixtures/project_star.json +44 -0
  124. data/spec/fixtures/project_tag_annotated.json +1 -0
  125. data/spec/fixtures/project_tag_lightweight.json +1 -0
  126. data/spec/fixtures/project_tags.json +1 -0
  127. data/spec/fixtures/project_unstar.json +44 -0
  128. data/spec/fixtures/project_update_commit_status.json +20 -0
  129. data/spec/fixtures/projects.json +1 -0
  130. data/spec/fixtures/raw_file.json +2 -0
  131. data/spec/fixtures/release_create.json +1 -0
  132. data/spec/fixtures/release_update.json +1 -0
  133. data/spec/fixtures/repository_file.json +1 -0
  134. data/spec/fixtures/runner.json +26 -0
  135. data/spec/fixtures/runner_delete.json +7 -0
  136. data/spec/fixtures/runner_edit.json +26 -0
  137. data/spec/fixtures/runners.json +16 -0
  138. data/spec/fixtures/runners_all.json +30 -0
  139. data/spec/fixtures/service.json +1 -0
  140. data/spec/fixtures/session.json +1 -0
  141. data/spec/fixtures/shell_history.json +2 -0
  142. data/spec/fixtures/snippet.json +1 -0
  143. data/spec/fixtures/snippet_content.json +3 -0
  144. data/spec/fixtures/snippets.json +1 -0
  145. data/spec/fixtures/system_hook.json +1 -0
  146. data/spec/fixtures/system_hooks.json +1 -0
  147. data/spec/fixtures/tag.json +1 -0
  148. data/spec/fixtures/tag_create.json +1 -0
  149. data/spec/fixtures/tag_create_with_description.json +1 -0
  150. data/spec/fixtures/tag_delete.json +1 -0
  151. data/spec/fixtures/tags.json +1 -0
  152. data/spec/fixtures/team_member.json +1 -0
  153. data/spec/fixtures/team_members.json +1 -0
  154. data/spec/fixtures/tree.json +1 -0
  155. data/spec/fixtures/trigger.json +7 -0
  156. data/spec/fixtures/triggers.json +16 -0
  157. data/spec/fixtures/user.json +1 -0
  158. data/spec/fixtures/user_block_unblock.json +1 -0
  159. data/spec/fixtures/user_email.json +1 -0
  160. data/spec/fixtures/user_emails.json +1 -0
  161. data/spec/fixtures/user_search.json +1 -0
  162. data/spec/fixtures/users.json +1 -0
  163. data/spec/fixtures/variable.json +4 -0
  164. data/spec/fixtures/variables.json +10 -0
  165. data/spec/gitlab/cli_helpers_spec.rb +57 -0
  166. data/spec/gitlab/cli_spec.rb +110 -0
  167. data/spec/gitlab/client/branches_spec.rb +99 -0
  168. data/spec/gitlab/client/build_triggers_spec.rb +67 -0
  169. data/spec/gitlab/client/build_variables_spec.rb +86 -0
  170. data/spec/gitlab/client/builds_spec.rb +148 -0
  171. data/spec/gitlab/client/client_spec.rb +11 -0
  172. data/spec/gitlab/client/commits_spec.rb +137 -0
  173. data/spec/gitlab/client/groups_spec.rb +197 -0
  174. data/spec/gitlab/client/issues_spec.rb +138 -0
  175. data/spec/gitlab/client/labels_spec.rb +68 -0
  176. data/spec/gitlab/client/merge_requests_spec.rb +177 -0
  177. data/spec/gitlab/client/milestones_spec.rb +82 -0
  178. data/spec/gitlab/client/namespaces_spec.rb +22 -0
  179. data/spec/gitlab/client/notes_spec.rb +205 -0
  180. data/spec/gitlab/client/pipelines_spec.rb +95 -0
  181. data/spec/gitlab/client/projects_spec.rb +603 -0
  182. data/spec/gitlab/client/repositories_spec.rb +109 -0
  183. data/spec/gitlab/client/repository_files_spec.rb +62 -0
  184. data/spec/gitlab/client/runners_spec.rb +185 -0
  185. data/spec/gitlab/client/services_spec.rb +55 -0
  186. data/spec/gitlab/client/snippets_spec.rb +100 -0
  187. data/spec/gitlab/client/system_hooks_spec.rb +69 -0
  188. data/spec/gitlab/client/tags_spec.rb +109 -0
  189. data/spec/gitlab/client/users_spec.rb +418 -0
  190. data/spec/gitlab/error_spec.rb +45 -0
  191. data/spec/gitlab/file_response_spec.rb +33 -0
  192. data/spec/gitlab/help_spec.rb +46 -0
  193. data/spec/gitlab/objectified_hash_spec.rb +48 -0
  194. data/spec/gitlab/page_links_spec.rb +16 -0
  195. data/spec/gitlab/paginated_response_spec.rb +60 -0
  196. data/spec/gitlab/request_spec.rb +73 -0
  197. data/spec/gitlab/shell_history_spec.rb +53 -0
  198. data/spec/gitlab/shell_spec.rb +80 -0
  199. data/spec/gitlab_spec.rb +97 -0
  200. data/spec/spec_helper.rb +74 -0
  201. metadata +476 -0
@@ -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,137 @@
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
+ end
@@ -0,0 +1,197 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ describe ".groups" do
5
+ before do
6
+ stub_get("/groups", "groups")
7
+ stub_get("/groups/3", "group")
8
+ @group = Gitlab.group(3)
9
+ @groups = Gitlab.groups
10
+ end
11
+
12
+ it "should get the correct resource" do
13
+ expect(a_get("/groups")).to have_been_made
14
+ expect(a_get("/groups/3")).to have_been_made
15
+ end
16
+
17
+ it "should return a paginated response of groups" do
18
+ expect(@groups).to be_a Gitlab::PaginatedResponse
19
+ expect(@groups.first.path).to eq("threegroup")
20
+ end
21
+ end
22
+
23
+ describe ".create_group" do
24
+ context "without description" do
25
+ before do
26
+ stub_post("/groups", "group_create")
27
+ @group = Gitlab.create_group('GitLab-Group', 'gitlab-path')
28
+ end
29
+
30
+ it "should get the correct resource" do
31
+ expect(a_post("/groups").
32
+ with(body: { path: 'gitlab-path', name: 'GitLab-Group' })).to have_been_made
33
+ end
34
+
35
+ it "should return information about a created group" do
36
+ expect(@group.name).to eq("Gitlab-Group")
37
+ expect(@group.path).to eq("gitlab-group")
38
+ end
39
+ end
40
+
41
+ context "with description" do
42
+ before do
43
+ stub_post("/groups", "group_create_with_description")
44
+ @group = Gitlab.create_group('GitLab-Group', 'gitlab-path', description: 'gitlab group description')
45
+ end
46
+
47
+ it "should get the correct resource" do
48
+ expect(a_post("/groups").
49
+ with(body: { path: 'gitlab-path', name: 'GitLab-Group',
50
+ description: 'gitlab group description' })).to have_been_made
51
+ end
52
+
53
+ it "should return information about a created group" do
54
+ expect(@group.name).to eq("Gitlab-Group")
55
+ expect(@group.path).to eq("gitlab-group")
56
+ expect(@group.description).to eq("gitlab group description")
57
+ end
58
+ end
59
+ end
60
+
61
+ describe ".delete_group" do
62
+ context "without description" do
63
+ before do
64
+ stub_delete("/groups/42", "group_delete")
65
+ @group = Gitlab.delete_group(42)
66
+ end
67
+
68
+ it "should get the correct resource" do
69
+ expect(a_delete("/groups/42")).to have_been_made
70
+ end
71
+
72
+ it "should return information about a deleted group" do
73
+ expect(@group.name).to eq("Gitlab-Group")
74
+ expect(@group.path).to eq("gitlab-group")
75
+ end
76
+ end
77
+ end
78
+
79
+ describe ".transfer_project_to_group" do
80
+ before do
81
+ stub_post("/projects", "project")
82
+ @project = Gitlab.create_project('Gitlab')
83
+ stub_post("/groups", "group_create")
84
+ @group = Gitlab.create_group('GitLab-Group', 'gitlab-path')
85
+
86
+ stub_post("/groups/#{@group.id}/projects/#{@project.id}", "group_create")
87
+ @group_transfer = Gitlab.transfer_project_to_group(@group.id, @project.id)
88
+ end
89
+
90
+ it "should post to the correct resource" do
91
+ expect(a_post("/groups/#{@group.id}/projects/#{@project.id}").with(body: { id: @group.id.to_s, project_id: @project.id.to_s })).to have_been_made
92
+ end
93
+
94
+ it "should return information about the group" do
95
+ expect(@group_transfer.name).to eq(@group.name)
96
+ expect(@group_transfer.path).to eq(@group.path)
97
+ expect(@group_transfer.id).to eq(@group.id)
98
+ end
99
+ end
100
+
101
+ describe ".group_members" do
102
+ before do
103
+ stub_get("/groups/3/members", "group_members")
104
+ @members = Gitlab.group_members(3)
105
+ end
106
+
107
+ it "should get the correct resource" do
108
+ expect(a_get("/groups/3/members")).to have_been_made
109
+ end
110
+
111
+ it "should return information about a group members" do
112
+ expect(@members).to be_a Gitlab::PaginatedResponse
113
+ expect(@members.size).to eq(2)
114
+ expect(@members[1].name).to eq("John Smith")
115
+ end
116
+ end
117
+
118
+ describe ".add_group_member" do
119
+ before do
120
+ stub_post("/groups/3/members", "group_member")
121
+ @member = Gitlab.add_group_member(3, 1, 40)
122
+ end
123
+
124
+ it "should get the correct resource" do
125
+ expect(a_post("/groups/3/members").
126
+ with(body: { user_id: '1', access_level: '40' })).to have_been_made
127
+ end
128
+
129
+ it "should return information about the added member" do
130
+ expect(@member.name).to eq("John Smith")
131
+ end
132
+ end
133
+
134
+ describe ".edit_group_member" do
135
+ before do
136
+ stub_put("/groups/3/members/1", "group_member_edit")
137
+ @member = Gitlab.edit_group_member(3, 1, 50)
138
+ end
139
+
140
+ it "should get the correct resource" do
141
+ expect(a_put("/groups/3/members/1")
142
+ .with(body: { access_level: '50'})).to have_been_made
143
+ end
144
+
145
+ it "should return information about the edited member" do
146
+ expect(@member.access_level).to eq(50)
147
+ end
148
+ end
149
+
150
+ describe ".remove_group_member" do
151
+ before do
152
+ stub_delete("/groups/3/members/1", "group_member_delete")
153
+ @group = Gitlab.remove_group_member(3, 1)
154
+ end
155
+
156
+ it "should get the correct resource" do
157
+ expect(a_delete("/groups/3/members/1")).to have_been_made
158
+ end
159
+
160
+ it "should return information about the group the member was removed from" do
161
+ expect(@group.group_id).to eq(3)
162
+ end
163
+ end
164
+
165
+ describe ".group_projects" do
166
+ before do
167
+ stub_get("/groups/4/projects", "group_projects")
168
+ @projects = Gitlab.group_projects(4)
169
+ end
170
+
171
+ it "should get the list of projects" do
172
+ expect(a_get("/groups/4/projects")).to have_been_made
173
+ end
174
+
175
+ it "should return a list of of projects under a group" do
176
+ expect(@projects).to be_a Gitlab::PaginatedResponse
177
+ expect(@projects.size).to eq(1)
178
+ expect(@projects[0].name).to eq("Diaspora Client")
179
+ end
180
+ end
181
+
182
+ describe ".group_search" do
183
+ before do
184
+ stub_get("/groups?search=Group", "group_search")
185
+ @groups = Gitlab.group_search('Group')
186
+ end
187
+
188
+ it "should get the correct resource" do
189
+ expect(a_get("/groups?search=Group")).to have_been_made
190
+ end
191
+
192
+ it "should return an array of groups found" do
193
+ expect(@groups.first.id).to eq(5)
194
+ expect(@groups.last.id).to eq(8)
195
+ end
196
+ end
197
+ end
@@ -0,0 +1,138 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ describe ".issues" do
5
+ context "with project ID passed" do
6
+ before do
7
+ stub_get("/projects/3/issues", "project_issues")
8
+ @issues = Gitlab.issues(3)
9
+ end
10
+
11
+ it "should get the correct resource" do
12
+ expect(a_get("/projects/3/issues")).to have_been_made
13
+ end
14
+
15
+ it "should return a paginated response of project's issues" do
16
+ expect(@issues).to be_a Gitlab::PaginatedResponse
17
+ expect(@issues.first.project_id).to eq(3)
18
+ end
19
+ end
20
+
21
+ context "without project ID passed" do
22
+ before do
23
+ stub_get("/issues", "issues")
24
+ @issues = Gitlab.issues
25
+ end
26
+
27
+ it "should get the correct resource" do
28
+ expect(a_get("/issues")).to have_been_made
29
+ end
30
+
31
+ it "should return a paginated response of user's issues" do
32
+ expect(@issues).to be_a Gitlab::PaginatedResponse
33
+ expect(@issues.first.closed).to be_falsey
34
+ expect(@issues.first.author.name).to eq("John Smith")
35
+ end
36
+ end
37
+ end
38
+
39
+ describe ".issue" do
40
+ before do
41
+ stub_get("/projects/3/issues/33", "issue")
42
+ @issue = Gitlab.issue(3, 33)
43
+ end
44
+
45
+ it "should get the correct resource" do
46
+ expect(a_get("/projects/3/issues/33")).to have_been_made
47
+ end
48
+
49
+ it "should return information about an issue" do
50
+ expect(@issue.project_id).to eq(3)
51
+ expect(@issue.assignee.name).to eq("Jack Smith")
52
+ end
53
+ end
54
+
55
+ describe ".create_issue" do
56
+ before do
57
+ stub_post("/projects/3/issues", "issue")
58
+ @issue = Gitlab.create_issue(3, 'title')
59
+ end
60
+
61
+ it "should get the correct resource" do
62
+ expect(a_post("/projects/3/issues").
63
+ with(body: { title: 'title' })).to have_been_made
64
+ end
65
+
66
+ it "should return information about a created issue" do
67
+ expect(@issue.project_id).to eq(3)
68
+ expect(@issue.assignee.name).to eq("Jack Smith")
69
+ end
70
+ end
71
+
72
+ describe ".edit_issue" do
73
+ before do
74
+ stub_put("/projects/3/issues/33", "issue")
75
+ @issue = Gitlab.edit_issue(3, 33, title: 'title')
76
+ end
77
+
78
+ it "should get the correct resource" do
79
+ expect(a_put("/projects/3/issues/33").
80
+ with(body: { title: 'title' })).to have_been_made
81
+ end
82
+
83
+ it "should return information about an edited issue" do
84
+ expect(@issue.project_id).to eq(3)
85
+ expect(@issue.assignee.name).to eq("Jack Smith")
86
+ end
87
+ end
88
+
89
+ describe ".close_issue" do
90
+ before do
91
+ stub_put("/projects/3/issues/33", "issue")
92
+ @issue = Gitlab.close_issue(3, 33)
93
+ end
94
+
95
+ it "should get the correct resource" do
96
+ expect(a_put("/projects/3/issues/33").
97
+ with(body: { state_event: 'close' })).to have_been_made
98
+ end
99
+
100
+ it "should return information about an closed issue" do
101
+ expect(@issue.project_id).to eq(3)
102
+ expect(@issue.assignee.name).to eq("Jack Smith")
103
+ end
104
+ end
105
+
106
+ describe ".reopen_issue" do
107
+ before do
108
+ stub_put("/projects/3/issues/33", "issue")
109
+ @issue = Gitlab.reopen_issue(3, 33)
110
+ end
111
+
112
+ it "should get the correct resource" do
113
+ expect(a_put("/projects/3/issues/33").
114
+ with(body: { state_event: 'reopen' })).to have_been_made
115
+ end
116
+
117
+ it "should return information about an reopened issue" do
118
+ expect(@issue.project_id).to eq(3)
119
+ expect(@issue.assignee.name).to eq("Jack Smith")
120
+ end
121
+ end
122
+
123
+ describe ".delete_issue" do
124
+ before do
125
+ stub_delete("/projects/3/issues/33", "issue")
126
+ @issue = Gitlab.delete_issue(3, 33)
127
+ end
128
+
129
+ it "should get the correct resource" do
130
+ expect(a_delete("/projects/3/issues/33")).to have_been_made
131
+ end
132
+
133
+ it "should return information about a deleted issue" do
134
+ expect(@issue.project_id).to eq(3)
135
+ expect(@issue.id).to eq(33)
136
+ end
137
+ end
138
+ end