bitbucket_rest_api2 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +7 -0
- data/README.md +169 -0
- data/lib/bitbucket_rest_api.rb +90 -0
- data/lib/bitbucket_rest_api/api.rb +106 -0
- data/lib/bitbucket_rest_api/api/actions.rb +35 -0
- data/lib/bitbucket_rest_api/api_factory.rb +30 -0
- data/lib/bitbucket_rest_api/authorization.rb +34 -0
- data/lib/bitbucket_rest_api/client.rb +56 -0
- data/lib/bitbucket_rest_api/configuration.rb +106 -0
- data/lib/bitbucket_rest_api/connection.rb +98 -0
- data/lib/bitbucket_rest_api/constants.rb +58 -0
- data/lib/bitbucket_rest_api/core_ext/array.rb +7 -0
- data/lib/bitbucket_rest_api/core_ext/hash.rb +46 -0
- data/lib/bitbucket_rest_api/deprecation.rb +39 -0
- data/lib/bitbucket_rest_api/error.rb +38 -0
- data/lib/bitbucket_rest_api/error/bad_events.rb +9 -0
- data/lib/bitbucket_rest_api/error/bad_request.rb +12 -0
- data/lib/bitbucket_rest_api/error/blank_value.rb +9 -0
- data/lib/bitbucket_rest_api/error/client_error.rb +20 -0
- data/lib/bitbucket_rest_api/error/forbidden.rb +12 -0
- data/lib/bitbucket_rest_api/error/internal_server_error.rb +12 -0
- data/lib/bitbucket_rest_api/error/invalid_options.rb +18 -0
- data/lib/bitbucket_rest_api/error/no_events.rb +9 -0
- data/lib/bitbucket_rest_api/error/not_found.rb +12 -0
- data/lib/bitbucket_rest_api/error/required_params.rb +18 -0
- data/lib/bitbucket_rest_api/error/service_error.rb +19 -0
- data/lib/bitbucket_rest_api/error/service_unavailable.rb +12 -0
- data/lib/bitbucket_rest_api/error/unauthorized.rb +12 -0
- data/lib/bitbucket_rest_api/error/unknown_value.rb +18 -0
- data/lib/bitbucket_rest_api/error/unprocessable_entity.rb +12 -0
- data/lib/bitbucket_rest_api/error/validations.rb +18 -0
- data/lib/bitbucket_rest_api/invitations.rb +15 -0
- data/lib/bitbucket_rest_api/issues.rb +230 -0
- data/lib/bitbucket_rest_api/issues/comments.rb +118 -0
- data/lib/bitbucket_rest_api/issues/components.rb +106 -0
- data/lib/bitbucket_rest_api/issues/milestones.rb +107 -0
- data/lib/bitbucket_rest_api/normalizer.rb +27 -0
- data/lib/bitbucket_rest_api/parameter_filter.rb +32 -0
- data/lib/bitbucket_rest_api/repos.rb +264 -0
- data/lib/bitbucket_rest_api/repos/changesets.rb +54 -0
- data/lib/bitbucket_rest_api/repos/commits.rb +40 -0
- data/lib/bitbucket_rest_api/repos/default_reviewers.rb +59 -0
- data/lib/bitbucket_rest_api/repos/download.rb +21 -0
- data/lib/bitbucket_rest_api/repos/following.rb +39 -0
- data/lib/bitbucket_rest_api/repos/forks.rb +69 -0
- data/lib/bitbucket_rest_api/repos/keys.rb +87 -0
- data/lib/bitbucket_rest_api/repos/pull_request.rb +160 -0
- data/lib/bitbucket_rest_api/repos/services.rb +103 -0
- data/lib/bitbucket_rest_api/repos/sources.rb +39 -0
- data/lib/bitbucket_rest_api/repos/webhooks.rb +96 -0
- data/lib/bitbucket_rest_api/request.rb +76 -0
- data/lib/bitbucket_rest_api/request/basic_auth.rb +31 -0
- data/lib/bitbucket_rest_api/request/jsonize.rb +46 -0
- data/lib/bitbucket_rest_api/request/oauth.rb +53 -0
- data/lib/bitbucket_rest_api/response.rb +28 -0
- data/lib/bitbucket_rest_api/response/helpers.rb +21 -0
- data/lib/bitbucket_rest_api/response/jsonize.rb +30 -0
- data/lib/bitbucket_rest_api/response/mashify.rb +24 -0
- data/lib/bitbucket_rest_api/response/raise_error.rb +31 -0
- data/lib/bitbucket_rest_api/response/xmlize.rb +26 -0
- data/lib/bitbucket_rest_api/result.rb +140 -0
- data/lib/bitbucket_rest_api/user.rb +101 -0
- data/lib/bitbucket_rest_api/users.rb +24 -0
- data/lib/bitbucket_rest_api/users/account.rb +53 -0
- data/lib/bitbucket_rest_api/utils/url.rb +56 -0
- data/lib/bitbucket_rest_api/validations.rb +25 -0
- data/lib/bitbucket_rest_api/validations/format.rb +24 -0
- data/lib/bitbucket_rest_api/validations/presence.rb +25 -0
- data/lib/bitbucket_rest_api/validations/required.rb +44 -0
- data/lib/bitbucket_rest_api/validations/token.rb +43 -0
- data/lib/bitbucket_rest_api/version.rb +11 -0
- data/spec/bitbucket_rest_api/api/actions_spec.rb +17 -0
- data/spec/bitbucket_rest_api/api_factory_spec.rb +30 -0
- data/spec/bitbucket_rest_api/api_spec.rb +86 -0
- data/spec/bitbucket_rest_api/authorization_spec.rb +72 -0
- data/spec/bitbucket_rest_api/client_spec.rb +15 -0
- data/spec/bitbucket_rest_api/core_ext/array_spec.rb +12 -0
- data/spec/bitbucket_rest_api/core_ext/hash_spec.rb +49 -0
- data/spec/bitbucket_rest_api/deprecation_spec.rb +30 -0
- data/spec/bitbucket_rest_api/error/bad_events_spec.rb +10 -0
- data/spec/bitbucket_rest_api/error/blank_value_spec.rb +13 -0
- data/spec/bitbucket_rest_api/error/no_events_spec.rb +10 -0
- data/spec/bitbucket_rest_api/invitations_spec.rb +21 -0
- data/spec/bitbucket_rest_api/issues/comments_spec.rb +89 -0
- data/spec/bitbucket_rest_api/issues/components_spec.rb +88 -0
- data/spec/bitbucket_rest_api/issues/milestones_spec.rb +88 -0
- data/spec/bitbucket_rest_api/issues_spec.rb +90 -0
- data/spec/bitbucket_rest_api/normalizer_spec.rb +30 -0
- data/spec/bitbucket_rest_api/parameter_filter_spec.rb +41 -0
- data/spec/bitbucket_rest_api/repos/changesets_spec.rb +43 -0
- data/spec/bitbucket_rest_api/repos/commits_spec.rb +20 -0
- data/spec/bitbucket_rest_api/repos/default_reviewers_spec.rb +64 -0
- data/spec/bitbucket_rest_api/repos/download_spec.rb +9 -0
- data/spec/bitbucket_rest_api/repos/following_spec.rb +52 -0
- data/spec/bitbucket_rest_api/repos/forks_spec.rb +45 -0
- data/spec/bitbucket_rest_api/repos/keys_spec.rb +72 -0
- data/spec/bitbucket_rest_api/repos/pull_request_spec.rb +288 -0
- data/spec/bitbucket_rest_api/repos/sources_spec.rb +77 -0
- data/spec/bitbucket_rest_api/repos/webhooks_spec.rb +245 -0
- data/spec/bitbucket_rest_api/repos_spec.rb +157 -0
- data/spec/bitbucket_rest_api/request/jsonize_spec.rb +18 -0
- data/spec/bitbucket_rest_api/request/oauth_spec.rb +27 -0
- data/spec/bitbucket_rest_api/request_spec.rb +81 -0
- data/spec/bitbucket_rest_api/response/jsonize_spec.rb +12 -0
- data/spec/bitbucket_rest_api/response/mashify_spec.rb +32 -0
- data/spec/bitbucket_rest_api/response/raise_error_spec.rb +41 -0
- data/spec/bitbucket_rest_api/user_spec.rb +77 -0
- data/spec/bitbucket_rest_api/utils/url_spec.rb +33 -0
- data/spec/bitbucket_rest_api/validations/format_spec.rb +29 -0
- data/spec/bitbucket_rest_api/validations/presence_spec.rb +12 -0
- data/spec/bitbucket_rest_api/validations/required_spec.rb +43 -0
- data/spec/bitbucket_rest_api/validations/token_spec.rb +16 -0
- data/spec/bitbucket_rest_api_spec.rb +17 -0
- data/spec/spec_helper.rb +24 -0
- metadata +373 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'bitbucket_rest_api/core_ext/hash'
|
5
|
+
|
6
|
+
describe BitBucket::Normalizer, '#normalize!' do
|
7
|
+
let(:hash) { { 'a' => { :b => { 'c' => 1 }, 'd' => ['a', { :e => 2 }] } } }
|
8
|
+
|
9
|
+
let(:klass) do
|
10
|
+
Class.new do
|
11
|
+
include BitBucket::Normalizer
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
subject(:instance) { klass.new }
|
16
|
+
|
17
|
+
context '#normalize!' do
|
18
|
+
it 'converts hash keys to string' do
|
19
|
+
['a', 'b', 'c'].each do |key|
|
20
|
+
expect(subject.normalize!(hash).has_deep_key?(key)).to eq(true)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should stringify all the keys inside nested hash' do
|
25
|
+
actual = subject.normalize! hash
|
26
|
+
expected = { 'a' => { 'b'=> { 'c' => 1 }, 'd' => ['a', { 'e'=> 2 }] } }
|
27
|
+
expect(actual).to eq expected
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end # BitBucket::Normalizer
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'bitbucket_rest_api/core_ext/hash'
|
3
|
+
|
4
|
+
describe BitBucket::ParameterFilter, '#filter!' do
|
5
|
+
let(:hash) { { :a => { :b => { :c => 1 } } } }
|
6
|
+
let(:array) { [{ :a => { :b => { :c => 1 } } }, {d: {e: 2}}] }
|
7
|
+
|
8
|
+
let(:klass) {
|
9
|
+
Class.new do
|
10
|
+
include BitBucket::ParameterFilter
|
11
|
+
end
|
12
|
+
}
|
13
|
+
|
14
|
+
subject(:instance) { klass.new }
|
15
|
+
|
16
|
+
it 'removes unwanted keys from hash' do
|
17
|
+
instance.filter!([:a], hash)
|
18
|
+
expect(hash.has_deep_key?(:a)).to eq(true)
|
19
|
+
expect(hash.has_deep_key?(:b)).to eq(false)
|
20
|
+
expect(hash.has_deep_key?(:c)).to eq(false)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'removes unwanted keys from array of hashes' do
|
24
|
+
instance.filter!([:a, :d], array)
|
25
|
+
expect(array[0].has_deep_key?(:a)).to eq(true)
|
26
|
+
expect(array[0].has_deep_key?(:b)).to eq(false)
|
27
|
+
expect(array[0].has_deep_key?(:c)).to eq(false)
|
28
|
+
expect(array[1].has_deep_key?(:d)).to eq(true)
|
29
|
+
expect(array[1].has_deep_key?(:e)).to eq(false)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'recursively filters inputs tree' do
|
33
|
+
instance.filter!([:a, :b], hash)
|
34
|
+
expect(hash.has_deep_key?(:c)).to eq(false)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'filters inputs tree only on top level' do
|
38
|
+
instance.filter!([:a, :b], hash, :recursive => false)
|
39
|
+
expect(hash.has_deep_key?(:c)).to eq(true)
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::Repos::Changesets do
|
4
|
+
let(:changesets) { BitBucket::Repos::Changesets.new }
|
5
|
+
|
6
|
+
describe '.list' do
|
7
|
+
before do
|
8
|
+
expect(changesets).to receive(:request).with(
|
9
|
+
:get,
|
10
|
+
'/2.0/repositories/mock_username/mock_repo/changesets',
|
11
|
+
{},
|
12
|
+
{}
|
13
|
+
).and_return(['changset1', 'changeset2', 'changeset3'])
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'without a block' do
|
17
|
+
it 'should send a GET request for the changesets belonging to the given repo' do
|
18
|
+
changesets.list('mock_username', 'mock_repo')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with a block' do
|
23
|
+
it 'should send a GET request for the changesets belonging to the given repo' do
|
24
|
+
changesets.list('mock_username', 'mock_repo') { |changeset| changeset }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '.get' do
|
30
|
+
before do
|
31
|
+
expect(changesets).to receive(:request).with(
|
32
|
+
:get,
|
33
|
+
'/2.0/repositories/mock_username/mock_repo/changesets/test_sha',
|
34
|
+
{},
|
35
|
+
{}
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should send a GET request for a particular changeset belonging to the given repo' do
|
40
|
+
changesets.get('mock_username', 'mock_repo', 'test_sha')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::Repos::Commits do
|
4
|
+
let(:commits) { BitBucket::Repos::Commits.new }
|
5
|
+
|
6
|
+
describe '.list' do
|
7
|
+
before do
|
8
|
+
expect(commits).to receive(:request).with(
|
9
|
+
:get,
|
10
|
+
'/2.0/repositories/mock_username/mock_repo/commits',
|
11
|
+
{},
|
12
|
+
{}
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should send a GET request for the commits belonging to the given repo' do
|
17
|
+
commits.list('mock_username', 'mock_repo')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::Repos::DefaultReviewers do
|
4
|
+
subject { described_class.new }
|
5
|
+
describe '#list' do
|
6
|
+
before do
|
7
|
+
expect(subject).to receive(:request).with(
|
8
|
+
:get,
|
9
|
+
'/2.0/repositories/mock_user/mock_repo/default-reviewers',
|
10
|
+
{},
|
11
|
+
{}
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'makes a GET request for all default reviewers belonging to the repo' do
|
16
|
+
subject.list('mock_user', 'mock_repo')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#get' do
|
21
|
+
before do
|
22
|
+
expect(subject).to receive(:request).with(
|
23
|
+
:get,
|
24
|
+
'/2.0/repositories/mock_user/mock_repo/default-reviewers/mock_reviewer',
|
25
|
+
{},
|
26
|
+
{}
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'makes a GET request for a default reviewer by username' do
|
31
|
+
subject.get('mock_user', 'mock_repo', 'mock_reviewer')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#add' do
|
36
|
+
before do
|
37
|
+
expect(subject).to receive(:request).with(
|
38
|
+
:put,
|
39
|
+
'/2.0/repositories/mock_user/mock_repo/default-reviewers/mock_reviewer',
|
40
|
+
{},
|
41
|
+
{}
|
42
|
+
)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'makes a PUT request to add the new reviewer to the default reviewers list' do
|
46
|
+
subject.add('mock_user', 'mock_repo', 'mock_reviewer')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#remove' do
|
51
|
+
before do
|
52
|
+
expect(subject).to receive(:request).with(
|
53
|
+
:delete,
|
54
|
+
'/2.0/repositories/mock_user/mock_repo/default-reviewers/mock_reviewer',
|
55
|
+
{},
|
56
|
+
{}
|
57
|
+
)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'makes a DELETE request to remove a reviewer from the list' do
|
61
|
+
subject.remove('mock_user', 'mock_repo', 'mock_reviewer')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::Repos::Following do
|
4
|
+
let(:following) { BitBucket::Repos::Following.new }
|
5
|
+
|
6
|
+
describe '.followers' do
|
7
|
+
before do
|
8
|
+
expect(following).to receive(:request).with(
|
9
|
+
:get,
|
10
|
+
'/2.0/repositories/mock_username/mock_repo/followers/',
|
11
|
+
{},
|
12
|
+
{}
|
13
|
+
).and_return(['follower1', 'follower2', 'follower3'])
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'without a block' do
|
17
|
+
it 'should send a GET request for the followers belonging to the given repo' do
|
18
|
+
following.followers('mock_username', 'mock_repo')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with a block' do
|
23
|
+
it 'should send a GET request for the followers belonging to the given repo' do
|
24
|
+
following.followers('mock_username', 'mock_repo') { |follower| follower }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# TODO: implement this method in the User class where it belongs
|
30
|
+
describe '.followed' do
|
31
|
+
before do
|
32
|
+
expect(following).to receive(:request).with(
|
33
|
+
:get,
|
34
|
+
'/2.0/user/follows',
|
35
|
+
{},
|
36
|
+
{}
|
37
|
+
).and_return(['followed1', 'followed2', 'followed3'])
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'without a block' do
|
41
|
+
it 'should send a GET request for the followers belonging to a particular user' do
|
42
|
+
following.followed
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'with a block' do
|
47
|
+
it 'should send a GET request for the followers belonging to a particular user' do
|
48
|
+
following.followed { |followed| followed }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::Repos::Forks do
|
4
|
+
let(:forks) { BitBucket::Repos::Forks.new }
|
5
|
+
|
6
|
+
describe '.list' do
|
7
|
+
before do
|
8
|
+
expect(forks).to receive(:request).with(
|
9
|
+
:get,
|
10
|
+
'/2.0/repositories/mock_username/mock_repo/forks/',
|
11
|
+
{},
|
12
|
+
{}
|
13
|
+
).and_return(['fork1', 'fork2', 'fork3'])
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'without a block' do
|
17
|
+
it 'sends a GET request for the forks of the given repo' do
|
18
|
+
forks.list('mock_username', 'mock_repo')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with a block' do
|
23
|
+
it 'sends a GET request for the forks of the given repo' do
|
24
|
+
forks.list('mock_username', 'mock_repo') { |fork| fork }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# TODO: make sure this is documented in the README since it is not so
|
30
|
+
# in the official API docs
|
31
|
+
describe '.create' do
|
32
|
+
before do
|
33
|
+
expect(forks).to receive(:request).with(
|
34
|
+
:post,
|
35
|
+
'/2.0/repositories/mock_username/mock_repo/fork',
|
36
|
+
{ 'name' => 'mock_fork_name'},
|
37
|
+
{}
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should send a POST request to create a fork of the given repo' do
|
42
|
+
forks.create('mock_username', 'mock_repo', { 'name' => 'mock_fork_name' })
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::Repos::Keys do
|
4
|
+
let(:deploy_keys) { described_class.new }
|
5
|
+
describe '.list' do
|
6
|
+
before do
|
7
|
+
expect(deploy_keys).to receive(:request).with(
|
8
|
+
:get,
|
9
|
+
'/2.0/repositories/mock_username/mock_repo/deploy-keys/',
|
10
|
+
{},
|
11
|
+
{}
|
12
|
+
).and_return(['key1', 'key2', 'key3'])
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'without a block' do
|
16
|
+
it 'should make a GET request for the deploy keys belonging to the given repo' do
|
17
|
+
deploy_keys.list('mock_username', 'mock_repo')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'with a block' do
|
22
|
+
it 'should make a GET request for the deploy keys belonging to the given repo' do
|
23
|
+
deploy_keys.list('mock_username', 'mock_repo') { |key| key }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.create' do
|
29
|
+
before do
|
30
|
+
expect(deploy_keys).to receive(:request).with(
|
31
|
+
:post,
|
32
|
+
'/2.0/repositories/mock_username/mock_repo/deploy-keys/',
|
33
|
+
{ 'key' => 'mock_ssh_key', 'label' => 'mock_label' },
|
34
|
+
{}
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should make a POST request for the deploy keys belonging to the given repo' do
|
39
|
+
deploy_keys.create('mock_username', 'mock_repo', { key: 'mock_ssh_key', label: 'mock_label' })
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '.edit' do
|
44
|
+
before do
|
45
|
+
expect(deploy_keys).to receive(:request).with(
|
46
|
+
:put,
|
47
|
+
'/2.0/repositories/mock_username/mock_repo/deploy-keys/1',
|
48
|
+
{ 'key' => 'mock_ssh_key', 'label' => 'mock_label' },
|
49
|
+
{}
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should make a PUT request for the deploy keys belonging to the given repo' do
|
54
|
+
deploy_keys.edit('mock_username', 'mock_repo', 1, { key: 'mock_ssh_key', label: 'mock_label' })
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '.delete' do
|
59
|
+
before do
|
60
|
+
expect(deploy_keys).to receive(:request).with(
|
61
|
+
:delete,
|
62
|
+
'/2.0/repositories/mock_username/mock_repo/deploy-keys/mock_id',
|
63
|
+
{ 'key' => 'mock_ssh_key', 'label' => 'mock_label' },
|
64
|
+
{}
|
65
|
+
)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should make a DELETE request for the deploy keys belonging to the given repo' do
|
69
|
+
deploy_keys.delete('mock_username', 'mock_repo', 'mock_id', { key: 'mock_ssh_key', label: 'mock_label' })
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,288 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::Repos::PullRequest do
|
4
|
+
subject { described_class.new }
|
5
|
+
describe '#list' do
|
6
|
+
before do
|
7
|
+
expect(subject).to receive(:request).with(
|
8
|
+
:get,
|
9
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests',
|
10
|
+
{},
|
11
|
+
{}
|
12
|
+
).and_return(['pr1', 'pr2', 'pr3'])
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'without a block' do
|
16
|
+
it 'makes a GET request for all pull requests belonging to the repo' do
|
17
|
+
subject.list('mock_user', 'mock_repo')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'with a block' do
|
22
|
+
it 'makes a GET request for all pull requests belonging to the repo' do
|
23
|
+
subject.list('mock_user', 'mock_repo') { |pr| pr }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#participants' do
|
29
|
+
before do
|
30
|
+
expect(subject).to receive(:request).with(
|
31
|
+
:get,
|
32
|
+
"/2.0/repositories/mock_user/mock_repo/pullrequests/mock_pull_request_id/participants",
|
33
|
+
{},
|
34
|
+
{}
|
35
|
+
).and_return(['participant1', 'participant2', 'participant3'])
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'without a block' do
|
39
|
+
it 'makes a GET request for all participants belonging to the repo' do
|
40
|
+
subject.participants('mock_user', 'mock_repo', 'mock_pull_request_id')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'with a block' do
|
45
|
+
it 'makes a GET request for all participants belonging to the repo' do
|
46
|
+
subject.participants('mock_user', 'mock_repo', 'mock_pull_request_id') { |p| p }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#get' do
|
52
|
+
before do
|
53
|
+
expect(subject).to receive(:request).with(
|
54
|
+
:get,
|
55
|
+
"/2.0/repositories/mock_user/mock_repo/pullrequests/mock_pull_request_id",
|
56
|
+
{}
|
57
|
+
)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'makes a GET request for the pull request belonging to the repo' do
|
61
|
+
subject.get('mock_user', 'mock_repo', 'mock_pull_request_id')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#create' do
|
66
|
+
before do
|
67
|
+
@params = {
|
68
|
+
title: "mock_pr_title",
|
69
|
+
description: "mock_pull_request_description",
|
70
|
+
source: {
|
71
|
+
branch: {
|
72
|
+
name: "mock_source_branch_name"
|
73
|
+
},
|
74
|
+
repository: {
|
75
|
+
full_name: "mock_owner/mock_repo"
|
76
|
+
}
|
77
|
+
},
|
78
|
+
destination: {
|
79
|
+
branch: {
|
80
|
+
name: "mock_destination_branch_name"
|
81
|
+
},
|
82
|
+
commit: {
|
83
|
+
hash: "mock_uuid"
|
84
|
+
}
|
85
|
+
},
|
86
|
+
close_source_branch: true
|
87
|
+
}
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'makes a POST request to create a new pull request' do
|
91
|
+
expect(subject).to receive(:request).with(
|
92
|
+
:post,
|
93
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests',
|
94
|
+
@params
|
95
|
+
)
|
96
|
+
|
97
|
+
subject.create('mock_user', 'mock_repo', @params)
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'validates presence of required params' do
|
101
|
+
expect do
|
102
|
+
subject.create(
|
103
|
+
'mock_user',
|
104
|
+
'mock_repo',
|
105
|
+
{
|
106
|
+
title: "",
|
107
|
+
description: "mock_pull_request_description",
|
108
|
+
source: {
|
109
|
+
branch: {
|
110
|
+
name: "mock_source_branch_name"
|
111
|
+
},
|
112
|
+
repository: {
|
113
|
+
full_name: "mock_owner/mock_repo"
|
114
|
+
}
|
115
|
+
},
|
116
|
+
destination: {
|
117
|
+
branch: {
|
118
|
+
name: "mock_destination_branch_name"
|
119
|
+
},
|
120
|
+
commit: {
|
121
|
+
hash: "mock_uuid"
|
122
|
+
}
|
123
|
+
},
|
124
|
+
close_source_branch: true
|
125
|
+
}
|
126
|
+
)
|
127
|
+
end.to raise_error
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe '.put' do
|
132
|
+
before do
|
133
|
+
expect(subject).to receive(:request).with(
|
134
|
+
:put,
|
135
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id',
|
136
|
+
{}
|
137
|
+
)
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'makes a PUT request for the given pull request' do
|
141
|
+
subject.update('mock_user', 'mock_repo', 'mock_id')
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe '.commits' do
|
146
|
+
before do
|
147
|
+
expect(subject).to receive(:request).with(
|
148
|
+
:get,
|
149
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/commits',
|
150
|
+
{}
|
151
|
+
)
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'makes a GET request for the commits' do
|
155
|
+
subject.commits('mock_user', 'mock_repo', 'mock_id')
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe '.commits' do
|
160
|
+
before do
|
161
|
+
expect(subject).to receive(:request).with(
|
162
|
+
:post,
|
163
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/approve',
|
164
|
+
{}
|
165
|
+
)
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'makes a POST request' do
|
169
|
+
subject.approve('mock_user', 'mock_repo', 'mock_id')
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe '.delete_approval' do
|
174
|
+
before do
|
175
|
+
expect(subject).to receive(:request).with(
|
176
|
+
:delete,
|
177
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/approve',
|
178
|
+
{}
|
179
|
+
)
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'makes a DELTE request' do
|
183
|
+
subject.delete_approval('mock_user', 'mock_repo', 'mock_id')
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
|
188
|
+
describe '.diff' do
|
189
|
+
before do
|
190
|
+
expect(subject).to receive(:request).with(
|
191
|
+
:get,
|
192
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/diff',
|
193
|
+
{}
|
194
|
+
)
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'makes a GET request for the diff of the pull request' do
|
198
|
+
subject.diff('mock_user', 'mock_repo', 'mock_id')
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
describe '.all_activity' do
|
203
|
+
before do
|
204
|
+
expect(subject).to receive(:request).with(
|
205
|
+
:get,
|
206
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/activity',
|
207
|
+
{}
|
208
|
+
)
|
209
|
+
end
|
210
|
+
|
211
|
+
it 'makes a GET request' do
|
212
|
+
subject.all_activity('mock_user', 'mock_repo')
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
|
217
|
+
describe '.activity' do
|
218
|
+
before do
|
219
|
+
expect(subject).to receive(:request).with(
|
220
|
+
:get,
|
221
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/activity',
|
222
|
+
{}
|
223
|
+
)
|
224
|
+
end
|
225
|
+
|
226
|
+
it 'makes a GET request' do
|
227
|
+
subject.activity('mock_user', 'mock_repo', 'mock_id')
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
|
232
|
+
describe '.accept_and_merge' do
|
233
|
+
before do
|
234
|
+
expect(subject).to receive(:request).with(
|
235
|
+
:post,
|
236
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/merge',
|
237
|
+
{}
|
238
|
+
)
|
239
|
+
end
|
240
|
+
|
241
|
+
it 'makes a POST request' do
|
242
|
+
subject.merge('mock_user', 'mock_repo', 'mock_id')
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
describe '.decline' do
|
247
|
+
before do
|
248
|
+
expect(subject).to receive(:request).with(
|
249
|
+
:post,
|
250
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/decline',
|
251
|
+
{}
|
252
|
+
)
|
253
|
+
end
|
254
|
+
|
255
|
+
it 'makes a POST request' do
|
256
|
+
subject.decline('mock_user', 'mock_repo', 'mock_id')
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
|
261
|
+
describe '.comments' do
|
262
|
+
before do
|
263
|
+
expect(subject).to receive(:request).with(
|
264
|
+
:get,
|
265
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/comments',
|
266
|
+
{}
|
267
|
+
)
|
268
|
+
end
|
269
|
+
|
270
|
+
it 'makes a GET request' do
|
271
|
+
subject.comments('mock_user', 'mock_repo', 'mock_id')
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
describe '.comment' do
|
276
|
+
before do
|
277
|
+
expect(subject).to receive(:request).with(
|
278
|
+
:get,
|
279
|
+
'/2.0/repositories/mock_user/mock_repo/pullrequests/mock_id/comments/comment_id',
|
280
|
+
{}
|
281
|
+
)
|
282
|
+
end
|
283
|
+
|
284
|
+
it 'makes a GET request' do
|
285
|
+
subject.comment('mock_user', 'mock_repo', 'mock_id', 'comment_id')
|
286
|
+
end
|
287
|
+
end
|
288
|
+
end
|