omniauth-fitbit 1.0.5 → 2.0.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.
@@ -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