forest_liana 6.4.1 → 6.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/forest_liana/smart_actions_controller.rb +1 -4
- data/app/services/forest_liana/apimap_sorter.rb +1 -0
- data/app/services/forest_liana/permissions_checker.rb +19 -14
- data/app/services/forest_liana/token.rb +1 -0
- data/app/services/forest_liana/utils/beta_schema_utils.rb +1 -1
- data/lib/forest_liana/bootstrapper.rb +4 -2
- data/lib/forest_liana/version.rb +1 -1
- data/spec/lib/forest_liana/bootstrapper_spec.rb +12 -0
- data/spec/requests/authentications_spec.rb +2 -1
- data/spec/services/forest_liana/apimap_sorter_spec.rb +6 -4
- data/spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb +9 -3
- data/spec/services/forest_liana/permissions_checker_live_queries_spec.rb +2 -2
- metadata +139 -137
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c09d00ec3f4c4c72cd36b9be6316fc42fa568ad959dbab90645f04c444e9e91
|
4
|
+
data.tar.gz: b01ca1c1b257ed31805deba1bb886dc041ef9545c38f9120f505d8369d066b7d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fc61c7b395475da62ea7da9068941dbf88386a8cd85616568febe897816ab58d1fbef4907ead68be9f2e954afc3a89549015303d1b743e6a684b906a4bf7398
|
7
|
+
data.tar.gz: 31d8fb2855a56dcbd05f6f35c30a63c77843e90adf355aaff95d569a3f70c943acd146cdfa77328dadfd26f8ce816cd3fa557cf8338ce5b2975810ae52c6aa0e
|
@@ -57,11 +57,8 @@ module ForestLiana
|
|
57
57
|
|
58
58
|
# smart action permissions are retrieved from the action's endpoint and http_method
|
59
59
|
def get_smart_action_request_info
|
60
|
-
endpoint = request.fullpath
|
61
|
-
# Trim starting '/'
|
62
|
-
endpoint[0] = '' if endpoint[0] == '/'
|
63
60
|
{
|
64
|
-
endpoint:
|
61
|
+
endpoint: request.fullpath,
|
65
62
|
http_method: request.request_method
|
66
63
|
}
|
67
64
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ForestLiana
|
2
2
|
class PermissionsChecker
|
3
3
|
@@permissions_cached = Hash.new
|
4
|
-
@@
|
4
|
+
@@renderings_cached = Hash.new
|
5
5
|
@@roles_acl_activated = false
|
6
6
|
# TODO: handle cache scopes per rendering
|
7
7
|
@@expiration_in_seconds = (ENV['FOREST_PERMISSIONS_EXPIRATION_IN_SECONDS'] || 3600).to_i
|
@@ -39,13 +39,16 @@ module ForestLiana
|
|
39
39
|
permissions['data'] = ForestLiana::PermissionsFormatter.convert_to_new_format(permissions['data'], @rendering_id)
|
40
40
|
@@permissions_cached[@rendering_id] = permissions
|
41
41
|
end
|
42
|
+
|
43
|
+
# NOTICE: Add stats permissions to the RenderingPermissions
|
44
|
+
permissions['data']['renderings'][@rendering_id]['stats'] = permissions['stats']
|
42
45
|
add_scopes_to_cache(permissions)
|
43
46
|
end
|
44
47
|
|
45
48
|
def add_scopes_to_cache(permissions)
|
46
49
|
permissions['data']['renderings'].keys.each { |rendering_id|
|
47
|
-
@@
|
48
|
-
@@
|
50
|
+
@@renderings_cached[rendering_id] = permissions['data']['renderings'][rendering_id]
|
51
|
+
@@renderings_cached[rendering_id]['last_fetch'] = Time.now
|
49
52
|
} if permissions['data']['renderings']
|
50
53
|
end
|
51
54
|
|
@@ -59,8 +62,6 @@ module ForestLiana
|
|
59
62
|
return stat_with_parameters_allowed?
|
60
63
|
end
|
61
64
|
|
62
|
-
|
63
|
-
|
64
65
|
if permissions && permissions[@collection_name] &&
|
65
66
|
permissions[@collection_name]['collection']
|
66
67
|
if @permission_name === 'actions'
|
@@ -83,21 +84,25 @@ module ForestLiana
|
|
83
84
|
end
|
84
85
|
|
85
86
|
def get_scope_in_permissions
|
86
|
-
@@
|
87
|
-
@@
|
88
|
-
@@
|
87
|
+
@@renderings_cached[@rendering_id] &&
|
88
|
+
@@renderings_cached[@rendering_id][@collection_name] &&
|
89
|
+
@@renderings_cached[@rendering_id][@collection_name]['scope']
|
89
90
|
end
|
90
91
|
|
91
92
|
def scope_cache_expired?
|
92
|
-
return true unless @@
|
93
|
+
return true unless @@renderings_cached[@rendering_id] && @@renderings_cached[@rendering_id]['last_fetch']
|
93
94
|
|
94
|
-
elapsed_seconds = date_difference_in_seconds(Time.now, @@
|
95
|
+
elapsed_seconds = date_difference_in_seconds(Time.now, @@renderings_cached[@rendering_id]['last_fetch'])
|
95
96
|
elapsed_seconds >= @@expiration_in_seconds
|
96
97
|
end
|
97
98
|
|
98
99
|
# This will happen only on rolesACLActivated (as scope cache will always be up to date on disabled)
|
99
100
|
def refresh_scope_cache
|
100
101
|
permissions = ForestLiana::PermissionsGetter::get_permissions_for_rendering(@rendering_id, rendering_specific_only: true)
|
102
|
+
|
103
|
+
# NOTICE: Add stats permissions to the RenderingPermissions
|
104
|
+
permissions['data']['renderings'][@rendering_id]['stats'] = permissions['stats']
|
105
|
+
|
101
106
|
add_scopes_to_cache(permissions)
|
102
107
|
end
|
103
108
|
|
@@ -112,12 +117,12 @@ module ForestLiana
|
|
112
117
|
end
|
113
118
|
|
114
119
|
def get_live_query_permissions_content
|
115
|
-
permissions =
|
120
|
+
permissions = @@renderings_cached[@rendering_id]
|
116
121
|
permissions && permissions['stats'] && permissions['stats']['queries']
|
117
122
|
end
|
118
123
|
|
119
124
|
def get_stat_with_parameters_content(statPermissionType)
|
120
|
-
permissions =
|
125
|
+
permissions = @@renderings_cached[@rendering_id]
|
121
126
|
permissions && permissions['stats'] && permissions['stats'][statPermissionType]
|
122
127
|
end
|
123
128
|
|
@@ -177,7 +182,7 @@ module ForestLiana
|
|
177
182
|
return false unless pool_permissions
|
178
183
|
|
179
184
|
# NOTICE: equivalent to Object.values in js & removes nil values
|
180
|
-
array_permission_infos = @query_request_info.values.
|
185
|
+
array_permission_infos = @query_request_info.values.select{ |x| !x.nil? }
|
181
186
|
|
182
187
|
# NOTICE: Is there any pool_permissions containing the array_permission_infos
|
183
188
|
return pool_permissions.any? {
|
@@ -201,7 +206,7 @@ module ForestLiana
|
|
201
206
|
# Used only for testing purpose
|
202
207
|
def self.empty_cache
|
203
208
|
@@permissions_cached = Hash.new
|
204
|
-
@@
|
209
|
+
@@renderings_cached = Hash.new
|
205
210
|
@@roles_acl_activated = false
|
206
211
|
@@expiration_in_seconds = (ENV['FOREST_PERMISSIONS_EXPIRATION_IN_SECONDS'] || 3600).to_i
|
207
212
|
end
|
@@ -6,7 +6,7 @@ module ForestLiana
|
|
6
6
|
|
7
7
|
return nil unless collection
|
8
8
|
|
9
|
-
collection.actions.find { |action| action.endpoint == endpoint && action.http_method == http_method }
|
9
|
+
collection.actions.find { |action| (action.endpoint == endpoint || "/#{action.endpoint}" == endpoint) && action.http_method == http_method }
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -203,10 +203,12 @@ module ForestLiana
|
|
203
203
|
|
204
204
|
def setup_forest_liana_meta
|
205
205
|
ForestLiana.meta = {
|
206
|
-
database_type: database_type,
|
207
206
|
liana: 'forest-rails',
|
208
207
|
liana_version: ForestLiana::VERSION,
|
209
|
-
|
208
|
+
stack: {
|
209
|
+
database_type: database_type,
|
210
|
+
orm_version: Gem.loaded_specs["activerecord"].version.version,
|
211
|
+
}
|
210
212
|
}
|
211
213
|
end
|
212
214
|
|
data/lib/forest_liana/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
module ForestLiana
|
2
|
+
describe Bootstrapper do
|
3
|
+
describe 'setup_forest_liana_meta' do
|
4
|
+
it "should put statistic data related to user stack on a dedicated object" do
|
5
|
+
expect(ForestLiana.meta[:stack])
|
6
|
+
.to include(:orm_version)
|
7
|
+
expect(ForestLiana.meta[:stack])
|
8
|
+
.to include(:database_type)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -45,7 +45,7 @@ describe "Authentications", type: :request do
|
|
45
45
|
|
46
46
|
describe "GET /authentication/callback" do
|
47
47
|
before() do
|
48
|
-
response = '{"data":{"id":666,"attributes":{"first_name":"Alice","last_name":"Doe","email":"alice@forestadmin.com","teams":[1,2,3]}}}'
|
48
|
+
response = '{"data":{"id":666,"attributes":{"first_name":"Alice","last_name":"Doe","email":"alice@forestadmin.com","teams":[1,2,3],"role":"Test"}}}'
|
49
49
|
allow(ForestLiana::ForestApiRequester).to receive(:get).with(
|
50
50
|
"/liana/v2/renderings/42/authorization", { :headers => { "forest-token" => "THE-ACCESS-TOKEN" }, :query=> {} }
|
51
51
|
).and_return(
|
@@ -72,6 +72,7 @@ describe "Authentications", type: :request do
|
|
72
72
|
"first_name" => 'Alice',
|
73
73
|
"last_name" => 'Doe',
|
74
74
|
"team" => 1,
|
75
|
+
"role" => "Test",
|
75
76
|
}
|
76
77
|
|
77
78
|
expect(decoded).to include(expected_token_data)
|
@@ -4,9 +4,11 @@ module ForestLiana
|
|
4
4
|
context 'on a disordered apimap' do
|
5
5
|
apimap = {
|
6
6
|
'meta': {
|
7
|
-
|
7
|
+
stack: {
|
8
|
+
'orm_version': '4.34.9',
|
9
|
+
'database_type': 'postgresql',
|
10
|
+
},
|
8
11
|
'liana_version': '1.5.24',
|
9
|
-
'database_type': 'postgresql',
|
10
12
|
liana: 'forest-rails',
|
11
13
|
},
|
12
14
|
'data': [{
|
@@ -165,8 +167,8 @@ module ForestLiana
|
|
165
167
|
end
|
166
168
|
|
167
169
|
it 'should sort the meta values' do
|
168
|
-
expect(apimap_sorted['meta'].keys).to eq(
|
169
|
-
|
170
|
+
expect(apimap_sorted['meta'].keys).to eq(['liana', 'liana_version', 'stack'])
|
171
|
+
expect(apimap_sorted['meta']['stack'].keys).to eq(['database_type', 'orm_version'])
|
170
172
|
end
|
171
173
|
end
|
172
174
|
end
|
@@ -50,7 +50,8 @@ module ForestLiana
|
|
50
50
|
})
|
51
51
|
]
|
52
52
|
}
|
53
|
-
let(:
|
53
|
+
let(:default_rendering_id) { 1 }
|
54
|
+
let(:scope_permissions) { { default_rendering_id => { 'scopes' => nil } } }
|
54
55
|
let(:default_api_permissions) {
|
55
56
|
{
|
56
57
|
"data" => {
|
@@ -118,12 +119,14 @@ module ForestLiana
|
|
118
119
|
},
|
119
120
|
'renderings' => scope_permissions
|
120
121
|
},
|
122
|
+
"stats" => {
|
123
|
+
"queries"=>[],
|
124
|
+
},
|
121
125
|
"meta" => {
|
122
126
|
"rolesACLActivated" => true
|
123
127
|
}
|
124
128
|
}
|
125
129
|
}
|
126
|
-
let(:default_rendering_id) { 1 }
|
127
130
|
|
128
131
|
before do
|
129
132
|
allow(ForestLiana).to receive(:apimap).and_return(schema)
|
@@ -368,9 +371,12 @@ module ForestLiana
|
|
368
371
|
"data" => {
|
369
372
|
'collections' => { },
|
370
373
|
'renderings' => {
|
371
|
-
|
374
|
+
other_rendering_id => { 'custom' => nil }
|
372
375
|
}
|
373
376
|
},
|
377
|
+
"stats" => {
|
378
|
+
"somestats" => [],
|
379
|
+
},
|
374
380
|
"meta" => {
|
375
381
|
"rolesACLActivated" => true
|
376
382
|
}
|
@@ -20,7 +20,8 @@ module ForestLiana
|
|
20
20
|
})
|
21
21
|
]
|
22
22
|
}
|
23
|
-
let(:
|
23
|
+
let(:default_rendering_id) { 1 }
|
24
|
+
let(:scope_permissions) { { default_rendering_id => { 'scopes' => nil } } }
|
24
25
|
let(:default_api_permissions) {
|
25
26
|
{
|
26
27
|
"data" => {
|
@@ -61,7 +62,6 @@ module ForestLiana
|
|
61
62
|
},
|
62
63
|
}
|
63
64
|
}
|
64
|
-
let(:default_rendering_id) { 1 }
|
65
65
|
|
66
66
|
before do
|
67
67
|
allow(ForestLiana).to receive(:apimap).and_return(schema)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forest_liana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sandro Munda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -371,6 +371,7 @@ files:
|
|
371
371
|
- spec/helpers/forest_liana/is_same_data_structure_helper_spec.rb
|
372
372
|
- spec/helpers/forest_liana/query_helper_spec.rb
|
373
373
|
- spec/helpers/forest_liana/schema_helper_spec.rb
|
374
|
+
- spec/lib/forest_liana/bootstrapper_spec.rb
|
374
375
|
- spec/rails_helper.rb
|
375
376
|
- spec/requests/actions_controller_spec.rb
|
376
377
|
- spec/requests/authentications_spec.rb
|
@@ -504,167 +505,168 @@ signing_key:
|
|
504
505
|
specification_version: 4
|
505
506
|
summary: Official Rails Liana for Forest
|
506
507
|
test_files:
|
507
|
-
- test/forest_liana_test.rb
|
508
|
-
- test/test_helper.rb
|
509
|
-
- test/services/forest_liana/has_many_getter_test.rb
|
510
|
-
- test/services/forest_liana/pie_stat_getter_test.rb
|
511
|
-
- test/services/forest_liana/resource_updater_test.rb
|
512
|
-
- test/services/forest_liana/value_stat_getter_test.rb
|
513
|
-
- test/services/forest_liana/scope_validator_test.rb
|
514
|
-
- test/services/forest_liana/schema_adapter_test.rb
|
515
|
-
- test/services/forest_liana/operator_date_interval_parser_test.rb
|
516
508
|
- test/routing/route_test.rb
|
517
|
-
- test/fixtures/string_field.yml
|
518
|
-
- test/fixtures/serialize_field.yml
|
519
|
-
- test/fixtures/has_one_field.yml
|
520
|
-
- test/fixtures/has_many_through_field.yml
|
521
|
-
- test/fixtures/has_many_field.yml
|
522
|
-
- test/fixtures/reference.yml
|
523
|
-
- test/fixtures/owner.yml
|
524
|
-
- test/fixtures/belongs_to_field.yml
|
525
|
-
- test/fixtures/tree.yml
|
526
|
-
- test/dummy/db/schema.rb
|
527
|
-
- test/dummy/db/migrate/20150608131610_create_float_field.rb
|
528
|
-
- test/dummy/db/migrate/20150608131430_create_integer_field.rb
|
529
|
-
- test/dummy/db/migrate/20170614141921_create_serialize_field.rb
|
530
|
-
- test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
|
531
|
-
- test/dummy/db/migrate/20150608130516_create_date_field.rb
|
532
|
-
- test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
|
533
|
-
- test/dummy/db/migrate/20150608132621_create_string_field.rb
|
534
|
-
- test/dummy/db/migrate/20150608132159_create_boolean_field.rb
|
535
|
-
- test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
|
536
|
-
- test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
|
537
|
-
- test/dummy/db/migrate/20181111162121_create_references_table.rb
|
538
|
-
- test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
|
539
|
-
- test/dummy/db/migrate/20160627172810_create_owner.rb
|
540
|
-
- test/dummy/db/migrate/20160627172951_create_tree.rb
|
541
|
-
- test/dummy/db/migrate/20150608150016_create_has_many_field.rb
|
542
|
-
- test/dummy/db/migrate/20150608131603_create_decimal_field.rb
|
543
|
-
- test/dummy/db/migrate/20150608133044_create_has_one_field.rb
|
544
|
-
- test/dummy/db/migrate/20160628173505_add_timestamps.rb
|
545
|
-
- test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
|
546
|
-
- test/dummy/config.ru
|
547
|
-
- test/dummy/bin/rake
|
548
509
|
- test/dummy/bin/setup
|
549
|
-
- test/dummy/bin/bundle
|
550
510
|
- test/dummy/bin/rails
|
511
|
+
- test/dummy/bin/bundle
|
512
|
+
- test/dummy/bin/rake
|
513
|
+
- test/dummy/README.rdoc
|
551
514
|
- test/dummy/config/routes.rb
|
552
|
-
- test/dummy/config/
|
553
|
-
- test/dummy/config/
|
554
|
-
- test/dummy/config/
|
555
|
-
- test/dummy/config/
|
515
|
+
- test/dummy/config/database.yml
|
516
|
+
- test/dummy/config/environment.rb
|
517
|
+
- test/dummy/config/locales/en.yml
|
518
|
+
- test/dummy/config/application.rb
|
519
|
+
- test/dummy/config/secrets.yml
|
556
520
|
- test/dummy/config/initializers/wrap_parameters.rb
|
557
521
|
- test/dummy/config/initializers/filter_parameter_logging.rb
|
558
|
-
- test/dummy/config/initializers/
|
559
|
-
- test/dummy/config/initializers/backtrace_silencers.rb
|
522
|
+
- test/dummy/config/initializers/mime_types.rb
|
560
523
|
- test/dummy/config/initializers/inflections.rb
|
561
|
-
- test/dummy/config/
|
562
|
-
- test/dummy/config/
|
563
|
-
- test/dummy/config/
|
564
|
-
- test/dummy/config/
|
524
|
+
- test/dummy/config/initializers/session_store.rb
|
525
|
+
- test/dummy/config/initializers/assets.rb
|
526
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
527
|
+
- test/dummy/config/initializers/cookies_serializer.rb
|
565
528
|
- test/dummy/config/environments/development.rb
|
529
|
+
- test/dummy/config/environments/production.rb
|
566
530
|
- test/dummy/config/environments/test.rb
|
567
|
-
- test/dummy/config/
|
568
|
-
- test/dummy/
|
569
|
-
- test/dummy/README.rdoc
|
570
|
-
- test/dummy/Rakefile
|
571
|
-
- test/dummy/public/favicon.ico
|
572
|
-
- test/dummy/public/404.html
|
573
|
-
- test/dummy/public/422.html
|
574
|
-
- test/dummy/public/500.html
|
575
|
-
- test/dummy/app/controllers/application_controller.rb
|
576
|
-
- test/dummy/app/views/layouts/application.html.erb
|
577
|
-
- test/dummy/app/helpers/application_helper.rb
|
578
|
-
- test/dummy/app/assets/stylesheets/application.css
|
579
|
-
- test/dummy/app/assets/config/manifest.js
|
580
|
-
- test/dummy/app/assets/javascripts/application.js
|
581
|
-
- test/dummy/app/models/boolean_field.rb
|
582
|
-
- test/dummy/app/models/decimal_field.rb
|
531
|
+
- test/dummy/config/boot.rb
|
532
|
+
- test/dummy/app/models/polymorphic_field.rb
|
583
533
|
- test/dummy/app/models/date_field.rb
|
534
|
+
- test/dummy/app/models/integer_field.rb
|
535
|
+
- test/dummy/app/models/serialize_field.rb
|
536
|
+
- test/dummy/app/models/float_field.rb
|
537
|
+
- test/dummy/app/models/boolean_field.rb
|
538
|
+
- test/dummy/app/models/has_many_field.rb
|
584
539
|
- test/dummy/app/models/tree.rb
|
585
|
-
- test/dummy/app/models/
|
540
|
+
- test/dummy/app/models/has_many_class_name_field.rb
|
541
|
+
- test/dummy/app/models/string_field.rb
|
586
542
|
- test/dummy/app/models/owner.rb
|
543
|
+
- test/dummy/app/models/has_and_belongs_to_many_field.rb
|
587
544
|
- test/dummy/app/models/belongs_to_class_name_field.rb
|
588
545
|
- test/dummy/app/models/has_many_through_field.rb
|
589
|
-
- test/dummy/app/models/
|
590
|
-
- test/dummy/app/models/polymorphic_field.rb
|
591
|
-
- test/dummy/app/models/has_one_field.rb
|
592
|
-
- test/dummy/app/models/has_many_class_name_field.rb
|
593
|
-
- test/dummy/app/models/belongs_to_field.rb
|
594
|
-
- test/dummy/app/models/integer_field.rb
|
595
|
-
- test/dummy/app/models/serialize_field.rb
|
596
|
-
- test/dummy/app/models/string_field.rb
|
597
|
-
- test/dummy/app/models/has_many_field.rb
|
546
|
+
- test/dummy/app/models/decimal_field.rb
|
598
547
|
- test/dummy/app/models/reference.rb
|
599
|
-
-
|
600
|
-
-
|
601
|
-
-
|
602
|
-
-
|
603
|
-
-
|
604
|
-
-
|
605
|
-
-
|
606
|
-
-
|
607
|
-
-
|
608
|
-
-
|
609
|
-
-
|
610
|
-
-
|
548
|
+
- test/dummy/app/models/belongs_to_field.rb
|
549
|
+
- test/dummy/app/models/has_one_field.rb
|
550
|
+
- test/dummy/app/controllers/application_controller.rb
|
551
|
+
- test/dummy/app/assets/config/manifest.js
|
552
|
+
- test/dummy/app/assets/javascripts/application.js
|
553
|
+
- test/dummy/app/assets/stylesheets/application.css
|
554
|
+
- test/dummy/app/views/layouts/application.html.erb
|
555
|
+
- test/dummy/app/helpers/application_helper.rb
|
556
|
+
- test/dummy/config.ru
|
557
|
+
- test/dummy/public/favicon.ico
|
558
|
+
- test/dummy/public/500.html
|
559
|
+
- test/dummy/public/422.html
|
560
|
+
- test/dummy/public/404.html
|
561
|
+
- test/dummy/db/migrate/20150608132621_create_string_field.rb
|
562
|
+
- test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
|
563
|
+
- test/dummy/db/migrate/20150608131603_create_decimal_field.rb
|
564
|
+
- test/dummy/db/migrate/20150608133044_create_has_one_field.rb
|
565
|
+
- test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
|
566
|
+
- test/dummy/db/migrate/20160627172951_create_tree.rb
|
567
|
+
- test/dummy/db/migrate/20170614141921_create_serialize_field.rb
|
568
|
+
- test/dummy/db/migrate/20150608150016_create_has_many_field.rb
|
569
|
+
- test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
|
570
|
+
- test/dummy/db/migrate/20150608130516_create_date_field.rb
|
571
|
+
- test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
|
572
|
+
- test/dummy/db/migrate/20150608131430_create_integer_field.rb
|
573
|
+
- test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
|
574
|
+
- test/dummy/db/migrate/20160628173505_add_timestamps.rb
|
575
|
+
- test/dummy/db/migrate/20160627172810_create_owner.rb
|
576
|
+
- test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
|
577
|
+
- test/dummy/db/migrate/20181111162121_create_references_table.rb
|
578
|
+
- test/dummy/db/migrate/20150608131610_create_float_field.rb
|
579
|
+
- test/dummy/db/migrate/20150608132159_create_boolean_field.rb
|
580
|
+
- test/dummy/db/schema.rb
|
581
|
+
- test/dummy/Rakefile
|
582
|
+
- test/test_helper.rb
|
583
|
+
- test/forest_liana_test.rb
|
584
|
+
- test/services/forest_liana/has_many_getter_test.rb
|
585
|
+
- test/services/forest_liana/value_stat_getter_test.rb
|
586
|
+
- test/services/forest_liana/pie_stat_getter_test.rb
|
587
|
+
- test/services/forest_liana/operator_date_interval_parser_test.rb
|
588
|
+
- test/services/forest_liana/schema_adapter_test.rb
|
589
|
+
- test/services/forest_liana/resource_updater_test.rb
|
590
|
+
- test/services/forest_liana/scope_validator_test.rb
|
591
|
+
- test/fixtures/belongs_to_field.yml
|
592
|
+
- test/fixtures/tree.yml
|
593
|
+
- test/fixtures/has_one_field.yml
|
594
|
+
- test/fixtures/has_many_through_field.yml
|
595
|
+
- test/fixtures/reference.yml
|
596
|
+
- test/fixtures/serialize_field.yml
|
597
|
+
- test/fixtures/has_many_field.yml
|
598
|
+
- test/fixtures/owner.yml
|
599
|
+
- test/fixtures/string_field.yml
|
600
|
+
- spec/requests/actions_controller_spec.rb
|
601
|
+
- spec/requests/stats_spec.rb
|
602
|
+
- spec/requests/authentications_spec.rb
|
603
|
+
- spec/requests/resources_spec.rb
|
611
604
|
- spec/config/initializers/logger_spec.rb
|
612
|
-
- spec/
|
613
|
-
- spec/helpers/forest_liana/schema_helper_spec.rb
|
614
|
-
- spec/helpers/forest_liana/query_helper_spec.rb
|
615
|
-
- spec/dummy/db/schema.rb
|
616
|
-
- spec/dummy/db/migrate/20190226172951_create_user.rb
|
617
|
-
- spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
|
618
|
-
- spec/dummy/db/migrate/20190226173051_create_isle.rb
|
619
|
-
- spec/dummy/db/migrate/20210511141752_create_owners.rb
|
620
|
-
- spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
|
621
|
-
- spec/dummy/db/migrate/20210326140855_create_locations.rb
|
622
|
-
- spec/dummy/db/migrate/20190226174951_create_tree.rb
|
623
|
-
- spec/dummy/db/migrate/20210526084712_create_products.rb
|
624
|
-
- spec/dummy/db/migrate/20210326110524_create_references.rb
|
625
|
-
- spec/dummy/config.ru
|
626
|
-
- spec/dummy/bin/rake
|
605
|
+
- spec/spec_helper.rb
|
627
606
|
- spec/dummy/bin/setup
|
628
|
-
- spec/dummy/bin/bundle
|
629
607
|
- spec/dummy/bin/rails
|
608
|
+
- spec/dummy/bin/bundle
|
609
|
+
- spec/dummy/bin/rake
|
610
|
+
- spec/dummy/README.rdoc
|
630
611
|
- spec/dummy/config/routes.rb
|
631
|
-
- spec/dummy/config/
|
632
|
-
- spec/dummy/config/
|
633
|
-
- spec/dummy/config/
|
634
|
-
- spec/dummy/config/
|
635
|
-
- spec/dummy/config/initializers/session_store.rb
|
612
|
+
- spec/dummy/config/database.yml
|
613
|
+
- spec/dummy/config/environment.rb
|
614
|
+
- spec/dummy/config/application.rb
|
615
|
+
- spec/dummy/config/secrets.yml
|
636
616
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
637
617
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
638
|
-
- spec/dummy/config/initializers/
|
639
|
-
- spec/dummy/config/initializers/
|
618
|
+
- spec/dummy/config/initializers/mime_types.rb
|
619
|
+
- spec/dummy/config/initializers/forest_liana.rb
|
640
620
|
- spec/dummy/config/initializers/inflections.rb
|
641
|
-
- spec/dummy/config/
|
642
|
-
- spec/dummy/config/
|
643
|
-
- spec/dummy/config/
|
621
|
+
- spec/dummy/config/initializers/session_store.rb
|
622
|
+
- spec/dummy/config/initializers/assets.rb
|
623
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
624
|
+
- spec/dummy/config/initializers/cookies_serializer.rb
|
644
625
|
- spec/dummy/config/environments/development.rb
|
626
|
+
- spec/dummy/config/environments/production.rb
|
645
627
|
- spec/dummy/config/environments/test.rb
|
646
|
-
- spec/dummy/config/
|
647
|
-
- spec/dummy/
|
648
|
-
- spec/dummy/
|
649
|
-
- spec/dummy/
|
650
|
-
- spec/dummy/README.rdoc
|
651
|
-
- spec/dummy/Rakefile
|
652
|
-
- spec/dummy/app/controllers/application_controller.rb
|
653
|
-
- spec/dummy/app/views/layouts/application.html.erb
|
654
|
-
- spec/dummy/app/config/routes.rb
|
655
|
-
- spec/dummy/app/helpers/application_helper.rb
|
656
|
-
- spec/dummy/app/assets/stylesheets/application.css
|
657
|
-
- spec/dummy/app/assets/config/manifest.js
|
658
|
-
- spec/dummy/app/assets/javascripts/application.js
|
628
|
+
- spec/dummy/config/boot.rb
|
629
|
+
- spec/dummy/app/models/island.rb
|
630
|
+
- spec/dummy/app/models/location.rb
|
631
|
+
- spec/dummy/app/models/product.rb
|
659
632
|
- spec/dummy/app/models/tree.rb
|
660
633
|
- spec/dummy/app/models/owner.rb
|
661
634
|
- spec/dummy/app/models/user.rb
|
662
|
-
- spec/dummy/app/models/product.rb
|
663
|
-
- spec/dummy/app/models/location.rb
|
664
|
-
- spec/dummy/app/models/island.rb
|
665
635
|
- spec/dummy/app/models/reference.rb
|
636
|
+
- spec/dummy/app/config/routes.rb
|
637
|
+
- spec/dummy/app/controllers/application_controller.rb
|
638
|
+
- spec/dummy/app/assets/config/manifest.js
|
639
|
+
- spec/dummy/app/assets/javascripts/application.js
|
640
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
641
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
642
|
+
- spec/dummy/app/helpers/application_helper.rb
|
643
|
+
- spec/dummy/config.ru
|
644
|
+
- spec/dummy/lib/forest_liana/collections/location.rb
|
645
|
+
- spec/dummy/lib/forest_liana/collections/user.rb
|
646
|
+
- spec/dummy/db/migrate/20190226173051_create_isle.rb
|
647
|
+
- spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
|
648
|
+
- spec/dummy/db/migrate/20210326110524_create_references.rb
|
649
|
+
- spec/dummy/db/migrate/20210526084712_create_products.rb
|
650
|
+
- spec/dummy/db/migrate/20190226172951_create_user.rb
|
651
|
+
- spec/dummy/db/migrate/20210326140855_create_locations.rb
|
652
|
+
- spec/dummy/db/migrate/20210511141752_create_owners.rb
|
653
|
+
- spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
|
654
|
+
- spec/dummy/db/migrate/20190226174951_create_tree.rb
|
655
|
+
- spec/dummy/db/schema.rb
|
656
|
+
- spec/dummy/Rakefile
|
657
|
+
- spec/lib/forest_liana/bootstrapper_spec.rb
|
658
|
+
- spec/services/forest_liana/ip_whitelist_checker_spec.rb
|
659
|
+
- spec/services/forest_liana/resources_getter_spec.rb
|
660
|
+
- spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
|
661
|
+
- spec/services/forest_liana/permissions_formatter_spec.rb
|
662
|
+
- spec/services/forest_liana/filters_parser_spec.rb
|
663
|
+
- spec/services/forest_liana/line_stat_getter_spec.rb
|
664
|
+
- spec/services/forest_liana/apimap_sorter_spec.rb
|
665
|
+
- spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
|
666
|
+
- spec/services/forest_liana/permissions_getter_spec.rb
|
667
|
+
- spec/services/forest_liana/schema_adapter_spec.rb
|
668
|
+
- spec/services/forest_liana/permissions_checker_live_queries_spec.rb
|
669
|
+
- spec/helpers/forest_liana/schema_helper_spec.rb
|
670
|
+
- spec/helpers/forest_liana/query_helper_spec.rb
|
671
|
+
- spec/helpers/forest_liana/is_same_data_structure_helper_spec.rb
|
666
672
|
- spec/rails_helper.rb
|
667
|
-
- spec/requests/stats_spec.rb
|
668
|
-
- spec/requests/resources_spec.rb
|
669
|
-
- spec/requests/actions_controller_spec.rb
|
670
|
-
- spec/requests/authentications_spec.rb
|