minty 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +4 -16
- data/Gemfile.lock +28 -208
- data/README.md +58 -57
- data/Rakefile +4 -27
- data/docs/DefaultApi.md +217 -0
- data/docs/RedirectUrl.md +18 -0
- data/git_push.sh +57 -0
- data/lib/minty/api/default_api.rb +210 -0
- data/lib/minty/api_client.rb +388 -0
- data/lib/minty/api_error.rb +53 -0
- data/lib/minty/configuration.rb +275 -0
- data/lib/minty/models/redirect_url.rb +216 -0
- data/lib/minty/version.rb +9 -3
- data/lib/minty.rb +33 -7
- data/minty.gemspec +19 -32
- data/pkg/minty-1.1.0.gem +0 -0
- data/publish_rubygem.sh +1 -1
- data/spec/api/default_api_spec.rb +65 -0
- data/spec/api_client_spec.rb +222 -0
- data/spec/configuration_spec.rb +38 -0
- data/spec/models/redirect_url_spec.rb +28 -0
- data/spec/spec_helper.rb +95 -63
- metadata +37 -292
- data/.bundle/config +0 -4
- data/.devcontainer/Dockerfile +0 -19
- data/.devcontainer/devcontainer.json +0 -37
- data/.env.example +0 -2
- data/.gemrelease +0 -2
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -33
- data/.github/dependabot.yml +0 -10
- data/.github/stale.yml +0 -20
- data/.gitignore +0 -18
- data/.rspec +0 -3
- data/.rubocop.yml +0 -9
- data/CODE_OF_CONDUCT.md +0 -3
- data/DEPLOYMENT.md +0 -61
- data/DEVELOPMENT.md +0 -35
- data/EXAMPLES.md +0 -195
- data/Guardfile +0 -39
- data/LICENSE +0 -21
- data/Makefile +0 -5
- data/RUBYGEM.md +0 -9
- data/codecov.yml +0 -22
- data/lib/minty/algorithm.rb +0 -7
- data/lib/minty/api/authentication_endpoints.rb +0 -55
- data/lib/minty/api/v2.rb +0 -8
- data/lib/minty/client.rb +0 -7
- data/lib/minty/exception.rb +0 -58
- data/lib/minty/mixins/api_token_struct.rb +0 -4
- data/lib/minty/mixins/headers.rb +0 -19
- data/lib/minty/mixins/httpproxy.rb +0 -125
- data/lib/minty/mixins/initializer.rb +0 -38
- data/lib/minty/mixins/validation.rb +0 -113
- data/lib/minty/mixins.rb +0 -23
- data/lib/minty_client.rb +0 -4
- data/spec/integration/lib/minty/api/api_authentication_spec.rb +0 -122
- data/spec/integration/lib/minty/minty_client_spec.rb +0 -92
- data/spec/lib/minty/client_spec.rb +0 -223
- data/spec/lib/minty/mixins/httpproxy_spec.rb +0 -658
- data/spec/lib/minty/mixins/initializer_spec.rb +0 -121
- data/spec/lib/minty/mixins/token_management_spec.rb +0 -129
- data/spec/lib/minty/mixins/validation_spec.rb +0 -559
- data/spec/support/credentials.rb +0 -14
- data/spec/support/dummy_class.rb +0 -20
- data/spec/support/dummy_class_for_proxy.rb +0 -6
- data/spec/support/dummy_class_for_restclient.rb +0 -4
- data/spec/support/dummy_class_for_tokens.rb +0 -18
- data/spec/support/import_users.json +0 -13
- data/spec/support/stub_response.rb +0 -3
@@ -1,121 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'timecop'
|
5
|
-
|
6
|
-
class MockClass
|
7
|
-
attr_reader :token
|
8
|
-
|
9
|
-
include Minty::Mixins::Initializer
|
10
|
-
include Minty::Mixins::HTTPProxy
|
11
|
-
include Minty::Mixins::Headers
|
12
|
-
include Minty::Mixins::TokenManagement
|
13
|
-
end
|
14
|
-
|
15
|
-
describe Minty::Mixins::Initializer do
|
16
|
-
let(:params) { { namespace: 'samples.minty.page' } }
|
17
|
-
let(:instance) { DummyClassForProxy.send(:include, described_class).new(params) }
|
18
|
-
let(:time_now) { Time.zone.now }
|
19
|
-
|
20
|
-
context 'api v2' do
|
21
|
-
it 'sets retry_count when passed' do
|
22
|
-
params[:token] = '123'
|
23
|
-
params[:retry_count] = 10
|
24
|
-
|
25
|
-
expect(instance.instance_variable_get('@retry_count')).to eq(10)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context 'token initialization' do
|
30
|
-
before do
|
31
|
-
params[:api_version] = 2
|
32
|
-
Timecop.freeze(time_now)
|
33
|
-
end
|
34
|
-
|
35
|
-
after do
|
36
|
-
Timecop.return
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'sets token when access_token is passed' do
|
40
|
-
params[:access_token] = '123'
|
41
|
-
|
42
|
-
expect(instance.instance_variable_get('@token')).to eq('123')
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'sets token when token is passed' do
|
46
|
-
params[:token] = '123'
|
47
|
-
|
48
|
-
expect(instance.instance_variable_get('@token')).to eq('123')
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'fetches a token if none was given' do
|
52
|
-
params[:client_id] = client_id = 'test_client_id'
|
53
|
-
params[:client_secret] = client_secret = 'test_client_secret'
|
54
|
-
params[:api_identifier] = api_identifier = 'test'
|
55
|
-
|
56
|
-
payload = {
|
57
|
-
grant_type: 'client_credentials',
|
58
|
-
client_id: client_id,
|
59
|
-
client_secret: client_secret,
|
60
|
-
audience: api_identifier
|
61
|
-
}
|
62
|
-
|
63
|
-
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
64
|
-
method: :post,
|
65
|
-
url: 'https://samples.minty.page/oauth/token',
|
66
|
-
payload: payload.to_json
|
67
|
-
))
|
68
|
-
.and_return(StubResponse.new({
|
69
|
-
'access_token' => 'test',
|
70
|
-
'expires_in' => 86_400
|
71
|
-
},
|
72
|
-
true,
|
73
|
-
200))
|
74
|
-
|
75
|
-
expect(instance.instance_variable_get('@token')).to eq('test')
|
76
|
-
expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 86_400)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "doesn't get a new token if one was supplied using 'token'" do
|
80
|
-
params[:token] = 'access-token'
|
81
|
-
|
82
|
-
expect(RestClient::Request).not_to receive(:execute).with(hash_including(
|
83
|
-
method: :post,
|
84
|
-
url: 'https://samples.minty.page/oauth/token'
|
85
|
-
))
|
86
|
-
|
87
|
-
expect(instance.instance_variable_get('@token')).to eq('access-token')
|
88
|
-
expect(instance.instance_variable_get('@token_expires_at')).to eq(Time.now.to_i + 3600)
|
89
|
-
end
|
90
|
-
|
91
|
-
it "doesn't get a new token if one was supplied using 'access_token'" do
|
92
|
-
params[:access_token] = 'access-token'
|
93
|
-
|
94
|
-
expect(RestClient::Request).not_to receive(:execute).with(hash_including(
|
95
|
-
method: :post,
|
96
|
-
url: 'https://samples.minty.page/oauth/token'
|
97
|
-
))
|
98
|
-
|
99
|
-
expect(instance.instance_variable_get('@token')).to eq('access-token')
|
100
|
-
expect(instance.instance_variable_get('@token_expires_at')).to eq(Time.now.to_i + 3600)
|
101
|
-
end
|
102
|
-
|
103
|
-
it 'can supply token_expires_at option' do
|
104
|
-
params[:token] = 'access-token'
|
105
|
-
params[:token_expires_at] = time_now.to_i + 300
|
106
|
-
|
107
|
-
expect(RestClient::Request).not_to receive(:execute).with(hash_including(
|
108
|
-
method: :post,
|
109
|
-
url: 'https://samples.minty.page/oauth/token'
|
110
|
-
))
|
111
|
-
|
112
|
-
expect(instance.instance_variable_get('@token')).to eq('access-token')
|
113
|
-
expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 300)
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'throws if no token or credentials were given' do
|
117
|
-
params[:client_id] = 'test-client-id'
|
118
|
-
expect { instance }.to raise_error(Minty::InvalidCredentials)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
@@ -1,129 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'timecop'
|
5
|
-
|
6
|
-
describe Minty::Mixins::TokenManagement do
|
7
|
-
let(:client_id) { 'test-client-id' }
|
8
|
-
let(:client_secret) { 'test-client-secret' }
|
9
|
-
let(:api_identifier) { 'test-audience' }
|
10
|
-
let(:domain) { 'samples.minty.page' }
|
11
|
-
|
12
|
-
let(:payload) do
|
13
|
-
{
|
14
|
-
grant_type: 'client_credentials',
|
15
|
-
client_id: client_id,
|
16
|
-
client_secret: client_secret,
|
17
|
-
audience: api_identifier
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
let(:params) do
|
22
|
-
{
|
23
|
-
domain: domain,
|
24
|
-
client_id: client_id,
|
25
|
-
client_secret: client_secret,
|
26
|
-
api_identifier: api_identifier
|
27
|
-
}
|
28
|
-
end
|
29
|
-
|
30
|
-
let(:instance) { DummyClassForTokens.send(:include, described_class).new(params) }
|
31
|
-
let(:time_now) { Time.zone.now }
|
32
|
-
|
33
|
-
before :each do
|
34
|
-
Timecop.freeze(time_now)
|
35
|
-
end
|
36
|
-
|
37
|
-
after :each do
|
38
|
-
Timecop.return
|
39
|
-
end
|
40
|
-
|
41
|
-
context 'get_token' do
|
42
|
-
it 'renews the token if there is no token set' do
|
43
|
-
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
44
|
-
method: :post,
|
45
|
-
url: 'https://samples.minty.page/oauth/token',
|
46
|
-
payload: payload.to_json
|
47
|
-
))
|
48
|
-
.and_return(StubResponse.new({
|
49
|
-
'access_token' => 'test',
|
50
|
-
'expires_in' => 86_400
|
51
|
-
},
|
52
|
-
true,
|
53
|
-
200))
|
54
|
-
|
55
|
-
instance.send(:get_token)
|
56
|
-
|
57
|
-
expect(instance.instance_variable_get('@token')).to eq('test')
|
58
|
-
expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 86_400)
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'does not renew the token if the expiry time has not been reached' do
|
62
|
-
params[:token] = 'test-token'
|
63
|
-
params[:token_expires_at] = time_now.to_i + 86_400
|
64
|
-
|
65
|
-
expect(RestClient::Request).not_to receive(:execute).with(hash_including(
|
66
|
-
method: :post,
|
67
|
-
url: 'https://samples.minty.page/oauth/token'
|
68
|
-
))
|
69
|
-
|
70
|
-
instance.send(:get_token)
|
71
|
-
|
72
|
-
expect(instance.instance_variable_get('@token')).to eq('test-token')
|
73
|
-
expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 86_400)
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'renews the token if within 10 seconds of the expiry' do
|
77
|
-
params[:token] = 'test-token'
|
78
|
-
params[:token_expires_at] = time_now.to_i + 5
|
79
|
-
|
80
|
-
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
81
|
-
method: :post,
|
82
|
-
url: 'https://samples.minty.page/oauth/token',
|
83
|
-
payload: payload.to_json
|
84
|
-
))
|
85
|
-
.and_return(StubResponse.new({
|
86
|
-
'access_token' => 'renewed_token',
|
87
|
-
'expires_in' => 86_400
|
88
|
-
},
|
89
|
-
true,
|
90
|
-
200))
|
91
|
-
|
92
|
-
instance.send(:get_token)
|
93
|
-
|
94
|
-
expect(instance.instance_variable_get('@token')).to eq('renewed_token')
|
95
|
-
expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 86_400)
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'renews the token if past the expiry' do
|
99
|
-
params[:token] = 'test-token'
|
100
|
-
params[:token_expires_at] = time_now.to_i - 10
|
101
|
-
|
102
|
-
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
103
|
-
method: :post,
|
104
|
-
url: 'https://samples.minty.page/oauth/token',
|
105
|
-
payload: payload.to_json
|
106
|
-
))
|
107
|
-
.and_return(StubResponse.new({
|
108
|
-
'access_token' => 'renewed_token',
|
109
|
-
'expires_in' => 86_400
|
110
|
-
},
|
111
|
-
true,
|
112
|
-
200))
|
113
|
-
|
114
|
-
instance.send(:get_token)
|
115
|
-
|
116
|
-
expect(instance.instance_variable_get('@token')).to eq('renewed_token')
|
117
|
-
expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 86_400)
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'does not renew existing token if no token_expires_at' do
|
121
|
-
params[:token] = 'test-token'
|
122
|
-
instance.instance_variable_set '@token_expires_at', nil
|
123
|
-
|
124
|
-
expect(RestClient::Request).not_to receive(:execute)
|
125
|
-
|
126
|
-
instance.send(:get_token)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|