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,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ it { should respond_to :system_hooks }
5
+ it { should respond_to :add_system_hook }
6
+ it { should respond_to :system_hook }
7
+ it { should respond_to :delete_system_hook }
8
+
9
+ describe ".hooks" do
10
+ before do
11
+ stub_get("/hooks", "system_hooks")
12
+ @hooks = Gitlab.hooks
13
+ end
14
+
15
+ it "should get the correct resource" do
16
+ expect(a_get("/hooks")).to have_been_made
17
+ end
18
+
19
+ it "should return a paginated response of system hooks" do
20
+ expect(@hooks).to be_a Gitlab::PaginatedResponse
21
+ expect(@hooks.first.url).to eq("http://example.com/hook")
22
+ end
23
+ end
24
+
25
+ describe ".add_hook" do
26
+ before do
27
+ stub_post("/hooks", "system_hook")
28
+ @hook = Gitlab.add_hook("http://example.com/hook")
29
+ end
30
+
31
+ it "should get the correct resource" do
32
+ expect(a_post("/hooks")).to have_been_made
33
+ end
34
+
35
+ it "should return information about a added system hook" do
36
+ expect(@hook.url).to eq("http://example.com/hook")
37
+ end
38
+ end
39
+
40
+ describe ".hook" do
41
+ before do
42
+ stub_get("/hooks/3", "system_hook")
43
+ @hook = Gitlab.hook(3)
44
+ end
45
+
46
+ it "should get the correct resource" do
47
+ expect(a_get("/hooks/3")).to have_been_made
48
+ end
49
+
50
+ it "should return information about a added system hook" do
51
+ expect(@hook.url).to eq("http://example.com/hook")
52
+ end
53
+ end
54
+
55
+ describe ".delete_hook" do
56
+ before do
57
+ stub_delete("/hooks/3", "system_hook")
58
+ @hook = Gitlab.delete_hook(3)
59
+ end
60
+
61
+ it "should get the correct resource" do
62
+ expect(a_delete("/hooks/3")).to have_been_made
63
+ end
64
+
65
+ it "should return information about a deleted system hook" do
66
+ expect(@hook.url).to eq("http://example.com/hook")
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,109 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitlab::Client do
4
+ it { should respond_to :repo_tags }
5
+ it { should respond_to :repo_tag }
6
+ it { should respond_to :repo_create_tag }
7
+ it { should respond_to :repo_delete_tag }
8
+ it { should respond_to :repo_create_release }
9
+ it { should respond_to :repo_update_release }
10
+
11
+ describe '.tags' do
12
+ before do
13
+ stub_get("/projects/3/repository/tags", "tags")
14
+ @tags = Gitlab.tags(3)
15
+ end
16
+
17
+ it "should get the correct resource" do
18
+ expect(a_get("/projects/3/repository/tags")).to have_been_made
19
+ end
20
+
21
+ it "should return a paginated response of repository tags" do
22
+ expect(@tags).to be_a Gitlab::PaginatedResponse
23
+ expect(@tags.map(&:name)).to eq(%w[0.0.2 0.0.1])
24
+ end
25
+ end
26
+
27
+ describe ".tag" do
28
+ before do
29
+ stub_get("/projects/3/repository/tags/0.0.1", "tag")
30
+ @tag = Gitlab.tag(3, "0.0.1")
31
+ end
32
+
33
+ it "should get the correct resource" do
34
+ expect(a_get("/projects/3/repository/tags/0.0.1")).to have_been_made
35
+ end
36
+
37
+ it "should return information about a repository tag" do
38
+ expect(@tag.name).to eq("0.0.1")
39
+ end
40
+ end
41
+
42
+ describe ".create_tag" do
43
+ before do
44
+ stub_post("/projects/3/repository/tags", "tag_create")
45
+ @tag = Gitlab.create_tag(3, "0.0.1", "master", 'this tag is annotated', 'and it has release notes')
46
+ end
47
+
48
+ it "should get the correct resource" do
49
+ expect(a_post("/projects/3/repository/tags")).to have_been_made
50
+ end
51
+
52
+ it "should return information about a new repository tag" do
53
+ expect(@tag.name).to eq("0.0.1")
54
+ expect(@tag.message).to eq('this tag is annotated')
55
+ end
56
+
57
+ it "should return detailed information" do
58
+ expect(@tag.release.description).to eq('and it has release notes')
59
+ end
60
+ end
61
+
62
+ describe ".delete_tag" do
63
+ before do
64
+ stub_delete("/projects/3/repository/tags/0.0.1", "tag_delete")
65
+ @tag = Gitlab.delete_tag(3, "0.0.1")
66
+ end
67
+
68
+ it "should get the correct resource" do
69
+ expect(a_delete("/projects/3/repository/tags/0.0.1")).to have_been_made
70
+ end
71
+
72
+ it "should return information about the deleted repository tag" do
73
+ expect(@tag.tag_name).to eq("0.0.1")
74
+ end
75
+ end
76
+
77
+ describe ".create_release" do
78
+ before do
79
+ stub_post("/projects/3/repository/tags/0.0.1/release", "release_create")
80
+ @tag = Gitlab.create_release(3, "0.0.1", "Amazing release. Wow")
81
+ end
82
+
83
+ it "should get the correct resource" do
84
+ expect(a_post("/projects/3/repository/tags/0.0.1/release")).to have_been_made
85
+ end
86
+
87
+ it "should return information about the tag and the release" do
88
+ expect(@tag.tag_name).to eq("0.0.1")
89
+ expect(@tag.description).to eq("Amazing release. Wow")
90
+ end
91
+ end
92
+
93
+ describe ".update_release" do
94
+ before do
95
+ stub_put("/projects/3/repository/tags/0.0.1/release", "release_update")
96
+ @tag = Gitlab.update_release(3, "0.0.1", 'Amazing release. Wow')
97
+ end
98
+
99
+ it "should update the correct resource" do
100
+ expect(a_put("/projects/3/repository/tags/0.0.1/release")).to have_been_made
101
+ end
102
+
103
+ it "should return information about the tag" do
104
+ expect(@tag.tag_name).to eq("0.0.1")
105
+ expect(@tag.description).to eq('Amazing release. Wow')
106
+ end
107
+ end
108
+
109
+ end
@@ -8,12 +8,12 @@ describe Gitlab::Client do
8
8
  end
9
9
 
10
10
  it "should get the correct resource" do
11
- a_get("/users").should have_been_made
11
+ expect(a_get("/users")).to have_been_made
12
12
  end
13
13
 
14
- it "should return an array of users" do
15
- @users.should be_an Array
16
- @users.first.email.should == "john@example.com"
14
+ it "should return a paginated response of users" do
15
+ expect(@users).to be_a Gitlab::PaginatedResponse
16
+ expect(@users.first.email).to eq("john@example.com")
17
17
  end
18
18
  end
19
19
 
@@ -25,11 +25,11 @@ describe Gitlab::Client do
25
25
  end
26
26
 
27
27
  it "should get the correct resource" do
28
- a_get("/users/1").should have_been_made
28
+ expect(a_get("/users/1")).to have_been_made
29
29
  end
30
30
 
31
31
  it "should return information about a user" do
32
- @user.email.should == "john@example.com"
32
+ expect(@user.email).to eq("john@example.com")
33
33
  end
34
34
  end
35
35
 
@@ -40,11 +40,11 @@ describe Gitlab::Client do
40
40
  end
41
41
 
42
42
  it "should get the correct resource" do
43
- a_get("/user").should have_been_made
43
+ expect(a_get("/user")).to have_been_made
44
44
  end
45
45
 
46
46
  it "should return information about an authorized user" do
47
- @user.email.should == "john@example.com"
47
+ expect(@user.email).to eq("john@example.com")
48
48
  end
49
49
  end
50
50
  end
@@ -57,54 +57,180 @@ describe Gitlab::Client do
57
57
  end
58
58
 
59
59
  it "should get the correct resource" do
60
- body = {:email => "email", :password => "pass", :name => "email"}
61
- a_post("/users").with(:body => body).should have_been_made
60
+ body = { email: "email", password: "pass", name: "email" }
61
+ expect(a_post("/users").with(body: body)).to have_been_made
62
62
  end
63
63
 
64
64
  it "should return information about a created user" do
65
- @user.email.should == "john@example.com"
65
+ expect(@user.email).to eq("john@example.com")
66
66
  end
67
67
  end
68
68
 
69
69
  context "when bad request" do
70
70
  it "should throw an exception" do
71
71
  stub_post("/users", "error_already_exists", 409)
72
- expect {
72
+ expect do
73
73
  Gitlab.create_user("email", "pass")
74
- }.to raise_error(Gitlab::Error::Conflict, "Server responded with code 409, message: 409 Already exists. Request URI: #{Gitlab.endpoint}/users")
74
+ end.to raise_error(Gitlab::Error::Conflict, "Server responded with code 409, message: 409 Already exists. Request URI: #{Gitlab.endpoint}/users")
75
75
  end
76
76
  end
77
77
  end
78
78
 
79
- describe ".session" do
79
+ describe ".create_user_with_userame" do
80
+ context "when successful request" do
81
+ before do
82
+ stub_post("/users", "user")
83
+ @user = Gitlab.create_user("email", "pass", "username")
84
+ end
85
+
86
+ it "should get the correct resource" do
87
+ body = { email: "email", password: "pass", username: "username" }
88
+ expect(a_post("/users").with(body: body)).to have_been_made
89
+ end
90
+
91
+ it "should return information about a created user" do
92
+ expect(@user.email).to eq("john@example.com")
93
+ end
94
+ end
95
+
96
+ context "when bad request" do
97
+ it "should throw an exception" do
98
+ stub_post("/users", "error_already_exists", 409)
99
+ expect do
100
+ Gitlab.create_user("email", "pass", "username")
101
+ end.to raise_error(Gitlab::Error::Conflict, "Server responded with code 409, message: 409 Already exists. Request URI: #{Gitlab.endpoint}/users")
102
+ end
103
+ end
104
+ end
105
+
106
+ describe ".edit_user" do
80
107
  before do
81
- stub_post("/session", "session")
82
- @session = Gitlab.session("email", "pass")
108
+ @options = { name: "Roberto" }
109
+ stub_put("/users/1", "user").with(body: @options)
110
+ @user = Gitlab.edit_user(1, @options)
111
+ end
112
+
113
+ it "should get the correct resource" do
114
+ expect(a_put("/users/1").with(body: @options)).to have_been_made
115
+ end
116
+ end
117
+
118
+ describe ".delete_user" do
119
+ before do
120
+ stub_delete("/users/1", "user")
121
+ @user = Gitlab.delete_user(1)
83
122
  end
84
123
 
85
124
  it "should get the correct resource" do
86
- a_post("/session").should have_been_made
125
+ expect(a_delete("/users/1")).to have_been_made
87
126
  end
88
127
 
89
- it "should return information about a created session" do
90
- @session.email.should == "john@example.com"
91
- @session.private_token.should == "qEsq1pt6HJPaNciie3MG"
128
+ it "should return information about a deleted user" do
129
+ expect(@user.email).to eq("john@example.com")
92
130
  end
93
131
  end
94
132
 
95
- describe ".ssh_keys" do
133
+ describe ".block_user" do
96
134
  before do
97
- stub_get("/user/keys", "keys")
98
- @keys = Gitlab.ssh_keys
135
+ stub_post("/users/1/block", "user_block_unblock")
136
+ @result = Gitlab.block_user(1)
99
137
  end
100
138
 
101
139
  it "should get the correct resource" do
102
- a_get("/user/keys").should have_been_made
140
+ expect(a_post("/users/1/block")).to have_been_made
141
+ end
142
+
143
+ it "should return boolean" do
144
+ expect(@result).to eq(true)
145
+ end
146
+ end
147
+
148
+ describe ".unblock_user" do
149
+ before do
150
+ stub_post("/users/1/unblock", "user_block_unblock")
151
+ @result = Gitlab.unblock_user(1)
152
+ end
153
+
154
+ it "should get the correct resource" do
155
+ expect(a_post("/users/1/unblock")).to have_been_made
156
+ end
157
+
158
+ it "should return boolean" do
159
+ expect(@result).to eq(true)
160
+ end
161
+ end
162
+
163
+ describe ".session" do
164
+ after do
165
+ Gitlab.endpoint = 'https://api.example.com'
166
+ Gitlab.private_token = 'secret'
167
+ end
168
+
169
+ before do
170
+ stub_request(:post, "#{Gitlab.endpoint}/session").
171
+ to_return(body: load_fixture('session'), status: 200)
172
+ @session = Gitlab.session("email", "pass")
173
+ end
174
+
175
+ context "when endpoint is not set" do
176
+ it "should raise Error::MissingCredentials" do
177
+ Gitlab.endpoint = nil
178
+ expect do
179
+ Gitlab.session("email", "pass")
180
+ end.to raise_error(Gitlab::Error::MissingCredentials, 'Please set an endpoint to API')
181
+ end
182
+ end
183
+
184
+ context "when private_token is not set" do
185
+ it "should not raise Error::MissingCredentials" do
186
+ Gitlab.private_token = nil
187
+ expect { Gitlab.session("email", "pass") }.to_not raise_error
188
+ end
103
189
  end
104
190
 
105
- it "should return an array of SSH keys" do
106
- @keys.should be_an Array
107
- @keys.first.title.should == "narkoz@helium"
191
+ context "when endpoint is set" do
192
+ it "should get the correct resource" do
193
+ expect(a_request(:post, "#{Gitlab.endpoint}/session")).to have_been_made
194
+ end
195
+
196
+ it "should return information about a created session" do
197
+ expect(@session.email).to eq("john@example.com")
198
+ expect(@session.private_token).to eq("qEsq1pt6HJPaNciie3MG")
199
+ end
200
+ end
201
+ end
202
+
203
+ describe ".ssh_keys" do
204
+ context "with user ID passed" do
205
+ before do
206
+ stub_get("/users/1/keys", "keys")
207
+ @keys = Gitlab.ssh_keys({ user_id: 1 })
208
+ end
209
+
210
+ it "should get the correct resource" do
211
+ expect(a_get("/users/1/keys")).to have_been_made
212
+ end
213
+
214
+ it "should return a paginated response of SSH keys" do
215
+ expect(@keys).to be_a Gitlab::PaginatedResponse
216
+ expect(@keys.first.title).to eq("narkoz@helium")
217
+ end
218
+ end
219
+
220
+ context "without user ID passed" do
221
+ before do
222
+ stub_get("/user/keys", "keys")
223
+ @keys = Gitlab.ssh_keys
224
+ end
225
+
226
+ it "should get the correct resource" do
227
+ expect(a_get("/user/keys")).to have_been_made
228
+ end
229
+
230
+ it "should return a paginated response of SSH keys" do
231
+ expect(@keys).to be_a Gitlab::PaginatedResponse
232
+ expect(@keys.first.title).to eq("narkoz@helium")
233
+ end
108
234
  end
109
235
  end
110
236
 
@@ -115,11 +241,11 @@ describe Gitlab::Client do
115
241
  end
116
242
 
117
243
  it "should get the correct resource" do
118
- a_get("/user/keys/1").should have_been_made
244
+ expect(a_get("/user/keys/1")).to have_been_made
119
245
  end
120
246
 
121
247
  it "should return information about an SSH key" do
122
- @key.title.should == "narkoz@helium"
248
+ expect(@key.title).to eq("narkoz@helium")
123
249
  end
124
250
  end
125
251
 
@@ -130,12 +256,12 @@ describe Gitlab::Client do
130
256
  end
131
257
 
132
258
  it "should get the correct resource" do
133
- body = {:title => "title", :key => "body"}
134
- a_post("/user/keys").with(:body => body).should have_been_made
259
+ body = { title: "title", key: "body" }
260
+ expect(a_post("/user/keys").with(body: body)).to have_been_made
135
261
  end
136
262
 
137
263
  it "should return information about a created SSH key" do
138
- @key.title.should == "narkoz@helium"
264
+ expect(@key.title).to eq("narkoz@helium")
139
265
  end
140
266
  end
141
267
 
@@ -146,11 +272,147 @@ describe Gitlab::Client do
146
272
  end
147
273
 
148
274
  it "should get the correct resource" do
149
- a_delete("/user/keys/1").should have_been_made
275
+ expect(a_delete("/user/keys/1")).to have_been_made
150
276
  end
151
277
 
152
278
  it "should return information about a deleted SSH key" do
153
- @key.title.should == "narkoz@helium"
279
+ expect(@key.title).to eq("narkoz@helium")
280
+ end
281
+ end
282
+
283
+ describe ".emails" do
284
+ describe "without user ID" do
285
+ before do
286
+ stub_get("/user/emails", "user_emails")
287
+ @emails = Gitlab.emails
288
+ end
289
+
290
+ it "should get the correct resource" do
291
+ expect(a_get("/user/emails")).to have_been_made
292
+ end
293
+
294
+ it "should return a information about a emails of user" do
295
+ email = @emails.first
296
+ expect(email.id).to eq 1
297
+ expect(email.email).to eq("email@example.com")
298
+ end
299
+ end
300
+
301
+ describe "with user ID" do
302
+ before do
303
+ stub_get("/users/2/emails", "user_emails")
304
+ @emails = Gitlab.emails(2)
305
+ end
306
+
307
+ it "should get the correct resource" do
308
+ expect(a_get("/users/2/emails")).to have_been_made
309
+ end
310
+
311
+ it "should return a information about a emails of user" do
312
+ email = @emails.first
313
+ expect(email.id).to eq 1
314
+ expect(email.email).to eq("email@example.com")
315
+ end
316
+ end
317
+ end
318
+
319
+ describe ".email" do
320
+ before do
321
+ stub_get("/user/emails/2", "user_email")
322
+ @email = Gitlab.email(2)
323
+ end
324
+
325
+ it "should get the correct resource" do
326
+ expect(a_get("/user/emails/2")).to have_been_made
327
+ end
328
+
329
+ it "should return a information about a email of user" do
330
+ expect(@email.id).to eq 1
331
+ expect(@email.email).to eq("email@example.com")
332
+ end
333
+ end
334
+
335
+ describe ".add_email" do
336
+ describe "without user ID" do
337
+ before do
338
+ stub_post("/user/emails", "user_email")
339
+ @email = Gitlab.add_email("email@example.com")
340
+ end
341
+
342
+ it "should get the correct resource" do
343
+ body = { email: "email@example.com" }
344
+ expect(a_post("/user/emails").with(body: body)).to have_been_made
345
+ end
346
+
347
+ it "should return information about a new email" do
348
+ expect(@email.id).to eq(1)
349
+ expect(@email.email).to eq("email@example.com")
350
+ end
351
+ end
352
+
353
+ describe "with user ID" do
354
+ before do
355
+ stub_post("/users/2/emails", "user_email")
356
+ @email = Gitlab.add_email("email@example.com", 2)
357
+ end
358
+
359
+ it "should get the correct resource" do
360
+ body = { email: "email@example.com" }
361
+ expect(a_post("/users/2/emails").with(body: body)).to have_been_made
362
+ end
363
+
364
+ it "should return information about a new email" do
365
+ expect(@email.id).to eq(1)
366
+ expect(@email.email).to eq("email@example.com")
367
+ end
368
+ end
369
+ end
370
+
371
+ describe ".delete_email" do
372
+ describe "without user ID" do
373
+ before do
374
+ stub_delete("/user/emails/1", "user_email")
375
+ @email = Gitlab.delete_email(1)
376
+ end
377
+
378
+ it "should get the correct resource" do
379
+ expect(a_delete("/user/emails/1")).to have_been_made
380
+ end
381
+
382
+ it "should return information about a deleted email" do
383
+ expect(@email).to be_truthy
384
+ end
385
+ end
386
+
387
+ describe "with user ID" do
388
+ before do
389
+ stub_delete("/users/2/emails/1", "user_email")
390
+ @email = Gitlab.delete_email(1, 2)
391
+ end
392
+
393
+ it "should get the correct resource" do
394
+ expect(a_delete("/users/2/emails/1")).to have_been_made
395
+ end
396
+
397
+ it "should return information about a deleted email" do
398
+ expect(@email).to be_truthy
399
+ end
400
+ end
401
+ end
402
+
403
+ describe ".user_search" do
404
+ before do
405
+ stub_get("/users?search=User", "user_search")
406
+ @users = Gitlab.user_search('User')
407
+ end
408
+
409
+ it "should get the correct resource" do
410
+ expect(a_get("/users?search=User")).to have_been_made
411
+ end
412
+
413
+ it "should return an array of users found" do
414
+ expect(@users.first.id).to eq(1)
415
+ expect(@users.last.id).to eq(2)
154
416
  end
155
417
  end
156
418
  end