omniauth-wrike 0.2.1 → 1.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/Gemfile +8 -0
- data/README.md +3 -2
- data/lib/omniauth-wrike/version.rb +2 -2
- data/lib/omniauth/strategies/wrike.rb +15 -15
- data/spec/omniauth/strategies/wrike_spec.rb +111 -0
- data/spec/spec_helper.rb +16 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5753890e4845aaccb00fb6a419197bfc1386f019
|
4
|
+
data.tar.gz: 581d832271d05720613876fa7b775f7b27e2382d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f24dbd30ae49ebc7ff34084f769bf14561752bba8c66e0735874ce630286c5d5ff619f13bbd6981479b6c4ce4cd04bb878aca9f17171f6514073a1ccb33fb860
|
7
|
+
data.tar.gz: 2c624b0f6f4cdc172d5c2cc05c885acfb65aa43f7f3c8149b91afdd0381e508e98038cff8c414a2544c539f11442428414de27ab90637a1426584633d0586921
|
data/.gitignore
CHANGED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -21,7 +21,9 @@ end
|
|
21
21
|
|
22
22
|
To get your Wrike client ID and Secret, you must [request them here](https://developers.wrike.com/getting-started/).
|
23
23
|
|
24
|
-
[Wrike API 3.0 Documentation](https://developers.wrike.com/documentation/api/overview)
|
24
|
+
[Wrike API 3.0 Documentation](https://developers.wrike.com/documentation-v3/api/overview)
|
25
|
+
[Wrike API 4.0 Documentation](https://developers.wrike.com/documentation/api/overview)
|
26
|
+
[Wrike migration from API v3 to API v4 Documentation](https://developers.wrike.com/documentation/api/migrations)
|
25
27
|
|
26
28
|
## TODO
|
27
29
|
|
@@ -30,4 +32,3 @@ To get your Wrike client ID and Secret, you must [request them here](https://dev
|
|
30
32
|
## Contributing
|
31
33
|
|
32
34
|
Bug reports and pull requests are welcome on GitHub at https://github.com/Jpuelpan/omniauth-wrike
|
33
|
-
|
@@ -6,38 +6,38 @@ module OmniAuth
|
|
6
6
|
option :name, 'wrike'
|
7
7
|
|
8
8
|
option :client_options, {
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
9
|
+
site: 'https://www.wrike.com/api/v4',
|
10
|
+
authorize_url: 'https://www.wrike.com/oauth2/authorize/v4',
|
11
|
+
token_url: 'https://www.wrike.com/oauth2/token'
|
12
12
|
}
|
13
13
|
|
14
14
|
uid { raw_info['id'] }
|
15
15
|
|
16
16
|
info do
|
17
17
|
{
|
18
|
-
|
19
|
-
|
18
|
+
uid: raw_info['id'],
|
19
|
+
name: "#{raw_info['firstName']} #{raw_info['lastName']}",
|
20
|
+
email: user_email
|
20
21
|
}
|
21
22
|
end
|
22
23
|
|
23
24
|
extra do
|
24
|
-
{
|
25
|
-
|
26
|
-
'accounts' => accounts
|
25
|
+
{
|
26
|
+
raw_info: raw_info
|
27
27
|
}
|
28
28
|
end
|
29
29
|
|
30
|
-
def
|
31
|
-
|
30
|
+
def user_email
|
31
|
+
raw_info['profiles'].first['email']
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
35
|
-
@
|
34
|
+
def user_data_url
|
35
|
+
@url ||= URI::HTTPS.build(host: access_token.params['host'], path: '/api/v4/contacts', query: 'me=true').to_s
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
@
|
38
|
+
def raw_info
|
39
|
+
@raw_info ||= access_token.get(user_data_url).parsed['data'].first
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
43
|
-
end
|
43
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OmniAuth::Strategies::Wrike do
|
4
|
+
let(:request) { double('Request', params: {}, cookies: {}, env: {}) }
|
5
|
+
let(:profile) { raw_info_hash['profiles'].first }
|
6
|
+
|
7
|
+
subject do
|
8
|
+
args = ['appid', 'secret', @options || {}].compact
|
9
|
+
OmniAuth::Strategies::Wrike.new(*args).tap do |strategy|
|
10
|
+
allow(strategy).to receive(:request) {
|
11
|
+
request
|
12
|
+
}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'client options' do
|
17
|
+
it 'has correct name' do
|
18
|
+
expect(subject.options.name).to eq('wrike')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'has correct site' do
|
22
|
+
expect(subject.options.client_options.site).to eq('https://www.wrike.com/api/v4')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'has correct authorize url' do
|
26
|
+
expect(subject.options.client_options.authorize_url).to eq('https://www.wrike.com/oauth2/authorize/v4')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'info' do
|
31
|
+
before do
|
32
|
+
allow(subject).to receive(:raw_info).and_return(raw_info_hash)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'contains strict list of attrs' do
|
36
|
+
expect(subject.info.keys).to contain_exactly(:uid, :name, :email)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'returns the uid' do
|
40
|
+
expect(subject.info[:uid]).to eq(raw_info_hash['id'])
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'returns the name' do
|
44
|
+
expect(subject.info[:name]).to eq("#{raw_info_hash['firstName']} #{raw_info_hash['lastName']}")
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'returns the email' do
|
48
|
+
expect(subject.info[:email]).to eq(profile['email'])
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'user_email' do
|
53
|
+
before do
|
54
|
+
allow(subject).to receive(:raw_info).and_return(raw_info_hash)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'returns user email from first profile' do
|
58
|
+
expect(subject.user_email).to eq(profile['email'])
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe 'request_phase' do
|
63
|
+
context 'with a specified callback_url in the params' do
|
64
|
+
before do
|
65
|
+
params = { 'callback_url' => 'http://foo.dev/auth/wrike/foobar' }
|
66
|
+
allow(subject).to receive(:request) do
|
67
|
+
double('Request', params: params)
|
68
|
+
end
|
69
|
+
allow(subject).to receive(:session) do
|
70
|
+
double('Session', :[] => { 'callback_url' => params['callback_url'] })
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'returns the correct callback_path' do
|
75
|
+
expect(subject.callback_path).to eq '/auth/wrike/callback'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'with no callback_url set' do
|
80
|
+
it 'returns the default callback_path value' do
|
81
|
+
expect(subject.callback_path).to eq '/auth/wrike/callback'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
def raw_info_hash
|
90
|
+
{
|
91
|
+
"id" => "KUAJ25LC",
|
92
|
+
"firstName" => "Test",
|
93
|
+
"lastName" => "User",
|
94
|
+
"type" => "Person",
|
95
|
+
"profiles" => [
|
96
|
+
{
|
97
|
+
"accountId" => "IEAGIITR",
|
98
|
+
"email" => "test.user@myapp.com",
|
99
|
+
"role" => "User",
|
100
|
+
"external" => false,
|
101
|
+
"admin" => false,
|
102
|
+
"owner" => true
|
103
|
+
}
|
104
|
+
],
|
105
|
+
"avatarUrl" => "https://www.wrike.com/avatars//7E/A2/Box_ffdf2a2e_84-84_v1.png",
|
106
|
+
"timezone" => "Europe/Moscow",
|
107
|
+
"locale" => "en",
|
108
|
+
"deleted" => false,
|
109
|
+
"me" => true
|
110
|
+
}
|
111
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
$:.unshift File.expand_path('..', __FILE__)
|
2
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
|
+
require 'rspec'
|
4
|
+
require 'rack/test'
|
5
|
+
require 'webmock/rspec'
|
6
|
+
require 'omniauth'
|
7
|
+
require 'omniauth-wrike'
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.include WebMock::API
|
11
|
+
config.include Rack::Test::Methods
|
12
|
+
config.extend OmniAuth::Test::StrategyMacros, type: :strategy
|
13
|
+
config.expect_with :rspec do |c|
|
14
|
+
c.syntax = :expect
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-wrike
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Puelpan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth-oauth2
|
@@ -32,12 +32,15 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- ".gitignore"
|
35
|
+
- ".rspec"
|
35
36
|
- Gemfile
|
36
37
|
- README.md
|
37
38
|
- lib/omniauth-wrike.rb
|
38
39
|
- lib/omniauth-wrike/version.rb
|
39
40
|
- lib/omniauth/strategies/wrike.rb
|
40
41
|
- omniauth-wrike.gemspec
|
42
|
+
- spec/omniauth/strategies/wrike_spec.rb
|
43
|
+
- spec/spec_helper.rb
|
41
44
|
homepage: https://github.com/Jpuelpan/omniauth-wrike
|
42
45
|
licenses:
|
43
46
|
- MIT
|
@@ -63,3 +66,4 @@ signing_key:
|
|
63
66
|
specification_version: 4
|
64
67
|
summary: Wrike strategy for Omniauth.
|
65
68
|
test_files: []
|
69
|
+
has_rdoc:
|