gitlab 3.5.0 → 3.6.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 +4 -4
- data/CHANGELOG.md +7 -1
- data/README.md +17 -0
- data/Rakefile +1 -1
- data/exe/gitlab +1 -1
- data/lib/gitlab.rb +5 -3
- data/lib/gitlab/cli.rb +1 -1
- data/lib/gitlab/cli_helpers.rb +24 -26
- data/lib/gitlab/client.rb +1 -1
- data/lib/gitlab/client/branches.rb +2 -5
- data/lib/gitlab/client/commits.rb +5 -5
- data/lib/gitlab/client/groups.rb +8 -9
- data/lib/gitlab/client/issues.rb +7 -7
- data/lib/gitlab/client/labels.rb +3 -3
- data/lib/gitlab/client/merge_requests.rb +7 -7
- data/lib/gitlab/client/milestones.rb +5 -5
- data/lib/gitlab/client/namespaces.rb +1 -1
- data/lib/gitlab/client/notes.rb +7 -7
- data/lib/gitlab/client/projects.rb +22 -21
- data/lib/gitlab/client/repositories.rb +7 -7
- data/lib/gitlab/client/repository_files.rb +10 -10
- data/lib/gitlab/client/snippets.rb +6 -6
- data/lib/gitlab/client/system_hooks.rb +1 -1
- data/lib/gitlab/client/users.rb +5 -6
- data/lib/gitlab/configuration.rb +1 -1
- data/lib/gitlab/help.rb +19 -15
- data/lib/gitlab/objectified_hash.rb +2 -2
- data/lib/gitlab/page_links.rb +33 -0
- data/lib/gitlab/paginated_response.rb +97 -0
- data/lib/gitlab/request.rb +24 -26
- data/lib/gitlab/shell.rb +4 -5
- data/lib/gitlab/shell_history.rb +3 -5
- data/lib/gitlab/version.rb +1 -1
- data/spec/gitlab/cli_helpers_spec.rb +8 -9
- data/spec/gitlab/cli_spec.rb +0 -2
- data/spec/gitlab/client/branches_spec.rb +2 -2
- data/spec/gitlab/client/commits_spec.rb +16 -16
- data/spec/gitlab/client/groups_spec.rb +11 -14
- data/spec/gitlab/client/issues_spec.rb +9 -9
- data/spec/gitlab/client/labels_spec.rb +6 -6
- data/spec/gitlab/client/merge_requests_spec.rb +23 -23
- data/spec/gitlab/client/milestones_spec.rb +9 -9
- data/spec/gitlab/client/namespaces_spec.rb +2 -2
- data/spec/gitlab/client/notes_spec.rb +10 -10
- data/spec/gitlab/client/projects_spec.rb +29 -28
- data/spec/gitlab/client/repositories_spec.rb +7 -7
- data/spec/gitlab/client/snippets_spec.rb +7 -7
- data/spec/gitlab/client/system_hooks_spec.rb +2 -2
- data/spec/gitlab/client/users_spec.rb +20 -21
- data/spec/gitlab/help_spec.rb +1 -4
- data/spec/gitlab/objectified_hash_spec.rb +2 -2
- data/spec/gitlab/page_links_spec.rb +16 -0
- data/spec/gitlab/paginated_response_spec.rb +60 -0
- data/spec/gitlab/request_spec.rb +12 -13
- data/spec/gitlab/shell_history_spec.rb +1 -1
- data/spec/gitlab/shell_spec.rb +6 -6
- data/spec/spec_helper.rb +12 -12
- metadata +8 -2
data/spec/gitlab/help_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Gitlab::Help do
|
4
|
-
|
5
4
|
describe ".ri_cmd" do
|
6
5
|
context "ri command found" do
|
7
6
|
it "should return the path to RI" do
|
@@ -13,10 +12,9 @@ describe Gitlab::Help do
|
|
13
12
|
context "ri command NOT found" do
|
14
13
|
it "should raise" do
|
15
14
|
allow(Gitlab::Help).to receive(:`).with(/which ri/).and_return('')
|
16
|
-
expect{Gitlab::Help.ri_cmd}.to raise_error RuntimeError
|
15
|
+
expect { Gitlab::Help.ri_cmd }.to raise_error RuntimeError
|
17
16
|
end
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
19
|
|
22
20
|
describe ".change_help_output!" do
|
@@ -40,5 +38,4 @@ describe Gitlab::Help do
|
|
40
38
|
expect(@namespace).to eq("Gitlab::Client::Repositories.#{@cmd}")
|
41
39
|
end
|
42
40
|
end
|
43
|
-
|
44
41
|
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Gitlab::ObjectifiedHash do
|
4
4
|
before do
|
5
|
-
@hash = {a: 1, b: 2, 'string' => 'string', symbol: :symbol}
|
5
|
+
@hash = { a: 1, b: 2, 'string' => 'string', symbol: :symbol }
|
6
6
|
@oh = Gitlab::ObjectifiedHash.new @hash
|
7
7
|
end
|
8
8
|
|
@@ -23,7 +23,7 @@ describe Gitlab::ObjectifiedHash do
|
|
23
23
|
|
24
24
|
describe "#inspect" do
|
25
25
|
it "should return a formatted string" do
|
26
|
-
pretty_string = "#<#{@oh.class.name}:#{@oh.object_id} {hash: #{@hash
|
26
|
+
pretty_string = "#<#{@oh.class.name}:#{@oh.object_id} {hash: #{@hash}}"
|
27
27
|
expect(@oh.inspect).to eq(pretty_string)
|
28
28
|
end
|
29
29
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gitlab::PageLinks do
|
4
|
+
before do
|
5
|
+
@page_links = Gitlab::PageLinks.new('Link' => "<http://example.com/api/v3/projects?page=1&per_page=5>; rel=\"first\", <http://example.com/api/v3/projects?page=20&per_page=5>; rel=\"last\", <http://example.com/api/v3/projects?page=7&per_page=5>; rel=\"prev\", <http://example.com/api/v3/projects?page=9&per_page=5>; rel=\"next\"")
|
6
|
+
end
|
7
|
+
|
8
|
+
context '.extract_links' do
|
9
|
+
it 'should extract link header appropriately' do
|
10
|
+
expect(@page_links.last).to eql 'http://example.com/api/v3/projects?page=20&per_page=5'
|
11
|
+
expect(@page_links.first).to eql 'http://example.com/api/v3/projects?page=1&per_page=5'
|
12
|
+
expect(@page_links.next).to eql 'http://example.com/api/v3/projects?page=9&per_page=5'
|
13
|
+
expect(@page_links.prev).to eql 'http://example.com/api/v3/projects?page=7&per_page=5'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gitlab::PaginatedResponse do
|
4
|
+
before do
|
5
|
+
array = [1, 2, 3, 4]
|
6
|
+
@paginated_response = Gitlab::PaginatedResponse.new array
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should respond to *_page and has_*_page methods" do
|
10
|
+
expect(@paginated_response).to respond_to :first_page
|
11
|
+
expect(@paginated_response).to respond_to :last_page
|
12
|
+
expect(@paginated_response).to respond_to :next_page
|
13
|
+
expect(@paginated_response).to respond_to :prev_page
|
14
|
+
expect(@paginated_response).to respond_to :has_first_page?
|
15
|
+
expect(@paginated_response).to respond_to :has_last_page?
|
16
|
+
expect(@paginated_response).to respond_to :has_next_page?
|
17
|
+
expect(@paginated_response).to respond_to :has_prev_page?
|
18
|
+
end
|
19
|
+
|
20
|
+
context '.parse_headers!' do
|
21
|
+
it "should parse headers" do
|
22
|
+
@paginated_response.parse_headers!('Link' => "<http://example.com/api/v3/projects?page=1&per_page=5>; rel=\"first\", <http://example.com/api/v3/projects?page=20&per_page=5>; rel=\"last\"")
|
23
|
+
client = @paginated_response.client = double('client')
|
24
|
+
first_page_response = double('first_page_response')
|
25
|
+
last_page_response = double('last_page_response')
|
26
|
+
allow(client).to receive(:endpoint).and_return("http://example.com/api/v3")
|
27
|
+
allow(client).to receive(:get).with("/projects?page=1&per_page=5").and_return(first_page_response)
|
28
|
+
allow(client).to receive(:get).with("/projects?page=20&per_page=5").and_return(last_page_response)
|
29
|
+
expect(@paginated_response.has_first_page?).to be true
|
30
|
+
expect(@paginated_response.has_last_page?).to be true
|
31
|
+
expect(@paginated_response.has_next_page?).to be false
|
32
|
+
expect(@paginated_response.has_prev_page?).to be false
|
33
|
+
expect(@paginated_response.first_page).to be first_page_response
|
34
|
+
expect(@paginated_response.last_page).to be last_page_response
|
35
|
+
expect(@paginated_response.next_page).to be_nil
|
36
|
+
expect(@paginated_response.prev_page).to be_nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context '.each_page' do
|
41
|
+
it "should iterate pages" do
|
42
|
+
next_page = double('next_page')
|
43
|
+
allow(@paginated_response).to receive(:has_next_page?).and_return(true)
|
44
|
+
allow(@paginated_response).to receive(:next_page).and_return(next_page)
|
45
|
+
allow(next_page).to receive(:has_next_page?).and_return(false)
|
46
|
+
expect { |b| @paginated_response.each_page(&b) }.to yield_successive_args(@paginated_response, next_page)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context '.auto_paginate' do
|
51
|
+
it "should returns an array if block is not given" do
|
52
|
+
next_page = double('next_page')
|
53
|
+
allow(@paginated_response).to receive(:has_next_page?).and_return(true)
|
54
|
+
allow(@paginated_response).to receive(:next_page).and_return(next_page)
|
55
|
+
allow(next_page).to receive(:has_next_page?).and_return(false)
|
56
|
+
allow(next_page).to receive(:to_ary).and_return([5, 6, 7, 8])
|
57
|
+
expect(@paginated_response.auto_paginate).to contain_exactly(1, 2, 3, 4, 5, 6, 7, 8)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/spec/gitlab/request_spec.rb
CHANGED
@@ -15,14 +15,14 @@ describe Gitlab::Request do
|
|
15
15
|
expect(default_options).to be_a Hash
|
16
16
|
expect(default_options[:parser]).to be_a Proc
|
17
17
|
expect(default_options[:format]).to eq(:json)
|
18
|
-
expect(default_options[:headers]).to eq(
|
18
|
+
expect(default_options[:headers]).to eq('Accept' => 'application/json')
|
19
19
|
expect(default_options[:default_params]).to be_nil
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
describe ".parse" do
|
24
24
|
it "should return ObjectifiedHash" do
|
25
|
-
body = JSON.unparse(
|
25
|
+
body = JSON.unparse(a: 1, b: 2)
|
26
26
|
expect(Gitlab::Request.parse(body)).to be_an Gitlab::ObjectifiedHash
|
27
27
|
expect(Gitlab::Request.parse("true")).to be true
|
28
28
|
expect(Gitlab::Request.parse("false")).to be false
|
@@ -35,9 +35,9 @@ describe Gitlab::Request do
|
|
35
35
|
context "when endpoint is not set" do
|
36
36
|
it "should raise Error::MissingCredentials" do
|
37
37
|
@request.endpoint = nil
|
38
|
-
expect
|
38
|
+
expect do
|
39
39
|
@request.set_request_defaults
|
40
|
-
|
40
|
+
end.to raise_error(Gitlab::Error::MissingCredentials, 'Please set an endpoint to API')
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -48,35 +48,35 @@ describe Gitlab::Request do
|
|
48
48
|
|
49
49
|
it "should set default_params" do
|
50
50
|
@request.set_request_defaults('sudoer')
|
51
|
-
expect(Gitlab::Request.default_params).to eq(
|
51
|
+
expect(Gitlab::Request.default_params).to eq(sudo: 'sudoer')
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
describe "#set_authorization_header" do
|
57
57
|
it "should raise MissingCredentials when auth_token and private_token are not set" do
|
58
|
-
expect
|
58
|
+
expect do
|
59
59
|
@request.send(:set_authorization_header, {})
|
60
|
-
|
60
|
+
end.to raise_error(Gitlab::Error::MissingCredentials)
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should set the correct header when given a private_token" do
|
64
64
|
@request.private_token = 'ys9BtunN3rDKbaJCYXaN'
|
65
|
-
expect(@request.send(:set_authorization_header, {})).to eq(
|
65
|
+
expect(@request.send(:set_authorization_header, {})).to eq("PRIVATE-TOKEN" => 'ys9BtunN3rDKbaJCYXaN')
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should set the correct header when setting an auth_token via the private_token config option" do
|
69
69
|
@request.private_token = '3225e2804d31fea13fc41fc83bffef00cfaedc463118646b154acc6f94747603'
|
70
|
-
expect(@request.send(:set_authorization_header, {})).to eq(
|
70
|
+
expect(@request.send(:set_authorization_header, {})).to eq("Authorization" => "Bearer 3225e2804d31fea13fc41fc83bffef00cfaedc463118646b154acc6f94747603")
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
74
|
describe "#handle_error" do
|
75
75
|
before do
|
76
76
|
@array = Array.new(['First message.', 'Second message.'])
|
77
|
-
@obj_h = Gitlab::ObjectifiedHash.new(
|
78
|
-
|
79
|
-
|
77
|
+
@obj_h = Gitlab::ObjectifiedHash.new(user: ['not set'],
|
78
|
+
password: ['too short'],
|
79
|
+
embed_entity: { foo: ['bar'], sna: ['fu'] })
|
80
80
|
end
|
81
81
|
context "when passed an ObjectifiedHash" do
|
82
82
|
it "should return a joined string of error messages sorted by key" do
|
@@ -97,5 +97,4 @@ describe Gitlab::Request do
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
end
|
100
|
-
|
101
100
|
end
|
data/spec/gitlab/shell_spec.rb
CHANGED
@@ -8,7 +8,7 @@ describe Gitlab::Shell do
|
|
8
8
|
describe ".execute" do
|
9
9
|
context "invalid command" do
|
10
10
|
it "should raise" do
|
11
|
-
expect{Gitlab::Shell.execute 'foobar', []}.to raise_error(RuntimeError)
|
11
|
+
expect { Gitlab::Shell.execute 'foobar', [] }.to raise_error(RuntimeError)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -55,7 +55,7 @@ describe Gitlab::Shell do
|
|
55
55
|
it "should return an Array of matching commands" do
|
56
56
|
completed_cmds = @comp.call 'group'
|
57
57
|
expect(completed_cmds).to be_a Array
|
58
|
-
expect(completed_cmds.sort).to eq(
|
58
|
+
expect(completed_cmds.sort).to eq(%w(group group_members group_search groups))
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -63,15 +63,15 @@ describe Gitlab::Shell do
|
|
63
63
|
describe ".parse_input" do
|
64
64
|
context "with arguments" do
|
65
65
|
it "should set command & arguments" do
|
66
|
-
Gitlab::Shell.parse_input('create_branch 1 "api" "master"')
|
66
|
+
Gitlab::Shell.parse_input('create_branch 1 "api" "master"')
|
67
67
|
expect(Gitlab::Shell.command).to eq('create_branch')
|
68
|
-
expect(Gitlab::Shell.arguments).to eq(
|
68
|
+
expect(Gitlab::Shell.arguments).to eq(%w(1 api master))
|
69
69
|
end
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
context "without arguments" do
|
73
73
|
it 'should set command & empty arguments' do
|
74
|
-
Gitlab::Shell.parse_input('exit')
|
74
|
+
Gitlab::Shell.parse_input('exit')
|
75
75
|
expect(Gitlab::Shell.command).to eq('exit')
|
76
76
|
expect(Gitlab::Shell.arguments).to be_empty
|
77
77
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -28,47 +28,47 @@ end
|
|
28
28
|
# GET
|
29
29
|
def stub_get(path, fixture)
|
30
30
|
stub_request(:get, "#{Gitlab.endpoint}#{path}").
|
31
|
-
with(:
|
32
|
-
to_return(:
|
31
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token }).
|
32
|
+
to_return(body: load_fixture(fixture))
|
33
33
|
end
|
34
34
|
|
35
35
|
def a_get(path)
|
36
36
|
a_request(:get, "#{Gitlab.endpoint}#{path}").
|
37
|
-
with(:
|
37
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token })
|
38
38
|
end
|
39
39
|
|
40
40
|
# POST
|
41
41
|
def stub_post(path, fixture, status_code=200)
|
42
42
|
stub_request(:post, "#{Gitlab.endpoint}#{path}").
|
43
|
-
with(:
|
44
|
-
to_return(:
|
43
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token }).
|
44
|
+
to_return(body: load_fixture(fixture), status: status_code)
|
45
45
|
end
|
46
46
|
|
47
47
|
def a_post(path)
|
48
48
|
a_request(:post, "#{Gitlab.endpoint}#{path}").
|
49
|
-
with(:
|
49
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token })
|
50
50
|
end
|
51
51
|
|
52
52
|
# PUT
|
53
53
|
def stub_put(path, fixture)
|
54
54
|
stub_request(:put, "#{Gitlab.endpoint}#{path}").
|
55
|
-
with(:
|
56
|
-
to_return(:
|
55
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token }).
|
56
|
+
to_return(body: load_fixture(fixture))
|
57
57
|
end
|
58
58
|
|
59
59
|
def a_put(path)
|
60
60
|
a_request(:put, "#{Gitlab.endpoint}#{path}").
|
61
|
-
with(:
|
61
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token })
|
62
62
|
end
|
63
63
|
|
64
64
|
# DELETE
|
65
65
|
def stub_delete(path, fixture)
|
66
66
|
stub_request(:delete, "#{Gitlab.endpoint}#{path}").
|
67
|
-
with(:
|
68
|
-
to_return(:
|
67
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token }).
|
68
|
+
to_return(body: load_fixture(fixture))
|
69
69
|
end
|
70
70
|
|
71
71
|
def a_delete(path)
|
72
72
|
a_request(:delete, "#{Gitlab.endpoint}#{path}").
|
73
|
-
with(:
|
73
|
+
with(headers: { 'PRIVATE-TOKEN' => Gitlab.private_token })
|
74
74
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nihad Abbasov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11
|
11
|
+
date: 2015-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -138,6 +138,8 @@ files:
|
|
138
138
|
- lib/gitlab/error.rb
|
139
139
|
- lib/gitlab/help.rb
|
140
140
|
- lib/gitlab/objectified_hash.rb
|
141
|
+
- lib/gitlab/page_links.rb
|
142
|
+
- lib/gitlab/paginated_response.rb
|
141
143
|
- lib/gitlab/request.rb
|
142
144
|
- lib/gitlab/shell.rb
|
143
145
|
- lib/gitlab/shell_history.rb
|
@@ -231,6 +233,8 @@ files:
|
|
231
233
|
- spec/gitlab/client/users_spec.rb
|
232
234
|
- spec/gitlab/help_spec.rb
|
233
235
|
- spec/gitlab/objectified_hash_spec.rb
|
236
|
+
- spec/gitlab/page_links_spec.rb
|
237
|
+
- spec/gitlab/paginated_response_spec.rb
|
234
238
|
- spec/gitlab/request_spec.rb
|
235
239
|
- spec/gitlab/shell_history_spec.rb
|
236
240
|
- spec/gitlab/shell_spec.rb
|
@@ -350,6 +354,8 @@ test_files:
|
|
350
354
|
- spec/gitlab/client/users_spec.rb
|
351
355
|
- spec/gitlab/help_spec.rb
|
352
356
|
- spec/gitlab/objectified_hash_spec.rb
|
357
|
+
- spec/gitlab/page_links_spec.rb
|
358
|
+
- spec/gitlab/paginated_response_spec.rb
|
353
359
|
- spec/gitlab/request_spec.rb
|
354
360
|
- spec/gitlab/shell_history_spec.rb
|
355
361
|
- spec/gitlab/shell_spec.rb
|