spearly-sdk-ruby 0.9.0 → 0.11.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,150 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Spearly::Auth::Token do
6
+ let!(:connection_double) { instance_double(Faraday::Connection) }
7
+
8
+ before do
9
+ stub_const('ENV', { 'SPEARLY_API_URL' => 'https://api.spearly.test' })
10
+
11
+ allow(Faraday).to receive(:new).and_return(connection_double)
12
+ end
13
+
14
+ describe '.get_token_info()' do
15
+ let!(:response_double) { instance_double(Faraday::Response, status: 200, body: { 'resource_owner_id' => 'token_1' }.to_json) }
16
+ let!(:client) { Spearly::Auth::Client.new('token') }
17
+
18
+ before do
19
+ allow(connection_double).to receive(:run_request).and_return(response_double)
20
+ end
21
+
22
+ it 'makes GET request to /oauth/token/info' do
23
+ uri_parsed = Addressable::URI.parse('/oauth/token/info').normalize.to_s
24
+
25
+ expect(connection_double).to receive(:run_request).with(:get,
26
+ uri_parsed,
27
+ nil,
28
+ 'Accept' => 'application/vnd.spearly.v2+json',
29
+ 'Authorization' => 'token')
30
+
31
+ client.get_token_info
32
+ end
33
+
34
+ it 'returns data array if status is 200' do
35
+ res = client.get_token_info
36
+
37
+ expect(res).to eq('resource_owner_id' => 'token_1')
38
+ end
39
+
40
+ it 'throws AuthorizationError if 401' do
41
+ response_double = instance_double(Faraday::Response, status: 401)
42
+
43
+ allow(connection_double).to receive(:run_request).and_return(response_double)
44
+
45
+ expect do
46
+ client.get_token_info
47
+ end.to raise_error(Spearly::Auth::AuthorizationError)
48
+ end
49
+
50
+ it 'throws NotFoundError if 404' do
51
+ response_double = instance_double(Faraday::Response, status: 404)
52
+
53
+ allow(connection_double).to receive(:run_request).and_return(response_double)
54
+
55
+ expect do
56
+ client.get_token_info
57
+ end.to raise_error(Spearly::Auth::NotFoundError)
58
+ end
59
+
60
+ it 'throws ServerError if 500' do
61
+ response_double = instance_double(Faraday::Response, status: 500)
62
+
63
+ allow(connection_double).to receive(:run_request).and_return(response_double)
64
+
65
+ expect do
66
+ client.get_token_info
67
+ end.to raise_error(Spearly::Auth::ServerError)
68
+ end
69
+
70
+ it 'throws ServiceUnavailableError if 503' do
71
+ response_double = instance_double(Faraday::Response, status: 503)
72
+
73
+ allow(connection_double).to receive(:run_request).and_return(response_double)
74
+
75
+ expect do
76
+ client.get_token_info
77
+ end.to raise_error(Spearly::Auth::ServiceUnavailableError)
78
+ end
79
+ end
80
+
81
+ describe '.revoke_token()' do
82
+ let!(:response_double) { instance_double(Faraday::Response, status: 200, body: {}.to_json) }
83
+ let!(:access_token) { 'Bearer asdf1234' }
84
+ let!(:client) { Spearly::Auth::Client.new(access_token) }
85
+
86
+ let!(:params) do
87
+ {
88
+ client_id: 'client_1',
89
+ client_secret: 'client_s3cr3t',
90
+ token: access_token.gsub(/^Bearer /i, '')
91
+ }
92
+ end
93
+
94
+ before do
95
+ allow(connection_double).to receive(:run_request).and_return(response_double)
96
+ end
97
+
98
+ it 'makes GET request to /oauth/revoke' do
99
+ uri_parsed = Addressable::URI.parse('/oauth/revoke').normalize.to_s
100
+
101
+ expect(connection_double).to receive(:run_request).with(:post,
102
+ uri_parsed,
103
+ params,
104
+ 'Accept' => 'application/vnd.spearly.v2+json',
105
+ 'Authorization' => access_token)
106
+
107
+ client.revoke_token(params.slice(:client_id, :client_secret))
108
+ end
109
+
110
+ it 'throws AuthorizationError if 401' do
111
+ response_double = instance_double(Faraday::Response, status: 401)
112
+
113
+ allow(connection_double).to receive(:run_request).and_return(response_double)
114
+
115
+ expect do
116
+ client.revoke_token(params.slice(:client_id, :client_secret))
117
+ end.to raise_error(Spearly::Auth::AuthorizationError)
118
+ end
119
+
120
+ it 'throws NotFoundError if 404' do
121
+ response_double = instance_double(Faraday::Response, status: 404)
122
+
123
+ allow(connection_double).to receive(:run_request).and_return(response_double)
124
+
125
+ expect do
126
+ client.revoke_token(params.slice(:client_id, :client_secret))
127
+ end.to raise_error(Spearly::Auth::NotFoundError)
128
+ end
129
+
130
+ it 'throws ServerError if 500' do
131
+ response_double = instance_double(Faraday::Response, status: 500)
132
+
133
+ allow(connection_double).to receive(:run_request).and_return(response_double)
134
+
135
+ expect do
136
+ client.revoke_token(params.slice(:client_id, :client_secret))
137
+ end.to raise_error(Spearly::Auth::ServerError)
138
+ end
139
+
140
+ it 'throws ServiceUnavailableError if 503' do
141
+ response_double = instance_double(Faraday::Response, status: 503)
142
+
143
+ allow(connection_double).to receive(:run_request).and_return(response_double)
144
+
145
+ expect do
146
+ client.revoke_token(params.slice(:client_id, :client_secret))
147
+ end.to raise_error(Spearly::Auth::ServiceUnavailableError)
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,168 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Spearly::Auth::User do
6
+ let!(:connection_double) { instance_double(Faraday::Connection) }
7
+
8
+ before do
9
+ stub_const('ENV', { 'SPEARLY_API_URL' => 'https://api.spearly.test' })
10
+
11
+ allow(Faraday).to receive(:new).and_return(connection_double)
12
+ end
13
+
14
+ describe '.get_user()' do
15
+ let!(:response_double) { instance_double(Faraday::Response, status: 200, body: { 'data' => { 'id' => 'user_1' } }.to_json) }
16
+ let!(:user_id) { 'user_1' }
17
+ let!(:client) { Spearly::Auth::Client.new('token') }
18
+
19
+ before do
20
+ allow(connection_double).to receive(:run_request).and_return(response_double)
21
+ end
22
+
23
+ it 'makes GET request to /users/:user_id' do
24
+ uri_parsed = Addressable::URI.parse("/users/#{user_id}").normalize.to_s
25
+
26
+ expect(connection_double).to receive(:run_request).with(:get,
27
+ uri_parsed,
28
+ nil,
29
+ 'Accept' => 'application/vnd.spearly.v2+json',
30
+ 'Authorization' => 'token')
31
+
32
+ client.get_user(user_id)
33
+ end
34
+
35
+ it 'returns data array if status is 200' do
36
+ res = client.get_user(user_id)
37
+
38
+ expect(res).to eq('data' => { 'id' => 'user_1' })
39
+ end
40
+
41
+ it 'returns errors object if 422' do
42
+ response_double = instance_double(Faraday::Response, status: 422, body: { 'errors' => { 'owner' => ["can't own more than 2 free teams"] } }.to_json)
43
+
44
+ allow(connection_double).to receive(:run_request).and_return(response_double)
45
+
46
+ res = client.get_user(user_id)
47
+
48
+ expect(res['errors']).to eq('owner' => ["can't own more than 2 free teams"])
49
+ end
50
+
51
+ it 'throws AuthorizationError if 401' do
52
+ response_double = instance_double(Faraday::Response, status: 401)
53
+
54
+ allow(connection_double).to receive(:run_request).and_return(response_double)
55
+
56
+ expect do
57
+ client.get_user(user_id)
58
+ end.to raise_error(Spearly::Auth::AuthorizationError)
59
+ end
60
+
61
+ it 'throws NotFoundError if 404' do
62
+ response_double = instance_double(Faraday::Response, status: 404)
63
+
64
+ allow(connection_double).to receive(:run_request).and_return(response_double)
65
+
66
+ expect do
67
+ client.get_user(user_id)
68
+ end.to raise_error(Spearly::Auth::NotFoundError)
69
+ end
70
+
71
+ it 'throws ServerError if 500' do
72
+ response_double = instance_double(Faraday::Response, status: 500)
73
+
74
+ allow(connection_double).to receive(:run_request).and_return(response_double)
75
+
76
+ expect do
77
+ client.get_user(user_id)
78
+ end.to raise_error(Spearly::Auth::ServerError)
79
+ end
80
+
81
+ it 'throws ServiceUnavailableError if 503' do
82
+ response_double = instance_double(Faraday::Response, status: 503)
83
+
84
+ allow(connection_double).to receive(:run_request).and_return(response_double)
85
+
86
+ expect do
87
+ client.get_user(user_id)
88
+ end.to raise_error(Spearly::Auth::ServiceUnavailableError)
89
+ end
90
+ end
91
+
92
+ describe '.get_profile()' do
93
+ let!(:response_double) { instance_double(Faraday::Response, status: 200, body: { 'data' => { 'id' => 'user_1' } }.to_json) }
94
+ let!(:client) { Spearly::Auth::Client.new('token') }
95
+
96
+ before do
97
+ allow(connection_double).to receive(:run_request).and_return(response_double)
98
+ end
99
+
100
+ it 'makes GET request to /profile' do
101
+ uri_parsed = Addressable::URI.parse('/profile').normalize.to_s
102
+
103
+ expect(connection_double).to receive(:run_request).with(:get,
104
+ uri_parsed,
105
+ nil,
106
+ 'Accept' => 'application/vnd.spearly.v2+json',
107
+ 'Authorization' => 'token')
108
+
109
+ client.get_profile
110
+ end
111
+
112
+ it 'returns data array if status is 200' do
113
+ res = client.get_profile
114
+
115
+ expect(res).to eq('data' => { 'id' => 'user_1' })
116
+ end
117
+
118
+ it 'returns errors object if 422' do
119
+ response_double = instance_double(Faraday::Response, status: 422, body: { 'errors' => { 'owner' => ["can't own more than 2 free teams"] } }.to_json)
120
+
121
+ allow(connection_double).to receive(:run_request).and_return(response_double)
122
+
123
+ res = client.get_profile
124
+
125
+ expect(res['errors']).to eq('owner' => ["can't own more than 2 free teams"])
126
+ end
127
+
128
+ it 'throws AuthorizationError if 401' do
129
+ response_double = instance_double(Faraday::Response, status: 401)
130
+
131
+ allow(connection_double).to receive(:run_request).and_return(response_double)
132
+
133
+ expect do
134
+ client.get_profile
135
+ end.to raise_error(Spearly::Auth::AuthorizationError)
136
+ end
137
+
138
+ it 'throws NotFoundError if 404' do
139
+ response_double = instance_double(Faraday::Response, status: 404)
140
+
141
+ allow(connection_double).to receive(:run_request).and_return(response_double)
142
+
143
+ expect do
144
+ client.get_profile
145
+ end.to raise_error(Spearly::Auth::NotFoundError)
146
+ end
147
+
148
+ it 'throws ServerError if 500' do
149
+ response_double = instance_double(Faraday::Response, status: 500)
150
+
151
+ allow(connection_double).to receive(:run_request).and_return(response_double)
152
+
153
+ expect do
154
+ client.get_profile
155
+ end.to raise_error(Spearly::Auth::ServerError)
156
+ end
157
+
158
+ it 'throws ServiceUnavailableError if 503' do
159
+ response_double = instance_double(Faraday::Response, status: 503)
160
+
161
+ allow(connection_double).to receive(:run_request).and_return(response_double)
162
+
163
+ expect do
164
+ client.get_profile
165
+ end.to raise_error(Spearly::Auth::ServiceUnavailableError)
166
+ end
167
+ end
168
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'pry'
4
- require 'rails'
5
4
  require 'spearly'
6
5
 
7
6
  RSpec.configure do |config|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spearly-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spearly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-05 00:00:00.000000000 Z
11
+ date: 2023-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -72,90 +72,6 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0.15'
75
- - !ruby/object:Gem::Dependency
76
- name: bundler-audit
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '0.9'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '0.9'
89
- - !ruby/object:Gem::Dependency
90
- name: fuubar
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '2.5'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '2.5'
103
- - !ruby/object:Gem::Dependency
104
- name: pry
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '0.13'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '0.13'
117
- - !ruby/object:Gem::Dependency
118
- name: rspec
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '3.10'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '3.10'
131
- - !ruby/object:Gem::Dependency
132
- name: rubocop
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '1.15'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '1.15'
145
- - !ruby/object:Gem::Dependency
146
- name: rubocop-rspec
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '2.3'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '2.3'
159
75
  description:
160
76
  email:
161
77
  - dj@unimal.jp
@@ -179,10 +95,9 @@ files:
179
95
  - lib/spearly/auth.rb
180
96
  - lib/spearly/auth/authorizer.rb
181
97
  - lib/spearly/auth/client.rb
182
- - lib/spearly/auth/engine.rb
183
- - lib/spearly/auth/oauth_user.rb
184
- - lib/spearly/auth/rails/helpers.rb
185
98
  - lib/spearly/auth/team.rb
99
+ - lib/spearly/auth/team_member.rb
100
+ - lib/spearly/auth/team_subscription.rb
186
101
  - lib/spearly/auth/token.rb
187
102
  - lib/spearly/auth/user.rb
188
103
  - lib/spearly/cloud.rb
@@ -190,6 +105,11 @@ files:
190
105
  - lib/spearly/version.rb
191
106
  - spearly.gemspec
192
107
  - spec/spearly/auth/client_spec.rb
108
+ - spec/spearly/auth/team_member_spec.rb
109
+ - spec/spearly/auth/team_spec.rb
110
+ - spec/spearly/auth/team_subscription_spec.rb
111
+ - spec/spearly/auth/token_spec.rb
112
+ - spec/spearly/auth/user_spec.rb
193
113
  - spec/spearly_spec.rb
194
114
  - spec/spec_helper.rb
195
115
  homepage: https://github.com/unimal-jp/spearly-sdk-ruby
@@ -197,7 +117,7 @@ licenses: []
197
117
  metadata:
198
118
  homepage_uri: https://github.com/unimal-jp/spearly-sdk-ruby
199
119
  source_code_uri: https://github.com/unimal-jp/spearly-sdk-ruby
200
- changelog_uri: https://github.com/unimal-jp/spearly-sdk-ruby/blob/v0.9.0/CHANGELOG.md
120
+ changelog_uri: https://github.com/unimal-jp/spearly-sdk-ruby/blob/v0.11.0/CHANGELOG.md
201
121
  rubygems_mfa_required: 'true'
202
122
  post_install_message:
203
123
  rdoc_options: []
@@ -207,14 +127,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
207
127
  requirements:
208
128
  - - ">="
209
129
  - !ruby/object:Gem::Version
210
- version: 2.7.0
130
+ version: 3.1.0
211
131
  required_rubygems_version: !ruby/object:Gem::Requirement
212
132
  requirements:
213
133
  - - ">="
214
134
  - !ruby/object:Gem::Version
215
135
  version: '0'
216
136
  requirements: []
217
- rubygems_version: 3.3.7
137
+ rubygems_version: 3.3.26
218
138
  signing_key:
219
139
  specification_version: 4
220
140
  summary: Spearly SDK for Ruby
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spearly
4
- module Auth
5
- class Engine < ::Rails::Engine
6
- initializer 'spearly.helpers' do
7
- ActiveSupport.on_load(:action_controller) do
8
- include Spearly::Auth::Rails::Helpers
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'addressable/uri'
4
- require 'faraday'
5
-
6
- module Spearly
7
- module Auth
8
- class OauthUser
9
- attr_reader :data
10
-
11
- def initialize(data)
12
- @data = data
13
- end
14
-
15
- def method_missing(name, *_args)
16
- @data[name.to_s]
17
- end
18
-
19
- def respond_to_missing?(_name, *_args)
20
- true
21
- end
22
-
23
- def to_json(*_args)
24
- @data.to_json
25
- end
26
-
27
- def as_json
28
- @data.as_json
29
- end
30
- end
31
- end
32
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spearly
4
- module Auth
5
- module Rails
6
- module Helpers
7
- def spearly_authorize!
8
- raise Spearly::Auth::AuthorizationError unless spearly_token
9
- end
10
-
11
- private
12
-
13
- def spearly_token
14
- @spearly_token ||= begin
15
- token = Spearly::Auth::Token.new(request.authorization)
16
-
17
- token.info ? token : nil
18
- end
19
- end
20
-
21
- def spearly_user
22
- @spearly_user ||= begin
23
- user = Spearly::Auth::User.new(request.authorization)
24
-
25
- user.find ? user : nil
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end