pisoni 1.24.0 → 1.25.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/CHANGELOG.md +7 -0
- data/lib/3scale/core/application.rb +23 -0
- data/lib/3scale/core/user.rb +11 -0
- data/lib/3scale/core/version.rb +1 -1
- data/spec/application_spec.rb +73 -2
- data/spec/service_error_spec.rb +4 -3
- data/spec/service_spec.rb +10 -11
- data/spec/transaction_spec.rb +2 -2
- data/spec/user_spec.rb +28 -0
- data/spec/utilization_spec.rb +2 -2
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9b028a5986ee4a1afc4e1a07c3029e30861b4563b936084fc0c8f9c684b78f3
|
4
|
+
data.tar.gz: '00391525ce6ea29046aed52421a9df0882bf878d0e9e8a25e336efb4674626e3'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2bd6747faf1121c04e66149bf60cbf0b246e5dffc893fb599988034b2609cf8fee2e4fafd54bdcfdbb7a246c0aae32958f93bb5e3d009f8da4645f10b7b3edb
|
7
|
+
data.tar.gz: fced6e7795fffaf5489d63bb41cf911a1ad661aeb6e96bb99d8a897af6c9e04a903e7b64b687685c6f533329f9c9e32f82bd3a17c125eef7a71d285951d5ac4b
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
|
3
3
|
Notable changes to Pisoni will be tracked in this document.
|
4
4
|
|
5
|
+
## 1.25.0 - 2019-02-20
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- Applications can now be activated/deactivated. [#12](https://github.com/3scale/pisoni/pull/12)
|
10
|
+
- Users of a service can now be deleted. [#15](https://github.com/3scale/pisoni/pull/15)
|
11
|
+
|
5
12
|
## 1.24.0 - 2018-06-29
|
6
13
|
|
7
14
|
### Added
|
@@ -38,6 +38,23 @@ module ThreeScale
|
|
38
38
|
api_delete({}, uri: app_uri(service_id, id))
|
39
39
|
end
|
40
40
|
|
41
|
+
def initialize(attributes = {})
|
42
|
+
@state = :active
|
43
|
+
super(attributes)
|
44
|
+
end
|
45
|
+
|
46
|
+
def activate
|
47
|
+
self.state = :active
|
48
|
+
end
|
49
|
+
|
50
|
+
def deactivate
|
51
|
+
self.state = :suspended
|
52
|
+
end
|
53
|
+
|
54
|
+
def active?
|
55
|
+
state == :active
|
56
|
+
end
|
57
|
+
|
41
58
|
def save
|
42
59
|
api_save uri: self.class.send(:app_uri, service_id, id)
|
43
60
|
end
|
@@ -62,6 +79,12 @@ module ThreeScale
|
|
62
79
|
api_delete({}, uri: key_uri(service_id, user_key))
|
63
80
|
end
|
64
81
|
|
82
|
+
private
|
83
|
+
|
84
|
+
def state=(value)
|
85
|
+
# only :active or nil will be considered as :active
|
86
|
+
@state = value.nil? || value.to_sym == :active ? :active : :suspended
|
87
|
+
end
|
65
88
|
end
|
66
89
|
end
|
67
90
|
end
|
data/lib/3scale/core/user.rb
CHANGED
@@ -10,6 +10,11 @@ module ThreeScale
|
|
10
10
|
end
|
11
11
|
private_class_method :base_uri
|
12
12
|
|
13
|
+
def self.users_base_uri(service_id)
|
14
|
+
"#{default_uri}#{service_id}/users"
|
15
|
+
end
|
16
|
+
private_class_method :users_base_uri
|
17
|
+
|
13
18
|
def self.check_params(service_id, username)
|
14
19
|
raise UserRequiresUsername if username.nil? || username == ''.freeze
|
15
20
|
raise UserRequiresServiceId if service_id.nil? || service_id == ''.freeze
|
@@ -42,6 +47,12 @@ module ThreeScale
|
|
42
47
|
check_params service_id, username
|
43
48
|
api_delete({}, uri: base_uri(service_id, username))
|
44
49
|
end
|
50
|
+
|
51
|
+
def self.delete_all_for_service(service_id)
|
52
|
+
raise UserRequiresServiceId if service_id.nil? || service_id == ''.freeze
|
53
|
+
|
54
|
+
api_delete({}, uri: users_base_uri(service_id))
|
55
|
+
end
|
45
56
|
end
|
46
57
|
end
|
47
58
|
end
|
data/lib/3scale/core/version.rb
CHANGED
data/spec/application_spec.rb
CHANGED
@@ -20,7 +20,7 @@ module ThreeScale
|
|
20
20
|
|
21
21
|
application.service_id.must_equal '2001'
|
22
22
|
application.id.must_equal '8011'
|
23
|
-
application.
|
23
|
+
application.active?.must_equal false
|
24
24
|
application.plan_id.must_equal '3066'
|
25
25
|
application.plan_name.must_equal 'crappy'
|
26
26
|
application.redirect_url.must_equal 'blah'
|
@@ -93,7 +93,7 @@ module ThreeScale
|
|
93
93
|
it 'returns an Application object with correct fields' do
|
94
94
|
@app.id.must_equal '8011'
|
95
95
|
@app.service_id.must_equal '2001'
|
96
|
-
@app.
|
96
|
+
@app.active?.must_equal false
|
97
97
|
@app.plan_id.must_equal '3066'
|
98
98
|
@app.plan_name.must_equal 'crappy'
|
99
99
|
@app.redirect_url.must_equal 'blah'
|
@@ -152,6 +152,77 @@ module ThreeScale
|
|
152
152
|
newapp.plan_name.must_equal 'some_other_plan'
|
153
153
|
end
|
154
154
|
|
155
|
+
it 'save active application' do
|
156
|
+
@app.activate
|
157
|
+
@app.save
|
158
|
+
newapp = Application.load @app.service_id, @app.id
|
159
|
+
newapp.active?.must_equal true
|
160
|
+
end
|
161
|
+
|
162
|
+
it 'save inactive application' do
|
163
|
+
@app.deactivate
|
164
|
+
@app.save
|
165
|
+
newapp = Application.load @app.service_id, @app.id
|
166
|
+
newapp.active?.must_equal false
|
167
|
+
end
|
168
|
+
|
169
|
+
it 'save application with no explicit state' do
|
170
|
+
svc_id = 2001
|
171
|
+
app_id = 9011
|
172
|
+
# Make sure there is nothing in db
|
173
|
+
Application.delete(svc_id, app_id)
|
174
|
+
Application.load(svc_id, app_id).must_be_nil
|
175
|
+
app_def_state = Application.new service_id: svc_id, id: app_id
|
176
|
+
app_def_state.save
|
177
|
+
newapp = Application.load app_def_state.service_id, app_def_state.id
|
178
|
+
newapp.wont_be_nil
|
179
|
+
newapp.active?.must_equal true
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
describe '.active?' do
|
184
|
+
it 'should be active when application is initialized as active' do
|
185
|
+
[
|
186
|
+
{ state: :active },
|
187
|
+
{ state: 'active' },
|
188
|
+
# even when state is not set
|
189
|
+
{},
|
190
|
+
# even when state is intentionally set as nil
|
191
|
+
{ state: nil }
|
192
|
+
].each do |app_attrs|
|
193
|
+
Application.new(app_attrs).active?.must_equal true
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'should be inactive when application is initialized as disabled' do
|
198
|
+
[
|
199
|
+
{ state: :suspended },
|
200
|
+
{ state: 'suspended' },
|
201
|
+
{ state: :something },
|
202
|
+
{ state: :disable },
|
203
|
+
{ state: :disabled },
|
204
|
+
{ state: '1' },
|
205
|
+
{ state: '0' },
|
206
|
+
{ state: 'true' },
|
207
|
+
{ state: 'false' }
|
208
|
+
].each do |app_attrs|
|
209
|
+
Application.new(app_attrs).active?.must_equal false
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
it 'should be active when the application is activated' do
|
214
|
+
app = Application.new(state: :disable)
|
215
|
+
app.active?.must_equal false
|
216
|
+
app.activate
|
217
|
+
app.active?.must_equal true
|
218
|
+
end
|
219
|
+
|
220
|
+
it 'should be inactive when the application is deactivated' do
|
221
|
+
app = Application.new(state: :active)
|
222
|
+
app.active?.must_equal true
|
223
|
+
app.deactivate
|
224
|
+
app.active?.must_equal false
|
225
|
+
end
|
155
226
|
end
|
156
227
|
|
157
228
|
describe 'by_key' do
|
data/spec/service_error_spec.rb
CHANGED
@@ -4,7 +4,8 @@ require_relative './private_endpoints/service_error'
|
|
4
4
|
module ThreeScale
|
5
5
|
module Core
|
6
6
|
describe ServiceError do
|
7
|
-
let(:service_id) { '
|
7
|
+
let(:service_id) { '7575_service_error_spec' }
|
8
|
+
let(:provider_key) { 'foo_service_error_spec' }
|
8
9
|
let(:non_existing_service_id) { service_id.to_i.succ.to_s }
|
9
10
|
|
10
11
|
describe '.load_all' do
|
@@ -17,7 +18,7 @@ module ThreeScale
|
|
17
18
|
|
18
19
|
before do
|
19
20
|
Service.delete_by_id!(service_id)
|
20
|
-
Service.save!(provider_key:
|
21
|
+
Service.save!(provider_key: provider_key, id: service_id)
|
21
22
|
ServiceError.delete_all(service_id)
|
22
23
|
ServiceError.save(service_id, error_messages)
|
23
24
|
end
|
@@ -100,7 +101,7 @@ module ThreeScale
|
|
100
101
|
describe '.delete_all' do
|
101
102
|
before do
|
102
103
|
Service.delete_by_id!(service_id)
|
103
|
-
Service.save!(provider_key:
|
104
|
+
Service.save!(provider_key: provider_key, id: service_id)
|
104
105
|
ServiceError.delete_all(service_id)
|
105
106
|
end
|
106
107
|
|
data/spec/service_spec.rb
CHANGED
@@ -6,10 +6,10 @@ module ThreeScale
|
|
6
6
|
let(:default_service_id) { 7001 }
|
7
7
|
let(:non_default_service_id) { default_service_id.succ }
|
8
8
|
let(:non_existent_service_id) { non_default_service_id.succ }
|
9
|
-
let(:default_provider_key) { '
|
10
|
-
let(:other_provider_key) { '
|
11
|
-
let(:another_provider_key) { '
|
12
|
-
let(:non_existent_provider_key) { '
|
9
|
+
let(:default_provider_key) { 'foo_service_spec' }
|
10
|
+
let(:other_provider_key) { 'bazinga_service_spec' }
|
11
|
+
let(:another_provider_key) { 'bar_service_spec' }
|
12
|
+
let(:non_existent_provider_key) { 'bunga_service_spec' }
|
13
13
|
|
14
14
|
before do
|
15
15
|
# We create a new service for our provider as the default, then
|
@@ -62,23 +62,22 @@ module ThreeScale
|
|
62
62
|
end
|
63
63
|
|
64
64
|
describe '.delete_by_id!' do
|
65
|
-
before do
|
66
|
-
Service.save! provider_key: default_provider_key,
|
67
|
-
id: default_service_id,
|
68
|
-
default_service: true
|
69
|
-
end
|
70
|
-
|
71
65
|
it 'returns true if deleting a non-default service' do
|
72
66
|
Service.save! provider_key: default_provider_key,
|
73
67
|
id: non_default_service_id
|
74
68
|
Service.delete_by_id!(non_default_service_id).must_equal true
|
75
69
|
end
|
76
70
|
|
77
|
-
it 'raises an exception when deleting a default service' do
|
71
|
+
it 'raises an exception when deleting a default service and not unique' do
|
72
|
+
Service.save! provider_key: default_provider_key, id: non_default_service_id
|
78
73
|
lambda do
|
79
74
|
Service.delete_by_id! default_service_id
|
80
75
|
end.must_raise ServiceIsDefaultService
|
81
76
|
end
|
77
|
+
|
78
|
+
it 'returns true when deleting a default service and is unique for the provider' do
|
79
|
+
Service.delete_by_id!(default_service_id).must_equal true
|
80
|
+
end
|
82
81
|
end
|
83
82
|
|
84
83
|
describe '.save!' do
|
data/spec/transaction_spec.rb
CHANGED
@@ -6,11 +6,11 @@ module ThreeScale
|
|
6
6
|
describe Transaction do
|
7
7
|
before do
|
8
8
|
Service.delete_by_id!(service_id)
|
9
|
-
Service.save!(provider_key: '
|
9
|
+
Service.save!(provider_key: 'foo_transaction_spec', id: service_id)
|
10
10
|
end
|
11
11
|
|
12
12
|
describe '.load_all' do
|
13
|
-
let(:service_id) { '
|
13
|
+
let(:service_id) { '7575_transaction_spec' }
|
14
14
|
let(:non_existing_service_id) { service_id.to_i.succ.to_s }
|
15
15
|
|
16
16
|
before do
|
data/spec/user_spec.rb
CHANGED
@@ -159,6 +159,34 @@ module ThreeScale
|
|
159
159
|
plan_id: plan_id, plan_name: plan_name
|
160
160
|
end
|
161
161
|
end
|
162
|
+
|
163
|
+
describe '.delete_all_for_service' do
|
164
|
+
let(:service_id) { '2001_delete_all_for_service' }
|
165
|
+
let(:provider_key) { 'provider_for_delete_all_for_service' }
|
166
|
+
let(:state) { :active }
|
167
|
+
|
168
|
+
before do
|
169
|
+
Service.save! provider_key: provider_key, id: service_id, default_service: true
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'deletes all users' do
|
173
|
+
user01 = User.save!(service_id: service_id, username: 'username01', state: :active,
|
174
|
+
plan_id: 'plan_id_01', plan_name: 'plan_01')
|
175
|
+
user02 = User.save!(service_id: service_id, username: 'username02', state: :active,
|
176
|
+
plan_id: 'plan_id_02', plan_name: 'plan_02')
|
177
|
+
User.delete_all_for_service(service_id).must_equal true
|
178
|
+
User.load(service_id, user01.username).must_be_nil
|
179
|
+
User.load(service_id, user02.username).must_be_nil
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'raises error on empty service' do
|
183
|
+
proc { User.delete_all_for_service('') }.must_raise UserRequiresServiceId
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'raises error on nil service' do
|
187
|
+
proc { User.delete_all_for_service(nil) }.must_raise UserRequiresServiceId
|
188
|
+
end
|
189
|
+
end
|
162
190
|
end
|
163
191
|
end
|
164
192
|
end
|
data/spec/utilization_spec.rb
CHANGED
@@ -3,9 +3,9 @@ require_relative './spec_helper'
|
|
3
3
|
module ThreeScale
|
4
4
|
module Core
|
5
5
|
describe Utilization do
|
6
|
-
let(:service_id) { '
|
6
|
+
let(:service_id) { '1001_utilization_spec' }
|
7
7
|
let(:non_existing_service_id) { service_id.to_i.succ.to_s }
|
8
|
-
let(:provider_key) { '
|
8
|
+
let(:provider_key) { 'foo_utilization_spec' }
|
9
9
|
|
10
10
|
let(:app_id) { '2001' }
|
11
11
|
let(:non_existing_app_id) { app_id.to_i.succ.to_s }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pisoni
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.25.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alejandro Martinez Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -158,8 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
requirements: []
|
161
|
-
|
162
|
-
rubygems_version: 2.7.7
|
161
|
+
rubygems_version: 3.0.1
|
163
162
|
signing_key:
|
164
163
|
specification_version: 4
|
165
164
|
summary: Client for the Apisonator internal API for model data
|