omniauth-dwolla 0.0.13 → 0.0.14

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6c00ae2287f00a14d363b7a42f88dbbd93d49861
4
+ data.tar.gz: 58feebf016218b3162393c2047caf3631bf92464
5
+ SHA512:
6
+ metadata.gz: 60ec1dc3bf0d5a3f8a728564d55cc3a9134b18f114c8f886fa897b661707b0ecc8ecc2154a4901257ad816cb6a4174512ca91a4f63b0a5ac60657c9e7a9efa08
7
+ data.tar.gz: d3e8bbed83d5e012f7f2e171672e84bcab417bb1080c2ff619ac5b4f18a9bf8f11a2ce64cd8896aad083417c713a9e7d266023b7b890941f533b83fcc6fd76c4
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in omniauth-dwolla.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -20,9 +20,28 @@ Here's a quick example, adding the middleware to a Rails app in `config/initiali
20
20
 
21
21
  ```ruby
22
22
  Rails.application.config.middleware.use OmniAuth::Builder do
23
- provider :dwolla, ENV['DWOLLA_KEY'], ENV['DWOLLA_SECRET'], :scope => 'accountinfofull|send|request'
23
+ provider :dwolla, ENV['DWOLLA_KEY'], ENV['DWOLLA_SECRET'], :scope => 'accountinfofull|send|request', :provider_ignores_state => true
24
24
  end
25
25
  ```
26
26
  The :scope param is optional.
27
27
 
28
28
  The default :scope is 'accountinfofull'. It is necessary in order to grab the uid and detailed info for user.
29
+
30
+ The extra hash will include:
31
+ ```json
32
+ "raw_info": {
33
+ "City": "Des Moines",
34
+ "Id": "812-111-1111",
35
+ "Latitude": 41.584546,
36
+ "Longitude": -93.634167,
37
+ "Name": "Test User",
38
+ "State": "IA",
39
+ "Type": "Personal"
40
+ }
41
+ ```
42
+
43
+ ## Exception Handling
44
+
45
+ If the Dwolla library raises a `Dwolla::RequestException`, that will be wrapped and re-raised as a `OmniAuth::Strategies::OAuth2::CallbackError`. The OmniAuth OAuth2 library will, in turn, treat that as a failure due to invalid credentials, passing the `CallbackError` through Rack's middleware chain.
46
+
47
+ Note that the `Devise::OmniauthCallbacksController` provides a good example of handling this scenario.
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module Dwolla
3
- VERSION = "0.0.13"
3
+ VERSION = "0.0.14"
4
4
  end
5
5
  end
@@ -5,12 +5,16 @@ module OmniAuth
5
5
  module Strategies
6
6
  class Dwolla < OmniAuth::Strategies::OAuth2
7
7
  DEFAULT_SCOPE = 'accountinfofull'
8
-
8
+ option :name, 'dwolla'
9
9
  option :client_options, {
10
10
  :site => 'https://www.dwolla.com',
11
11
  :authorize_url => '/oauth/v2/authenticate',
12
12
  :token_url => '/oauth/v2/token'
13
13
  }
14
+ #option :provider_ignores_state, true
15
+ # setting that has NO effect.
16
+ # If anyone can figure a way to make it work
17
+ # PLEASE issue a pull request. -masukomi
14
18
 
15
19
  uid { user.id }
16
20
 
@@ -34,6 +38,8 @@ module OmniAuth
34
38
  private
35
39
  def user
36
40
  @user ||= ::Dwolla::User.me(access_token.token).fetch
41
+ rescue ::Dwolla::RequestException => e
42
+ raise CallbackError.new(e, e.message)
37
43
  end
38
44
 
39
45
  def prune!(hash)
@@ -5,11 +5,18 @@ require "omniauth-dwolla/version"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "omniauth-dwolla"
7
7
  s.version = Omniauth::Dwolla::VERSION
8
- s.authors = ["Jefferson Girao"]
9
- s.email = ["contato@jefferson.eti.br"]
10
- s.homepage = "https://github.com/jeffersongirao/omniauth-dwolla"
8
+ s.authors = ["masukomi"]
9
+ s.email = ["masukomi@masukomi.org"]
10
+ s.homepage = "https://github.com/masukomi/omniauth-dwolla"
11
11
  s.summary = %q{OmniAuth strategy for Dwolla.}
12
12
  s.description = %q{OmniAuth strategy for Dwolla.}
13
+ s.license = 'MIT'
14
+ post_install_string =<<END
15
+ Remember to specify
16
+ :provider_ignores_state => true
17
+ When you set up your Dwolla OmniAuth provider.
18
+ END
19
+ s.post_install_message = post_install_string
13
20
 
14
21
  s.rubyforge_project = "omniauth-dwolla"
15
22
 
@@ -18,12 +25,14 @@ Gem::Specification.new do |s|
18
25
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
26
  s.require_paths = ["lib"]
20
27
 
21
- s.add_dependency 'omniauth', '~> 1.0'
22
- s.add_dependency 'omniauth-oauth2', '~> 1.0'
23
- s.add_dependency 'dwolla', '>= 0.0.13'
28
+ s.add_dependency 'omniauth', '~> 1.1.4'
29
+ s.add_dependency 'omniauth-oauth2', '~> 1.1.1'
30
+ s.add_dependency 'dwolla', '>= 0.0.14'
31
+ #using >=0.0.15 results in a variety of dependency conflicts
24
32
 
25
33
  s.add_development_dependency 'rake'
26
- s.add_development_dependency 'rspec', '~> 2.7'
34
+ s.add_development_dependency 'rspec', '~> 2.13.0'
27
35
  s.add_development_dependency 'rack-test'
28
36
  s.add_development_dependency 'simplecov'
37
+ s.add_development_dependency 'debugger'
29
38
  end
@@ -9,16 +9,19 @@ describe OmniAuth::Strategies::Dwolla do
9
9
 
10
10
  describe '#client' do
11
11
  it 'should have the correct dwolla site' do
12
- subject.client.site.should eq("https://www.dwolla.com")
12
+ expect(subject.client.site).to eq("https://www.dwolla.com")
13
13
  end
14
14
 
15
15
  it 'should have the correct authorization url' do
16
- subject.client.options[:authorize_url].should eq("/oauth/v2/authenticate")
16
+ expect(subject.client.options[:authorize_url]).to eq("/oauth/v2/authenticate")
17
17
  end
18
18
 
19
19
  it 'should have the correct token url' do
20
- subject.client.options[:token_url].should eq('/oauth/v2/token')
20
+ expect(subject.client.options[:token_url]).to eq('/oauth/v2/token')
21
21
  end
22
+
23
+ #TODO find a way to set :provider_ignores_state to true by default
24
+ # and add a test for it. -masukomi
22
25
  end
23
26
 
24
27
  describe 'getting info' do
@@ -34,21 +37,54 @@ describe OmniAuth::Strategies::Dwolla do
34
37
 
35
38
  subject.stub(:access_token) { @access_token }
36
39
 
37
- @dwolla_user.should_receive(:fetch).and_return(@dwolla_user)
38
40
  ::Dwolla::User.should_receive(:me).with(@access_token.token).and_return(@dwolla_user)
39
41
  end
40
42
 
41
- it 'set the correct info based on user' do
42
- subject.info.should == { 'name' => 'Test Name',
43
- 'latitude' => '123',
44
- 'longitude' => '321',
45
- 'city' => 'Sample City',
46
- 'state' => 'TT',
47
- 'type' => 'Personal' }
43
+ context 'when successful' do
44
+ before do
45
+ @dwolla_user.should_receive(:fetch).and_return(@dwolla_user)
46
+ end
47
+
48
+ it 'sets the correct info based on user' do
49
+ subject.info.should == { 'name' => 'Test Name',
50
+ 'latitude' => '123',
51
+ 'longitude' => '321',
52
+ 'city' => 'Sample City',
53
+ 'state' => 'TT',
54
+ 'type' => 'Personal' }
55
+ end
56
+
57
+ it 'sets the correct uid based on user' do
58
+ subject.uid.should == '12345'
59
+ end
48
60
  end
49
61
 
50
- it 'set the correct uid based on user' do
51
- subject.uid.should == '12345'
62
+ context 'when a Dwolla::RequestException is raised' do
63
+ let(:request_exception) { ::Dwolla::RequestException.new('Dwolla Error Message') }
64
+
65
+ before do
66
+ @dwolla_user.should_receive(:fetch).and_raise(request_exception)
67
+ end
68
+
69
+ it 're-raises the appropriate OAuth error' do
70
+ expect {
71
+ subject.uid
72
+ }.to raise_error(OmniAuth::Strategies::OAuth2::CallbackError)
73
+ end
74
+
75
+ it 'passes along the original exception' do
76
+ exception = nil
77
+
78
+ begin
79
+ subject.uid
80
+ rescue OmniAuth::Strategies::OAuth2::CallbackError => e
81
+ exception = e
82
+ exception.error.should eq(request_exception)
83
+ exception.error_reason.should eq(request_exception.message)
84
+ end
85
+
86
+ exception.should be
87
+ end
52
88
  end
53
89
  end
54
90
 
data/spec/spec_helper.rb CHANGED
@@ -12,4 +12,5 @@ Dir[File.expand_path('../support/**/*', __FILE__)].each { |f| require f }
12
12
  RSpec.configure do |config|
13
13
  config.include Rack::Test::Methods
14
14
  config.extend OmniAuth::Test::StrategyMacros, :type => :strategy
15
+ OmniAuth.config.test_mode = true
15
16
  end
metadata CHANGED
@@ -1,96 +1,130 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-dwolla
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
5
- prerelease:
4
+ version: 0.0.14
6
5
  platform: ruby
7
6
  authors:
8
- - Jefferson Girao
7
+ - masukomi
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-01-23 00:00:00.000000000Z
11
+ date: 2013-05-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: omniauth
16
- requirement: &2156793600 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '1.0'
19
+ version: 1.1.4
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *2156793600
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.4
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: omniauth-oauth2
27
- requirement: &2156774460 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ~>
31
32
  - !ruby/object:Gem::Version
32
- version: '1.0'
33
+ version: 1.1.1
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *2156774460
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 1.1.1
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: dwolla
38
- requirement: &2156773420 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
- version: 0.0.13
47
+ version: 0.0.14
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *2156773420
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.14
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: rake
49
- requirement: &2156772920 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *2156772920
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rspec
60
- requirement: &2156772140 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
73
  - - ~>
64
74
  - !ruby/object:Gem::Version
65
- version: '2.7'
75
+ version: 2.13.0
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *2156772140
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 2.13.0
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rack-test
71
- requirement: &2156771500 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
- - - ! '>='
87
+ - - '>='
75
88
  - !ruby/object:Gem::Version
76
89
  version: '0'
77
90
  type: :development
78
91
  prerelease: false
79
- version_requirements: *2156771500
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
80
97
  - !ruby/object:Gem::Dependency
81
98
  name: simplecov
82
- requirement: &2156770720 !ruby/object:Gem::Requirement
83
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
84
107
  requirements:
85
- - - ! '>='
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: debugger
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
86
116
  - !ruby/object:Gem::Version
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *2156770720
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
91
125
  description: OmniAuth strategy for Dwolla.
92
126
  email:
93
- - contato@jefferson.eti.br
127
+ - masukomi@masukomi.org
94
128
  executables: []
95
129
  extensions: []
96
130
  extra_rdoc_files: []
@@ -106,35 +140,30 @@ files:
106
140
  - spec/omniauth/strategies/dwolla_spec.rb
107
141
  - spec/spec_helper.rb
108
142
  - spec/support/shared_examples.rb
109
- homepage: https://github.com/jeffersongirao/omniauth-dwolla
110
- licenses: []
111
- post_install_message:
143
+ homepage: https://github.com/masukomi/omniauth-dwolla
144
+ licenses:
145
+ - MIT
146
+ metadata: {}
147
+ post_install_message: "Remember to specify \n :provider_ignores_state => true\nWhen
148
+ you set up your Dwolla OmniAuth provider.\n"
112
149
  rdoc_options: []
113
150
  require_paths:
114
151
  - lib
115
152
  required_ruby_version: !ruby/object:Gem::Requirement
116
- none: false
117
153
  requirements:
118
- - - ! '>='
154
+ - - '>='
119
155
  - !ruby/object:Gem::Version
120
156
  version: '0'
121
- segments:
122
- - 0
123
- hash: 402301085936081604
124
157
  required_rubygems_version: !ruby/object:Gem::Requirement
125
- none: false
126
158
  requirements:
127
- - - ! '>='
159
+ - - '>='
128
160
  - !ruby/object:Gem::Version
129
161
  version: '0'
130
- segments:
131
- - 0
132
- hash: 402301085936081604
133
162
  requirements: []
134
163
  rubyforge_project: omniauth-dwolla
135
- rubygems_version: 1.8.10
164
+ rubygems_version: 2.0.3
136
165
  signing_key:
137
- specification_version: 3
166
+ specification_version: 4
138
167
  summary: OmniAuth strategy for Dwolla.
139
168
  test_files:
140
169
  - spec/omniauth/strategies/dwolla_spec.rb