omniauth-fitbit 1.0.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bb284ea02707a038bb8bd523ff6da1cb3356a6f1
4
+ data.tar.gz: 481ccbf103390f616d3d089a471f827189ec3d92
5
+ SHA512:
6
+ metadata.gz: 7b369fd4ac9e5efafe5de271b83c5115cbaa81b10d00c7bf2107ed1fb5cdf11162b11beb90b0dab46de96cd5cd2341a536bb0e1d74b7511a11b578699b89f00a
7
+ data.tar.gz: f756527a776b7865a5bc6809318dab76a95f092e97f4861e399488f09c948c9e2d852c1dd5428d537e6223093c07d073b9466ee7496ef20d4a0810267588ffb8
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'omniauth-oauth', '~> 1.0'
5
+ gem 'omniauth-oauth2', '~> 1.4'
6
6
 
7
7
  group :development, :test do
8
8
  gem 'rspec'
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 TK Gospodinov
1
+ Copyright (c) 2016 TK Gospodinov
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -3,7 +3,7 @@ require 'omniauth-fitbit'
3
3
 
4
4
  use Rack::Session::Cookie
5
5
  use OmniAuth::Builder do
6
- provider :fitbit, '<consumer_key>', '<consumer_secret>'
6
+ provider :fitbit, '', '', { :scope => 'profile', :redirect_uri => 'http://localhost:4567/auth/fitbit/callback' }
7
7
  end
8
8
 
9
9
  get '/' do
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Fitbit
3
- VERSION = "1.0.5"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -1,22 +1,37 @@
1
- require 'omniauth'
2
- require 'omniauth/strategies/oauth'
1
+ require 'omniauth-oauth2'
3
2
 
4
3
  module OmniAuth
5
4
  module Strategies
6
- class Fitbit < OmniAuth::Strategies::OAuth
5
+ class Fitbit < OmniAuth::Strategies::OAuth2
7
6
 
8
7
  option :name, "fitbit"
9
8
 
10
9
  option :client_options, {
11
- :site => 'https://api.fitbit.com',
12
- :authorize_url => 'https://www.fitbit.com/oauth/authorize',
13
- :request_token_path => '/oauth/request_token',
14
- :access_token_path => '/oauth/access_token',
15
- :authorize_path => '/oauth/authorize'
10
+ :site => 'https://api.fitbit.com',
11
+ :authorize_url => 'https://www.fitbit.com/oauth2/authorize',
12
+ :token_url => 'https://api.fitbit.com/oauth2/token'
16
13
  }
17
14
 
15
+ option :response_type, 'code'
16
+ option :authorize_options, %i(scope response_type redirect_uri)
17
+
18
+ def build_access_token
19
+ options.token_params.merge!(:headers => {'Authorization' => basic_auth_header })
20
+ super
21
+ end
22
+
23
+ def basic_auth_header
24
+ "Basic " + Base64.strict_encode64("#{options[:client_id]}:#{options[:client_secret]}")
25
+ end
26
+
27
+ def query_string
28
+ # Using state and code params in the callback_url causes a mismatch with
29
+ # the value set in the fitbit application configuration, so we're skipping them
30
+ ''
31
+ end
32
+
18
33
  uid do
19
- access_token.params['encoded_user_id']
34
+ access_token.params['user_id']
20
35
  end
21
36
 
22
37
  info do
@@ -8,14 +8,14 @@ Gem::Specification.new do |s|
8
8
  s.authors = ["TK Gospodinov"]
9
9
  s.email = ["tk@gospodinov.net"]
10
10
  s.homepage = "http://github.com/tkgospodinov/omniauth-fitbit"
11
- s.summary = %q{OmniAuth strategy for Fitbit}
12
- s.description = %q{OmniAuth strategy for Fitbit}
11
+ s.summary = %q{OmniAuth OAuth2 strategy for Fitbit}
12
+ s.description = %q{OmniAuth OAuth2 strategy for Fitbit}
13
13
 
14
14
  s.files = `git ls-files`.split($\)
15
15
  s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
16
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
17
17
  s.require_paths = ["lib"]
18
18
 
19
- s.add_runtime_dependency 'omniauth-oauth', '~> 1.0'
19
+ s.add_runtime_dependency 'omniauth-oauth2', '~> 1.4'
20
20
  s.add_runtime_dependency 'multi_xml'
21
21
  end
@@ -5,40 +5,66 @@ describe "OmniAuth::Strategies::Fitbit" do
5
5
  OmniAuth::Strategies::Fitbit.new(nil, @options || {})
6
6
  end
7
7
 
8
+ describe 'response_type' do
9
+ it 'includes :code' do
10
+ expect(subject.options["response_type"]).to include('code')
11
+ end
12
+ end
13
+
14
+ describe 'authorize_options' do
15
+ it 'includes :scope' do
16
+ expect(subject.options["authorize_options"]).to include(:scope)
17
+ end
18
+
19
+ it 'includes :response_type' do
20
+ expect(subject.options["authorize_options"]).to include(:response_type)
21
+ end
22
+
23
+ it 'includes :redirect_uri' do
24
+ expect(subject.options["authorize_options"]).to include(:redirect_uri)
25
+ end
26
+ end
27
+
8
28
  context 'client options' do
9
29
  it 'has correct OAuth endpoint' do
10
- subject.options.client_options.site.should eq('https://api.fitbit.com')
30
+ expect(subject.options.client_options.site).to eq('https://api.fitbit.com')
11
31
  end
12
32
 
13
- it 'has correct request token url' do
14
- subject.options.client_options.request_token_path.should eq('/oauth/request_token')
33
+ it 'has correct authorize url' do
34
+ expect(subject.options.client_options.authorize_url).to eq('https://www.fitbit.com/oauth2/authorize')
15
35
  end
16
36
 
17
- it 'has correct access token url' do
18
- subject.options.client_options.access_token_path.should eq('/oauth/access_token')
37
+ it 'has correct token url' do
38
+ expect(subject.options.client_options.token_url).to eq('https://api.fitbit.com/oauth2/token')
19
39
  end
40
+ end
20
41
 
21
- it 'has correct authorize url' do
22
- subject.options.client_options.authorize_url.should eq('https://www.fitbit.com/oauth/authorize')
42
+ context 'auth header' do
43
+ before :each do
44
+ subject.options.client_id = 'testclientid'
45
+ subject.options.client_secret = 'testclientsecret'
23
46
  end
24
47
 
48
+ it 'returns the correct authorization header value' do
49
+ expect(subject.basic_auth_header).to eq('Basic ' + Base64.strict_encode64("testclientid:testclientsecret"))
50
+ end
25
51
  end
26
52
 
27
53
  context 'uid' do
28
54
  before :each do
29
55
  access_token = double('access_token')
30
- access_token.stub('params') { { 'encoded_user_id' => '123ABC' } }
31
- subject.stub(:access_token) { access_token }
56
+ allow(access_token).to receive('params') { { 'user_id' => '123ABC' } }
57
+ allow(subject).to receive(:access_token) { access_token }
32
58
  end
33
59
 
34
60
  it 'returns the correct id from raw_info' do
35
- subject.uid.should eq('123ABC')
61
+ expect(subject.uid).to eq('123ABC')
36
62
  end
37
63
  end
38
64
 
39
65
  context 'info' do
40
66
  before :each do
41
- subject.stub(:raw_info) {
67
+ allow(subject).to receive(:raw_info) {
42
68
  {
43
69
  "user" =>
44
70
  {
@@ -60,45 +86,45 @@ describe "OmniAuth::Strategies::Fitbit" do
60
86
  end
61
87
 
62
88
  it 'returns the correct name from raw_info' do
63
- subject.info[:name].should eq("JD")
89
+ expect(subject.info[:name]).to eq("JD")
64
90
  end
65
91
 
66
92
  it 'returns the correct full name from raw_info' do
67
- subject.info[:full_name].should eq("John Doe")
93
+ expect(subject.info[:full_name]).to eq("John Doe")
68
94
  end
69
95
 
70
96
  it 'returns the correct display name from raw_info' do
71
- subject.info[:display_name].should eq("JD")
97
+ expect(subject.info[:display_name]).to eq("JD")
72
98
  end
73
99
 
74
100
  it 'returns the correct nickname from raw_info' do
75
- subject.info[:nickname].should eq("Johnnie")
101
+ expect(subject.info[:nickname]).to eq("Johnnie")
76
102
  end
77
103
 
78
104
  it 'returns the correct gender from raw_info' do
79
- subject.info[:gender].should eq("MALE")
105
+ expect(subject.info[:gender]).to eq("MALE")
80
106
  end
81
107
 
82
108
  it 'returns the correct gender from raw_info' do
83
- subject.info[:about_me].should eq("I live in Kansas City, MO")
109
+ expect(subject.info[:about_me]).to eq("I live in Kansas City, MO")
84
110
  end
85
111
 
86
112
  it 'returns the correct gender from raw_info' do
87
- subject.info[:city].should eq("Kansas City")
113
+ expect(subject.info[:city]).to eq("Kansas City")
88
114
  end
89
115
 
90
116
  it 'returns the correct gender from raw_info' do
91
- subject.info[:state].should eq("MO")
117
+ expect(subject.info[:state]).to eq("MO")
92
118
  end
93
119
 
94
120
  it 'returns the correct gender from raw_info' do
95
- subject.info[:country].should eq("US")
121
+ expect(subject.info[:country]).to eq("US")
96
122
  end
97
123
  end
98
124
 
99
125
  context 'dateOfBirth is empty' do
100
126
  before :each do
101
- subject.stub(:raw_info) {
127
+ allow(subject).to receive(:raw_info) {
102
128
  {
103
129
  "user" =>
104
130
  {
@@ -109,7 +135,7 @@ describe "OmniAuth::Strategies::Fitbit" do
109
135
  }
110
136
  end
111
137
  it 'when return nil' do
112
- subject.info[:dob].should be_nil
138
+ expect(subject.info[:dob]).to be_nil
113
139
  end
114
140
  end
115
141
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
4
4
  require 'rspec'
5
5
  require 'rack/test'
6
6
  require 'webmock/rspec'
7
- require 'omniauth'
7
+ require 'omniauth-oauth2'
8
8
  require 'omniauth-fitbit'
9
9
 
10
10
  RSpec.configure do |config|
metadata CHANGED
@@ -1,56 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-fitbit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - TK Gospodinov
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2015-05-19 00:00:00.000000000 Z
11
+ date: 2016-02-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: omniauth-oauth
14
+ name: omniauth-oauth2
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '1.0'
19
+ version: '1.4'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '1.0'
26
+ version: '1.4'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: multi_xml
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
- description: OmniAuth strategy for Fitbit
41
+ description: OmniAuth OAuth2 strategy for Fitbit
47
42
  email:
48
43
  - tk@gospodinov.net
49
44
  executables: []
50
45
  extensions: []
51
46
  extra_rdoc_files: []
52
47
  files:
53
- - .gitignore
48
+ - ".gitignore"
54
49
  - Gemfile
55
50
  - LICENSE.md
56
51
  - README.md
@@ -65,28 +60,27 @@ files:
65
60
  - spec/spec_helper.rb
66
61
  homepage: http://github.com/tkgospodinov/omniauth-fitbit
67
62
  licenses: []
63
+ metadata: {}
68
64
  post_install_message:
69
65
  rdoc_options: []
70
66
  require_paths:
71
67
  - lib
72
68
  required_ruby_version: !ruby/object:Gem::Requirement
73
- none: false
74
69
  requirements:
75
- - - ! '>='
70
+ - - ">="
76
71
  - !ruby/object:Gem::Version
77
72
  version: '0'
78
73
  required_rubygems_version: !ruby/object:Gem::Requirement
79
- none: false
80
74
  requirements:
81
- - - ! '>='
75
+ - - ">="
82
76
  - !ruby/object:Gem::Version
83
77
  version: '0'
84
78
  requirements: []
85
79
  rubyforge_project:
86
- rubygems_version: 1.8.23
80
+ rubygems_version: 2.2.2
87
81
  signing_key:
88
- specification_version: 3
89
- summary: OmniAuth strategy for Fitbit
82
+ specification_version: 4
83
+ summary: OmniAuth OAuth2 strategy for Fitbit
90
84
  test_files:
91
85
  - spec/omniauth/strategies/fitbit_spec.rb
92
86
  - spec/spec_helper.rb