vx-service_connector 0.2.12 → 0.2.13

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/lib/vx/service_connector.rb +3 -0
  4. data/lib/vx/service_connector/bitbucket.rb +51 -0
  5. data/lib/vx/service_connector/bitbucket/commits.rb +30 -0
  6. data/lib/vx/service_connector/bitbucket/deploy_keys.rb +29 -0
  7. data/lib/vx/service_connector/bitbucket/files.rb +21 -0
  8. data/lib/vx/service_connector/bitbucket/hooks.rb +58 -0
  9. data/lib/vx/service_connector/bitbucket/notices.rb +11 -0
  10. data/lib/vx/service_connector/bitbucket/payload.rb +136 -0
  11. data/lib/vx/service_connector/bitbucket/repos.rb +56 -0
  12. data/lib/vx/service_connector/bitbucket/session.rb +113 -0
  13. data/lib/vx/service_connector/error.rb +1 -0
  14. data/lib/vx/service_connector/version.rb +1 -1
  15. data/spec/fixtures/bitbucket/add_deploy_key.json +7 -0
  16. data/spec/fixtures/bitbucket/commit.json +72 -0
  17. data/spec/fixtures/bitbucket/create_hook.json +12 -0
  18. data/spec/fixtures/bitbucket/deploy_keys.json +1 -0
  19. data/spec/fixtures/bitbucket/hooks.json +38 -0
  20. data/spec/fixtures/bitbucket/payload/created_pull_request.json +120 -0
  21. data/spec/fixtures/bitbucket/payload/declined_pull_request.json +80 -0
  22. data/spec/fixtures/bitbucket/payload/foreign_pull_request.json +120 -0
  23. data/spec/fixtures/bitbucket/payload/push.json +38 -0
  24. data/spec/fixtures/bitbucket/payload/updated_pull_request.json +80 -0
  25. data/spec/fixtures/bitbucket/repos.json +206 -0
  26. data/spec/fixtures/bitbucket/user_privileges.json +6 -0
  27. data/spec/fixtures/bitbucket/user_repo.json +63 -0
  28. data/spec/fixtures/bitbucket/user_repos.json +197 -0
  29. data/spec/lib/bitbucket_payload_spec.rb +82 -0
  30. data/spec/lib/bitbucket_spec.rb +144 -0
  31. data/spec/support/bitbucket_web_mocks.rb +87 -0
  32. data/vx-service_connector.gemspec +4 -3
  33. metadata +59 -2
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe Vx::ServiceConnector::Bitbucket::Payload do
4
+
5
+ include BitbucketWebMocks
6
+
7
+ let(:content) { read_json_fixture 'bitbucket/payload/push' }
8
+ let(:bitbucket) {
9
+ Vx::ServiceConnector::Bitbucket.new 'login', Vx::ServiceConnector::Bitbucket::Session.test
10
+ }
11
+ let(:repo) { create :repo }
12
+ let(:payload) { bitbucket.payload repo, content }
13
+ subject { payload }
14
+
15
+ context 'push' do
16
+ let(:url) { "https://bitbucket.org/121111foobar/vx-promo/commits/e4958d88c9055ca471618f004c6f6b2d79965267"}
17
+
18
+ its(:ignore?) { should be_false }
19
+ its(:pull_request?) { should be_false }
20
+ its(:pull_request_number) { should be_nil }
21
+ its(:branch) { should eq 'master' }
22
+ its(:branch_label) { should eq 'master' }
23
+ its(:sha) { should eq 'e4958d88c9055ca471618f004c6f6b2d79965267' }
24
+ its(:message) { should eq "test\n" }
25
+ its(:author) { should eq 'dmexe' }
26
+ its(:author_email) { should eq 'dima.exe@gmail.com' }
27
+ its(:web_url) { should eq url }
28
+ end
29
+
30
+ context 'create pull_request' do
31
+ let(:content) { read_json_fixture 'bitbucket/payload/created_pull_request' }
32
+ let(:url) { 'https://bitbucket.org/121111foobar/vx-promo/pull-request/1' }
33
+ let(:sha) { 'b14806535f5e' }
34
+
35
+ before do
36
+ mock_get_commit '121111foobar/vx-promo', sha
37
+ end
38
+
39
+ its(:ignore?) { should be_true }
40
+ its(:pull_request?) { should be_true }
41
+ its(:pull_request_number) { should eq 1 }
42
+ its(:branch) { should eq 'test' }
43
+ its(:branch_label) { should eq 'test' }
44
+ its(:sha) { should eq sha }
45
+ its(:message) { should eq 'Fix all the bugs' }
46
+ its(:author) { should eq 'login' }
47
+ its(:author_email) { should eq 'example@gmail.com' }
48
+ its(:web_url) { should eq url }
49
+ end
50
+
51
+ context 'declined pull request' do
52
+ let(:content) { read_json_fixture('bitbucket/payload/declined_pull_request') }
53
+
54
+ before do
55
+ mock_get_commit 'login/api-test', 'b8aed32b8a30'
56
+ end
57
+
58
+ its(:ignore?) { should be_true }
59
+ end
60
+
61
+ context 'foreign pull request' do
62
+ let(:content) { read_json_fixture 'bitbucket/payload/foreign_pull_request' }
63
+
64
+ before do
65
+ mock_get_commit 'other_login/api-test', 'b8aed32b8a30'
66
+ end
67
+
68
+ its(:ignore?) { should be_false }
69
+ end
70
+
71
+ context 'pull request with same repo' do
72
+
73
+ let(:content) { read_json_fixture 'bitbucket/payload/created_pull_request' }
74
+
75
+ before do
76
+ mock_get_commit '121111foobar/vx-promo', 'b14806535f5e'
77
+ end
78
+
79
+ its(:ignore?) { should be_true }
80
+ end
81
+
82
+ end
@@ -0,0 +1,144 @@
1
+ require 'spec_helper'
2
+
3
+ describe Vx::ServiceConnector::Bitbucket do
4
+
5
+ include BitbucketWebMocks
6
+
7
+ let(:login) { 'login' }
8
+ let(:token) { 'token' }
9
+ let(:repo) { create :repo }
10
+ let(:bitbucket) {
11
+ Vx::ServiceConnector::Bitbucket.new login, Vx::ServiceConnector::Bitbucket::Session.test
12
+ }
13
+
14
+ subject { bitbucket }
15
+
16
+ it { should be }
17
+
18
+ context "(commits)" do
19
+ let(:commits) { bitbucket.commits(repo) }
20
+
21
+ it "should return payload for last commit" do
22
+ mock_get_last_commit repo.full_name
23
+ c = commits.last
24
+ expect(c).to be
25
+ expect(c.message).to eq "Fix all the bugs"
26
+ expect(c.skip).to be_false
27
+ expect(c.pull_request?).to be_false
28
+ expect(c.branch).to eq 'master'
29
+ expect(c.branch_label).to eq 'master'
30
+ expect(c.sha).to eq '0a1fb3a24b8ceb48a16fb09a5759cd6f8a930463'
31
+ expect(c.author).to eq 'login'
32
+ expect(c.author_email).to eq 'example@gmail.com'
33
+ expect(c.web_url).to eq 'https://bitbucket.org/login/api-test/commits/0a1fb3a24b8ceb48a16fb09a5759cd6f8a930463'
34
+ end
35
+ end
36
+
37
+ # context "(notices)" do
38
+ # end
39
+
40
+ context "(repos)" do
41
+ subject { bitbucket.repos }
42
+
43
+ before do
44
+ mock_user_repos
45
+ mock_user_privileges
46
+ end
47
+
48
+ it { should have(2).item }
49
+
50
+ context "values" do
51
+ subject { bitbucket.repos.map(&:values) }
52
+
53
+ it { should eq(
54
+ [["{b890dc44-b05d-4e0b-a0a4-6b5946e31603}",
55
+ "login/res", false,
56
+ "ssh://git@bitbucket.org/login/res.git",
57
+ "https://bitbucket.org/login/res",
58
+ "This your first repo!"],
59
+ ["{7f4500f2-d3a7-4757-9f92-709d5976720c}",
60
+ "login/api-test", false,
61
+ "ssh://git@bitbucket.org/login/api-test.git",
62
+ "https://bitbucket.org/login/api-test",
63
+ "repo for test api"]]
64
+ ) }
65
+
66
+ end
67
+ end
68
+
69
+ context "(deploy_keys)" do
70
+ let(:key_name) { 'octocat@octomac' }
71
+ let(:public_key) { 'public key' }
72
+ let(:deploy_keys) { bitbucket.deploy_keys(repo) }
73
+
74
+ context "all" do
75
+ subject { deploy_keys.all }
76
+ before { mock_deploy_keys }
77
+ it { should have(1).item }
78
+ end
79
+
80
+ context "create" do
81
+ subject { deploy_keys.create key_name, public_key }
82
+ before { mock_add_deploy_key }
83
+ it { should be }
84
+ end
85
+
86
+ context "destroy" do
87
+ subject { deploy_keys.destroy key_name}
88
+ before do
89
+ mock_deploy_keys
90
+ mock_delete_deploy_key
91
+ end
92
+
93
+ it { should have(1).item }
94
+ end
95
+ end
96
+
97
+ context "(hooks)" do
98
+ let(:url) { 'https://example.com' }
99
+ let(:token) { 'token' }
100
+ let(:hooks) { bitbucket.hooks(repo) }
101
+
102
+ context "all" do
103
+ subject { hooks.all }
104
+ before { mock_hooks }
105
+ it { should have(2).item }
106
+ end
107
+
108
+ context "create" do
109
+ subject { hooks.create url, token }
110
+ before { mock_add_hook }
111
+ it { should be }
112
+ end
113
+
114
+ context "destroy" do
115
+ let(:mask) { "http://example.com" }
116
+ subject { hooks.destroy mask }
117
+ before do
118
+ mock_hooks
119
+ mock_remove_hook
120
+ end
121
+ it { should have(1).item }
122
+ end
123
+ end
124
+
125
+ context "(files)" do
126
+ let(:sha) { 'sha' }
127
+ let(:path) { 'path' }
128
+
129
+ context "get" do
130
+ subject { bitbucket.files(repo).get sha, path }
131
+
132
+ context "success" do
133
+ before { mock_get_file }
134
+ it { should eq 'content' }
135
+ end
136
+
137
+ context "not found" do
138
+ before { mock_get_file_not_found }
139
+ it { should be_nil }
140
+ end
141
+ end
142
+ end
143
+
144
+ end
@@ -0,0 +1,87 @@
1
+ module BitbucketWebMocks
2
+
3
+ def mock_get_last_commit(repo_name)
4
+ mock_get "https://bitbucket.org/api/1.0/repositories/#{repo.full_name}/changesets/?limit=1", 'commits'
5
+ end
6
+
7
+ def mock_get_commit(repo_name, sha)
8
+ mock_get "https://bitbucket.org/api/2.0/repositories/#{repo_name}/commit/#{sha}", 'commit'
9
+ end
10
+
11
+ def mock_repo
12
+ mock_get 'https://bitbucket.org/api/2.0/repositories/full/name', 'user_repo'
13
+ end
14
+
15
+ def mock_user_repos
16
+ mock_get "https://bitbucket.org/api/1.0/user/repositories", "user_repos"
17
+ end
18
+
19
+ def mock_user_privileges
20
+ mock_get "https://bitbucket.org/api/1.0/user/privileges", "user_privileges"
21
+ end
22
+
23
+ def mock_deploy_keys
24
+ mock_get "https://bitbucket.org/api/1.0/repositories/full/name/deploy-keys?pagelen=100",
25
+ "deploy_keys"
26
+ end
27
+
28
+ def mock_delete_deploy_key
29
+ mock_delete "https://bitbucket.org/api/1.0/repositories/full/name/deploy-keys/1", ""
30
+ end
31
+
32
+ def mock_add_deploy_key
33
+ mock_post "https://bitbucket.org/api/1.0/repositories/full/name/deploy-keys",
34
+ "{\"label\":\"octocat@octomac\",\"key\":\"public key\"}",
35
+ "add_deploy_key"
36
+ end
37
+
38
+ def mock_add_hook
39
+ mock_post "https://bitbucket.org/api/1.0/repositories/full/name/services",
40
+ "{\"type\":\"POST\",\"URL\":\"https://example.com\"}",
41
+ "create_hook"
42
+ end
43
+
44
+ def mock_hooks
45
+ mock_get 'https://bitbucket.org/api/1.0/repositories/full/name/services',
46
+ 'hooks'
47
+ end
48
+
49
+ def mock_remove_hook
50
+ mock_delete "https://bitbucket.org/api/1.0/repositories/full/name/services/1", ""
51
+ end
52
+
53
+ def mock_get_file
54
+ stub_request(:get, "https://bitbucket.org/api/1.0/repositories/full/name/src/sha/path").
55
+ with(:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'Authorization'=>'token'}).
56
+ to_return(:status => 200, :body => "content")
57
+ end
58
+
59
+ def mock_get_file_not_found
60
+ stub_request(:get, "https://bitbucket.org/api/1.0/repositories/full/name/src/sha/path").
61
+ with(:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'Authorization'=>'token'}).
62
+ to_return(:status => 404, :body => "")
63
+ end
64
+
65
+ private
66
+
67
+ def mock_get(url, fixture)
68
+ stub_request(:get, url).
69
+ to_return(
70
+ :status => 200,
71
+ :body => read_fixture("bitbucket/#{fixture}.json"),
72
+ :headers => {'Content-Type' => 'application/json'})
73
+ end
74
+
75
+ def mock_post(url, body, fixture)
76
+ stub_request(:post, url).
77
+ with(:body => body).
78
+ to_return(:status => 200, :body => read_fixture("github/#{fixture}.json"), :headers => {})
79
+ end
80
+
81
+ def mock_delete(url, body)
82
+ stub_request(:delete, url).
83
+ with(:body => body).
84
+ to_return(:status => 204, :body => '')
85
+ end
86
+
87
+ end
@@ -18,9 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_runtime_dependency 'octokit', '2.2.0'
22
- spec.add_runtime_dependency 'faraday', '~> 0.9.0'
23
- spec.add_runtime_dependency 'activesupport', '~> 4.0'
21
+ spec.add_runtime_dependency 'octokit', '2.2.0'
22
+ spec.add_runtime_dependency 'faraday', '~> 0.9.0'
23
+ spec.add_runtime_dependency 'oauth'
24
+ spec.add_runtime_dependency 'activesupport', '~> 4.0'
24
25
 
25
26
  spec.add_development_dependency "bundler", "~> 1.3"
26
27
  spec.add_development_dependency "rake"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vx-service_connector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.12
4
+ version: 0.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Galinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-11 00:00:00.000000000 Z
11
+ date: 2014-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.9.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: oauth
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: activesupport
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -124,6 +138,15 @@ files:
124
138
  - Rakefile
125
139
  - lib/vx/service_connector.rb
126
140
  - lib/vx/service_connector/base.rb
141
+ - lib/vx/service_connector/bitbucket.rb
142
+ - lib/vx/service_connector/bitbucket/commits.rb
143
+ - lib/vx/service_connector/bitbucket/deploy_keys.rb
144
+ - lib/vx/service_connector/bitbucket/files.rb
145
+ - lib/vx/service_connector/bitbucket/hooks.rb
146
+ - lib/vx/service_connector/bitbucket/notices.rb
147
+ - lib/vx/service_connector/bitbucket/payload.rb
148
+ - lib/vx/service_connector/bitbucket/repos.rb
149
+ - lib/vx/service_connector/bitbucket/session.rb
127
150
  - lib/vx/service_connector/error.rb
128
151
  - lib/vx/service_connector/github.rb
129
152
  - lib/vx/service_connector/github/commits.rb
@@ -145,6 +168,20 @@ files:
145
168
  - lib/vx/service_connector/instrumentation.rb
146
169
  - lib/vx/service_connector/model.rb
147
170
  - lib/vx/service_connector/version.rb
171
+ - spec/fixtures/bitbucket/add_deploy_key.json
172
+ - spec/fixtures/bitbucket/commit.json
173
+ - spec/fixtures/bitbucket/create_hook.json
174
+ - spec/fixtures/bitbucket/deploy_keys.json
175
+ - spec/fixtures/bitbucket/hooks.json
176
+ - spec/fixtures/bitbucket/payload/created_pull_request.json
177
+ - spec/fixtures/bitbucket/payload/declined_pull_request.json
178
+ - spec/fixtures/bitbucket/payload/foreign_pull_request.json
179
+ - spec/fixtures/bitbucket/payload/push.json
180
+ - spec/fixtures/bitbucket/payload/updated_pull_request.json
181
+ - spec/fixtures/bitbucket/repos.json
182
+ - spec/fixtures/bitbucket/user_privileges.json
183
+ - spec/fixtures/bitbucket/user_repo.json
184
+ - spec/fixtures/bitbucket/user_repos.json
148
185
  - spec/fixtures/github/add_deploy_key.json
149
186
  - spec/fixtures/github/commit.json
150
187
  - spec/fixtures/github/create_hook.json
@@ -173,6 +210,8 @@ files:
173
210
  - spec/fixtures/gitlab_v6/payload/push_tag.json
174
211
  - spec/fixtures/gitlab_v6/project.json
175
212
  - spec/fixtures/gitlab_v6/projects.json
213
+ - spec/lib/bitbucket_payload_spec.rb
214
+ - spec/lib/bitbucket_spec.rb
176
215
  - spec/lib/github_payload_spec.rb
177
216
  - spec/lib/github_spec.rb
178
217
  - spec/lib/gitlab_payload_spec.rb
@@ -181,6 +220,7 @@ files:
181
220
  - spec/lib/model_spec.rb
182
221
  - spec/lib/service_connector_spec.rb
183
222
  - spec/spec_helper.rb
223
+ - spec/support/bitbucket_web_mocks.rb
184
224
  - spec/support/create.rb
185
225
  - spec/support/github_web_mocks.rb
186
226
  - spec/support/gitlab_v5_spec_helpers.rb
@@ -215,6 +255,20 @@ signing_key:
215
255
  specification_version: 4
216
256
  summary: vx-service_connector
217
257
  test_files:
258
+ - spec/fixtures/bitbucket/add_deploy_key.json
259
+ - spec/fixtures/bitbucket/commit.json
260
+ - spec/fixtures/bitbucket/create_hook.json
261
+ - spec/fixtures/bitbucket/deploy_keys.json
262
+ - spec/fixtures/bitbucket/hooks.json
263
+ - spec/fixtures/bitbucket/payload/created_pull_request.json
264
+ - spec/fixtures/bitbucket/payload/declined_pull_request.json
265
+ - spec/fixtures/bitbucket/payload/foreign_pull_request.json
266
+ - spec/fixtures/bitbucket/payload/push.json
267
+ - spec/fixtures/bitbucket/payload/updated_pull_request.json
268
+ - spec/fixtures/bitbucket/repos.json
269
+ - spec/fixtures/bitbucket/user_privileges.json
270
+ - spec/fixtures/bitbucket/user_repo.json
271
+ - spec/fixtures/bitbucket/user_repos.json
218
272
  - spec/fixtures/github/add_deploy_key.json
219
273
  - spec/fixtures/github/commit.json
220
274
  - spec/fixtures/github/create_hook.json
@@ -243,6 +297,8 @@ test_files:
243
297
  - spec/fixtures/gitlab_v6/payload/push_tag.json
244
298
  - spec/fixtures/gitlab_v6/project.json
245
299
  - spec/fixtures/gitlab_v6/projects.json
300
+ - spec/lib/bitbucket_payload_spec.rb
301
+ - spec/lib/bitbucket_spec.rb
246
302
  - spec/lib/github_payload_spec.rb
247
303
  - spec/lib/github_spec.rb
248
304
  - spec/lib/gitlab_payload_spec.rb
@@ -251,6 +307,7 @@ test_files:
251
307
  - spec/lib/model_spec.rb
252
308
  - spec/lib/service_connector_spec.rb
253
309
  - spec/spec_helper.rb
310
+ - spec/support/bitbucket_web_mocks.rb
254
311
  - spec/support/create.rb
255
312
  - spec/support/github_web_mocks.rb
256
313
  - spec/support/gitlab_v5_spec_helpers.rb