git_hub_bub 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c21c6a37d5be72502e3f589b9c6ad01dc1f7482
4
- data.tar.gz: a4b590a320c721a3f8be2aab3d14c4a80ecd07d7
3
+ metadata.gz: 3d31891a90b22df2a157da85e2158361b8205e2b
4
+ data.tar.gz: 9520dc67097429c0d153f0157431330a1385a9d3
5
5
  SHA512:
6
- metadata.gz: 23c4836932ced10d6aba5555328b0e7609cf480770e9e772f70ae9417c07bb9ccdc382d86e8fd4059d2f8be8426dac8c3f035a33cd0ff16389762039f6aa8c60
7
- data.tar.gz: 8419b8819b7da37d0d99b8bede074f7c43f058db07cb05bc380aabaa1cb025405ffe2532929a5db60fc9ba9151f08f5112f4bc6bcab0642701bf25940086b09a
6
+ metadata.gz: 1f64c2a1f22a8fb729643473d982218a00d76f35b5f6955ed564f3951048b80d984b22148d01d2140047bd63d1ed8d02e409f1e7c9f4363d4ea380a850e22371
7
+ data.tar.gz: 5998e107923099f197273716ef8fbe106f00782793e4a45ef80a78f857026a22296f4b1edfe7282a4772f8833fd3bae6ca816aeea7d50b2a1d5f5aadbc0360fa
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
20
20
 
21
21
  gem.add_dependency "rrrretry"
22
22
  gem.add_dependency "excon"
23
+ gem.add_development_dependency "mocha"
23
24
  gem.add_development_dependency "rake"
24
25
  gem.add_development_dependency "vcr", '~> 2.5.0'
25
26
  gem.add_development_dependency "webmock", '~> 1.11.0'
@@ -13,7 +13,7 @@ module GitHubBub
13
13
  class << self
14
14
 
15
15
  def valid_token?(token)
16
- Request.get("https://#{ENV['GITHUB_APP_ID']}:#{ENV['GITHUB_APP_SECRET']}@api.github.com/applications/#{ENV['GITHUB_APP_ID']}/tokens/#{token}", {token: nil})
16
+ Request.get("https://#{ENV['GITHUB_APP_ID']}:#{ENV['GITHUB_APP_SECRET']}@api.github.com/applications/#{ENV['GITHUB_APP_ID']}/tokens/#{token}", {}, {skip_token: true})
17
17
  true
18
18
  rescue GitHubBub::RequestError
19
19
  false
@@ -13,11 +13,16 @@ module GitHubBub
13
13
 
14
14
  def initialize(url, query = {}, options = {})
15
15
  self.url = url =~ /^http(\w?)\:\/\// ? url : File.join(BASE_URI, url)
16
+ @skip_token = options.delete(:skip_token)
16
17
  self.options = BASE_OPTIONS.merge(options || {})
17
- self.options[:query] = query if query && !query.empty?
18
+ self.options[:query] = query if query && !query.empty?
18
19
  self.options[:headers] = BASE_HEADERS.merge(options[:headers]|| {})
19
20
  end
20
21
 
22
+ def skip_token?
23
+ @skip_token
24
+ end
25
+
21
26
  def self.head(url, query = {}, options = {})
22
27
  self.new(url, query, options).head
23
28
  end
@@ -82,7 +87,7 @@ module GitHubBub
82
87
 
83
88
  def wrap_request(&block)
84
89
  before_callbacks!
85
- set_auth_from_token!
90
+ set_auth_from_token! unless skip_token?
86
91
  query_to_json_body!
87
92
  response = RETRIES.times.retry do
88
93
  GitHubBub::Response.create(yield)
@@ -1,3 +1,3 @@
1
1
  module GitHubBub
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://api.github.com/user?name=USER_NAME
5
+ uri: https://api.github.com/user?name=<USER_NAME>
6
6
  body:
7
7
  encoding: UTF-8
8
8
  string: '{"name":"<USER_NAME>"}'
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+
3
+ class ValidTokenTest < Test::Unit::TestCase
4
+ include WebMock::API
5
+
6
+ def teardown
7
+ GitHubBub::Request.clear_callbacks
8
+ end
9
+
10
+ def test_does_not_add_token_to_header
11
+ token = "foo"
12
+ url = "https://#{ENV['GITHUB_APP_ID']}:#{ENV['GITHUB_APP_SECRET']}@api.github.com/applications/#{ENV['GITHUB_APP_ID']}/tokens/#{token}"
13
+ stub_get = stub_request(:get, url)
14
+
15
+ GitHubBub::Request.any_instance.expects(:token).never
16
+
17
+ GitHubBub.valid_token?(token)
18
+ assert_requested stub_get
19
+ end
20
+
21
+ end
@@ -5,6 +5,8 @@ Dotenv.load
5
5
 
6
6
  require 'git_hub_bub'
7
7
  require 'test/unit'
8
+ require 'mocha/test_unit'
9
+ require 'webmock'
8
10
 
9
11
  def schneems_orgs_data
10
12
  {:body=>"[{\"login\":\"gowalla\",\"id\":317884,\"url\":\"https://api.github.com/orgs/gowalla\",\"repos_url\":\"https://api.github.com/orgs/gowalla/repos\",\"events_url\":\"https://api.github.com/orgs/gowalla/events\",\"members_url\":\"https://api.github.com/orgs/gowalla/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/gowalla/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/72746c59eaafb328456c345dc3b95999?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"austinonrails\",\"id\":43000,\"url\":\"https://api.github.com/orgs/austinonrails\",\"repos_url\":\"https://api.github.com/orgs/austinonrails/repos\",\"events_url\":\"https://api.github.com/orgs/austinonrails/events\",\"members_url\":\"https://api.github.com/orgs/austinonrails/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/austinonrails/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/da3ed72ff4f24a1670a5497d7b588bf4?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"heroku\",\"id\":23211,\"url\":\"https://api.github.com/orgs/heroku\",\"repos_url\":\"https://api.github.com/orgs/heroku/repos\",\"events_url\":\"https://api.github.com/orgs/heroku/events\",\"members_url\":\"https://api.github.com/orgs/heroku/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/heroku/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/e327d6043ba309e2bfc8b56110b6dbbe?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"opro\",\"id\":2106073,\"url\":\"https://api.github.com/orgs/opro\",\"repos_url\":\"https://api.github.com/orgs/opro/repos\",\"events_url\":\"https://api.github.com/orgs/opro/events\",\"members_url\":\"https://api.github.com/orgs/opro/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/opro/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/f1fd003752171548706b5a3a9e820f31?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"codetriage\",\"id\":2896855,\"url\":\"https://api.github.com/orgs/codetriage\",\"repos_url\":\"https://api.github.com/orgs/codetriage/repos\",\"events_url\":\"https://api.github.com/orgs/codetriage/events\",\"members_url\":\"https://api.github.com/orgs/codetriage/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/codetriage/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"sumodocs\",\"id\":3372962,\"url\":\"https://api.github.com/orgs/sumodocs\",\"repos_url\":\"https://api.github.com/orgs/sumodocs/repos\",\"events_url\":\"https://api.github.com/orgs/sumodocs/events\",\"members_url\":\"https://api.github.com/orgs/sumodocs/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/sumodocs/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"rails\",\"id\":4223,\"url\":\"https://api.github.com/orgs/rails\",\"repos_url\":\"https://api.github.com/orgs/rails/repos\",\"events_url\":\"https://api.github.com/orgs/rails/events\",\"members_url\":\"https://api.github.com/orgs/rails/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/rails/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/30f39a09e233e8369dddf6feb4be0308?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"sharpstone\",\"id\":3969584,\"url\":\"https://api.github.com/orgs/sharpstone\",\"repos_url\":\"https://api.github.com/orgs/sharpstone/repos\",\"events_url\":\"https://api.github.com/orgs/sharpstone/events\",\"members_url\":\"https://api.github.com/orgs/sharpstone/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/sharpstone/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"centerforstudents\",\"id\":4041835,\"url\":\"https://api.github.com/orgs/centerforstudents\",\"repos_url\":\"https://api.github.com/orgs/centerforstudents/repos\",\"events_url\":\"https://api.github.com/orgs/centerforstudents/events\",\"members_url\":\"https://api.github.com/orgs/centerforstudents/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/centerforstudents/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"railsgirls\",\"id\":1641104,\"url\":\"https://api.github.com/orgs/railsgirls\",\"repos_url\":\"https://api.github.com/orgs/railsgirls/repos\",\"events_url\":\"https://api.github.com/orgs/railsgirls/events\",\"members_url\":\"https://api.github.com/orgs/railsgirls/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/railsgirls/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/ae1295e0d53f3b81def634344b6644c1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"},{\"login\":\"ruby-no-kai\",\"id\":207834,\"url\":\"https://api.github.com/orgs/ruby-no-kai\",\"repos_url\":\"https://api.github.com/orgs/ruby-no-kai/repos\",\"events_url\":\"https://api.github.com/orgs/ruby-no-kai/events\",\"members_url\":\"https://api.github.com/orgs/ruby-no-kai/members{/member}\",\"public_members_url\":\"https://api.github.com/orgs/ruby-no-kai/public_members{/member}\",\"avatar_url\":\"https://secure.gravatar.com/avatar/ea5efa6071bc5fd5f9f74949cc743407?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png\"}]", :headers=>{"Server"=>"GitHub.com", "Date"=>"Mon, 20 May 2013 19:49:07 GMT", "Content-Type"=>"application/json; charset=utf-8", "Connection"=>"keep-alive", "Status"=>"200 OK", "X-RateLimit-Limit"=>"5000", "X-RateLimit-Remaining"=>"4993", "Vary"=>"Accept, Authorization, Cookie, Accept-Encoding", "Cache-Control"=>"private, max-age=60, s-maxage=60", "Last-Modified"=>"Mon, 20 May 2013 19:42:52 GMT", "ETag"=>"\"0ecbc232dd0a0b86c82ad92050ea38aa\"", "X-OAuth-Scopes"=>"user:email", "X-Accepted-OAuth-Scopes"=>"repo, user", "X-GitHub-Media-Type"=>"github.beta; param=3.raw; format=json", "X-Content-Type-Options"=>"nosniff", "Content-Length"=>"5812", "Access-Control-Allow-Credentials"=>"true", "Access-Control-Expose-Headers"=>"Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-OAuth-Scopes, X-Accepted-OAuth-Scopes", "Access-Control-Allow-Origin"=>"*"}, :status=>200, :remote_ip=>"207.97.227.243"}
@@ -30,7 +32,15 @@ VCR.configure do |c|
30
32
  c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
31
33
  c.hook_into :webmock # or :fakeweb
32
34
 
33
- 'GITHUB_API_KEY OWNER REPO USER_NAME WATCH_OWNER WATCH_REPO GITHUB_APP_ID GITHUB_APP_SECRET'.split(' ').each do |secure|
35
+ %W{
36
+ GITHUB_API_KEY
37
+ OWNER REPO
38
+ USER_NAME
39
+ WATCH_OWNER
40
+ WATCH_REPO
41
+ GITHUB_APP_ID
42
+ GITHUB_APP_SECRET
43
+ }.each do |secure|
34
44
  sensitive = ENV[secure] ||= secure
35
45
  c.filter_sensitive_data("<#{secure}>") { sensitive }
36
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_hub_bub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Schneeman
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mocha
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
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: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,7 @@ files:
122
136
  - test/fixtures/vcr_cassettes/PUT_/repos/_owner/_repo/subscription.yml
123
137
  - test/git_hub_bub/request_test.rb
124
138
  - test/git_hub_bub/response_test.rb
139
+ - test/git_hub_bub/valid_token_test.rb
125
140
  - test/test_helper.rb
126
141
  homepage: https://github.com/schneems/git_hub_bub
127
142
  licenses:
@@ -157,4 +172,5 @@ test_files:
157
172
  - test/fixtures/vcr_cassettes/PUT_/repos/_owner/_repo/subscription.yml
158
173
  - test/git_hub_bub/request_test.rb
159
174
  - test/git_hub_bub/response_test.rb
175
+ - test/git_hub_bub/valid_token_test.rb
160
176
  - test/test_helper.rb