forest_liana 7.0.2 → 7.2.2
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/app/services/forest_liana/filters_parser.rb +7 -1
- data/app/services/forest_liana/permissions_checker.rb +8 -1
- data/app/services/forest_liana/token.rb +1 -0
- data/config/initializers/httpclient.rb +11 -0
- data/lib/forest_liana/version.rb +1 -1
- data/spec/requests/authentications_spec.rb +5 -1
- data/spec/services/forest_liana/filters_parser_spec.rb +2 -0
- data/spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb +28 -0
- data/spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb +38 -0
- metadata +144 -143
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e27c82de4862ee0ef5a2d1c3a83911f3257c5622979bb5a0fa2b60f367b6095
|
4
|
+
data.tar.gz: 2e63d770bd045090db7458feb0a417e002419998202f2a9b20dc4087cf38e635
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0a8e5a2a516e9224c90acf8c0ae367d2a99e5ec1d40132851c6e1a258d5a338c68e48eccd9facbccbe4650258426fb1d74286f9c58438ebd4e3a83a8a947d3e
|
7
|
+
data.tar.gz: c64b4806f3073c29e20d4d5c24e6d3e28d785db24de4cb3e62e9dfedc971e6da4be789333913eacd0933d3ef3e7333029f5b3045d1394a768ba5cd0d808f780d
|
@@ -149,7 +149,7 @@ module ForestLiana
|
|
149
149
|
|
150
150
|
def parse_value(operator, value)
|
151
151
|
case operator
|
152
|
-
when 'not', 'greater_than', 'less_than', 'not_equal', 'equal', 'before', 'after'
|
152
|
+
when 'not', 'greater_than', 'less_than', 'not_equal', 'equal', 'before', 'after'
|
153
153
|
value
|
154
154
|
when 'contains', 'not_contains'
|
155
155
|
"%#{value}%"
|
@@ -157,6 +157,12 @@ module ForestLiana
|
|
157
157
|
"#{value}%"
|
158
158
|
when 'ends_with'
|
159
159
|
"%#{value}"
|
160
|
+
when 'in'
|
161
|
+
if value.kind_of?(String)
|
162
|
+
value.split(',').map { |val| val.strip() }
|
163
|
+
else
|
164
|
+
value
|
165
|
+
end
|
160
166
|
when 'present', 'blank'
|
161
167
|
else
|
162
168
|
raise_unknown_operator_error(operator)
|
@@ -159,9 +159,16 @@ module ForestLiana
|
|
159
159
|
|
160
160
|
def segment_query_allowed?
|
161
161
|
segments_queries_permissions = get_segments_in_permissions
|
162
|
-
|
162
|
+
# NOTICE: The segmentQuery should be in the segments_queries_permissions
|
163
163
|
return false unless segments_queries_permissions
|
164
164
|
|
165
|
+
# Handle UNION queries made by the FRONT to display available actions on details view
|
166
|
+
unionQueries = @collection_list_parameters[:segmentQuery].split('/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION ');
|
167
|
+
if unionQueries.length > 1
|
168
|
+
# Are unionQueries all included only in the allowed queries
|
169
|
+
return unionQueries.all? { |unionQuery| segments_queries_permissions.select { |query| query.gsub(/;\s*/i, '') === unionQuery }.length > 0 };
|
170
|
+
end
|
171
|
+
|
165
172
|
# NOTICE: @query_request_info matching an existing segment query
|
166
173
|
return segments_queries_permissions.include? @collection_list_parameters[:segmentQuery]
|
167
174
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'httpclient'
|
2
|
+
|
3
|
+
class HTTPClient
|
4
|
+
alias original_initialize initialize
|
5
|
+
|
6
|
+
def initialize(*args, &block)
|
7
|
+
original_initialize(*args, &block)
|
8
|
+
# NOTICE: Force use of the default system CA certs (instead of the 6 year old bundled ones).
|
9
|
+
@session_manager&.ssl_config&.set_default_paths
|
10
|
+
end
|
11
|
+
end
|
data/lib/forest_liana/version.rb
CHANGED
@@ -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],"role":"Test"}}}'
|
48
|
+
response = '{"data":{"id":666,"attributes":{"first_name":"Alice","last_name":"Doe","email":"alice@forestadmin.com","teams":[1,2,3],"role":"Test","tags":[{"key":"city","value":"Paris"}]}}}'
|
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(
|
@@ -76,6 +76,10 @@ describe "Authentications", type: :request do
|
|
76
76
|
}
|
77
77
|
|
78
78
|
expect(decoded).to include(expected_token_data)
|
79
|
+
tags = decoded['tags']
|
80
|
+
expect(tags.length).to eq(1)
|
81
|
+
expect(tags[0]['key']).to eq("city")
|
82
|
+
expect(tags[0]['value']).to eq("Paris")
|
79
83
|
expect(body).to eq({ token: token, tokenData: decoded.deep_symbolize_keys! })
|
80
84
|
expect(response).to have_http_status(200)
|
81
85
|
end
|
@@ -396,6 +396,8 @@ module ForestLiana
|
|
396
396
|
it { expect(filter_parser.parse_value('present', nil)).to eq nil }
|
397
397
|
it { expect(filter_parser.parse_value('equal', 'yes')).to eq 'yes' }
|
398
398
|
it { expect(filter_parser.parse_value('blank', nil)).to eq nil }
|
399
|
+
it { expect(filter_parser.parse_value('in', 'yes,maybe ,no ')).to eq ['yes', 'maybe', 'no'] }
|
400
|
+
it { expect(filter_parser.parse_value('in', 123)).to eq 123 }
|
399
401
|
end
|
400
402
|
|
401
403
|
context 'on unknown operator' do
|
@@ -481,6 +481,14 @@ module ForestLiana
|
|
481
481
|
end
|
482
482
|
end
|
483
483
|
|
484
|
+
context 'when user has no segments and param segmentQuery is there' do
|
485
|
+
let(:segmentQuery) { 'SELECT * FROM products;' }
|
486
|
+
let(:collection_list_parameters) { { :user_id => "1", :segmentQuery => segmentQuery } }
|
487
|
+
it 'should be authorized' do
|
488
|
+
expect(subject.is_authorized?).to be false
|
489
|
+
end
|
490
|
+
end
|
491
|
+
|
484
492
|
context 'when segments are defined' do
|
485
493
|
let(:segments_permissions) { ['SELECT * FROM products;', 'SELECT * FROM sellers;'] }
|
486
494
|
let(:collection_list_parameters) { { :user_id => "1", :segmentQuery => segmentQuery } }
|
@@ -499,6 +507,26 @@ module ForestLiana
|
|
499
507
|
end
|
500
508
|
end
|
501
509
|
|
510
|
+
context 'when received union segments NOT passing validation' do
|
511
|
+
let(:segmentQuery) { 'SELECT * FROM sellers/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2' }
|
512
|
+
it 'should return false' do
|
513
|
+
expect(subject.is_authorized?).to be false
|
514
|
+
end
|
515
|
+
end
|
516
|
+
|
517
|
+
context 'when received union segments passing validation' do
|
518
|
+
let(:segmentQuery) { 'SELECT * FROM sellers/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION SELECT * FROM products' }
|
519
|
+
it 'should return true' do
|
520
|
+
expect(subject.is_authorized?).to be true
|
521
|
+
end
|
522
|
+
end
|
523
|
+
context 'when received union segments with UNION inside passing validation' do
|
524
|
+
let(:segmentQuery) { 'SELECT COUNT(*) AS value FROM products/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2' }
|
525
|
+
let(:segments_permissions) { ['SELECT COUNT(*) AS value FROM products;', 'SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;', 'SELECT * FROM products;', 'SELECT * FROM sellers;'] }
|
526
|
+
it 'should return true' do
|
527
|
+
expect(subject.is_authorized?).to be true
|
528
|
+
end
|
529
|
+
end
|
502
530
|
end
|
503
531
|
|
504
532
|
context 'when user has not the required permission' do
|
@@ -458,6 +458,14 @@ module ForestLiana
|
|
458
458
|
end
|
459
459
|
end
|
460
460
|
|
461
|
+
context 'when user has no segments queries permissions and param segmentQuery is there' do
|
462
|
+
let(:segmentQuery) { 'SELECT * FROM products;' }
|
463
|
+
let(:collection_list_parameters) { { :user_id => "1", :segmentQuery => segmentQuery } }
|
464
|
+
it 'should be authorized' do
|
465
|
+
expect(subject.is_authorized?).to be false
|
466
|
+
end
|
467
|
+
end
|
468
|
+
|
461
469
|
context 'when segments are defined' do
|
462
470
|
let(:default_rendering_id) { 1 }
|
463
471
|
let(:segments_permissions) {
|
@@ -484,6 +492,36 @@ module ForestLiana
|
|
484
492
|
expect(subject.is_authorized?).to be false
|
485
493
|
end
|
486
494
|
end
|
495
|
+
|
496
|
+
context 'when received union segments NOT passing validation' do
|
497
|
+
let(:segmentQuery) { 'SELECT * FROM sellers/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2' }
|
498
|
+
it 'should return false' do
|
499
|
+
expect(subject.is_authorized?).to be false
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
503
|
+
context 'when received union segments passing validation' do
|
504
|
+
let(:segmentQuery) { 'SELECT * FROM sellers/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION SELECT * FROM products' }
|
505
|
+
it 'should return true' do
|
506
|
+
expect(subject.is_authorized?).to be true
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
context 'when received union segments with UNION inside passing validation' do
|
511
|
+
let(:segmentQuery) { 'SELECT COUNT(*) AS value FROM products/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2' }
|
512
|
+
let(:segments_permissions) {
|
513
|
+
{
|
514
|
+
default_rendering_id => {
|
515
|
+
collection_name => {
|
516
|
+
'segments' => ['SELECT COUNT(*) AS value FROM products;', 'SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;', 'SELECT * FROM products;', 'SELECT * FROM sellers;']
|
517
|
+
}
|
518
|
+
}
|
519
|
+
}
|
520
|
+
}
|
521
|
+
it 'should return true' do
|
522
|
+
expect(subject.is_authorized?).to be true
|
523
|
+
end
|
524
|
+
end
|
487
525
|
end
|
488
526
|
end
|
489
527
|
|
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: 7.
|
4
|
+
version: 7.2.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-
|
11
|
+
date: 2021-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -302,6 +302,7 @@ files:
|
|
302
302
|
- config/initializers/arel-helpers.rb
|
303
303
|
- config/initializers/error-messages.rb
|
304
304
|
- config/initializers/errors.rb
|
305
|
+
- config/initializers/httpclient.rb
|
305
306
|
- config/initializers/logger.rb
|
306
307
|
- config/initializers/time_formats.rb
|
307
308
|
- config/routes.rb
|
@@ -510,170 +511,170 @@ specification_version: 4
|
|
510
511
|
summary: Official Rails Liana for Forest
|
511
512
|
test_files:
|
512
513
|
- test/routing/route_test.rb
|
513
|
-
- test/
|
514
|
-
- test/
|
515
|
-
- test/
|
516
|
-
- test/
|
517
|
-
- test/
|
518
|
-
- test/
|
514
|
+
- test/forest_liana_test.rb
|
515
|
+
- test/fixtures/belongs_to_field.yml
|
516
|
+
- test/fixtures/owner.yml
|
517
|
+
- test/fixtures/has_one_field.yml
|
518
|
+
- test/fixtures/serialize_field.yml
|
519
|
+
- test/fixtures/string_field.yml
|
520
|
+
- test/fixtures/has_many_through_field.yml
|
521
|
+
- test/fixtures/reference.yml
|
522
|
+
- test/fixtures/has_many_field.yml
|
523
|
+
- test/fixtures/tree.yml
|
524
|
+
- test/dummy/README.rdoc
|
519
525
|
- test/dummy/public/404.html
|
520
|
-
- test/dummy/public/favicon.ico
|
521
526
|
- test/dummy/public/422.html
|
522
|
-
- test/dummy/
|
523
|
-
- test/dummy/
|
524
|
-
- test/dummy/
|
525
|
-
- test/dummy/
|
526
|
-
- test/dummy/
|
527
|
-
- test/dummy/
|
528
|
-
- test/dummy/
|
529
|
-
- test/dummy/
|
530
|
-
- test/dummy/
|
531
|
-
- test/dummy/
|
532
|
-
- test/dummy/
|
533
|
-
- test/dummy/
|
534
|
-
- test/dummy/
|
535
|
-
- test/dummy/
|
536
|
-
- test/dummy/
|
537
|
-
- test/dummy/
|
538
|
-
- test/dummy/
|
539
|
-
- test/dummy/
|
540
|
-
- test/dummy/
|
541
|
-
- test/dummy/
|
542
|
-
- test/dummy/
|
543
|
-
- test/dummy/app/
|
544
|
-
- test/dummy/app/
|
545
|
-
- test/dummy/app/assets/config/manifest.js
|
546
|
-
- test/dummy/app/helpers/application_helper.rb
|
547
|
-
- test/dummy/app/models/float_field.rb
|
548
|
-
- test/dummy/app/models/boolean_field.rb
|
549
|
-
- test/dummy/app/models/decimal_field.rb
|
527
|
+
- test/dummy/public/500.html
|
528
|
+
- test/dummy/public/favicon.ico
|
529
|
+
- test/dummy/Rakefile
|
530
|
+
- test/dummy/config/application.rb
|
531
|
+
- test/dummy/config/routes.rb
|
532
|
+
- test/dummy/config/environments/production.rb
|
533
|
+
- test/dummy/config/environments/test.rb
|
534
|
+
- test/dummy/config/environments/development.rb
|
535
|
+
- test/dummy/config/database.yml
|
536
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
537
|
+
- test/dummy/config/initializers/assets.rb
|
538
|
+
- test/dummy/config/initializers/wrap_parameters.rb
|
539
|
+
- test/dummy/config/initializers/filter_parameter_logging.rb
|
540
|
+
- test/dummy/config/initializers/session_store.rb
|
541
|
+
- test/dummy/config/initializers/inflections.rb
|
542
|
+
- test/dummy/config/initializers/mime_types.rb
|
543
|
+
- test/dummy/config/initializers/cookies_serializer.rb
|
544
|
+
- test/dummy/config/locales/en.yml
|
545
|
+
- test/dummy/config/environment.rb
|
546
|
+
- test/dummy/config/secrets.yml
|
547
|
+
- test/dummy/config/boot.rb
|
548
|
+
- test/dummy/app/models/has_many_through_field.rb
|
549
|
+
- test/dummy/app/models/tree.rb
|
550
550
|
- test/dummy/app/models/belongs_to_field.rb
|
551
551
|
- test/dummy/app/models/belongs_to_class_name_field.rb
|
552
|
-
- test/dummy/app/models/
|
553
|
-
- test/dummy/app/models/
|
554
|
-
- test/dummy/app/models/has_many_class_name_field.rb
|
555
|
-
- test/dummy/app/models/integer_field.rb
|
552
|
+
- test/dummy/app/models/polymorphic_field.rb
|
553
|
+
- test/dummy/app/models/reference.rb
|
556
554
|
- test/dummy/app/models/date_field.rb
|
557
|
-
- test/dummy/app/models/
|
555
|
+
- test/dummy/app/models/decimal_field.rb
|
558
556
|
- test/dummy/app/models/owner.rb
|
559
|
-
- test/dummy/app/models/polymorphic_field.rb
|
560
|
-
- test/dummy/app/models/has_many_through_field.rb
|
561
|
-
- test/dummy/app/models/has_one_field.rb
|
562
557
|
- test/dummy/app/models/has_many_field.rb
|
563
|
-
- test/dummy/app/models/
|
564
|
-
- test/dummy/app/models/
|
565
|
-
- test/dummy/app/
|
558
|
+
- test/dummy/app/models/boolean_field.rb
|
559
|
+
- test/dummy/app/models/has_and_belongs_to_many_field.rb
|
560
|
+
- test/dummy/app/models/serialize_field.rb
|
561
|
+
- test/dummy/app/models/integer_field.rb
|
562
|
+
- test/dummy/app/models/float_field.rb
|
563
|
+
- test/dummy/app/models/has_many_class_name_field.rb
|
564
|
+
- test/dummy/app/models/string_field.rb
|
565
|
+
- test/dummy/app/models/has_one_field.rb
|
566
566
|
- test/dummy/app/views/layouts/application.html.erb
|
567
|
+
- test/dummy/app/assets/javascripts/application.js
|
568
|
+
- test/dummy/app/assets/stylesheets/application.css
|
569
|
+
- test/dummy/app/assets/config/manifest.js
|
570
|
+
- test/dummy/app/controllers/application_controller.rb
|
571
|
+
- test/dummy/app/helpers/application_helper.rb
|
567
572
|
- test/dummy/config.ru
|
568
|
-
- test/dummy/
|
569
|
-
- test/dummy/
|
570
|
-
- test/dummy/
|
571
|
-
- test/dummy/
|
572
|
-
- test/dummy/
|
573
|
-
- test/dummy/
|
574
|
-
- test/dummy/
|
575
|
-
- test/dummy/
|
576
|
-
- test/dummy/
|
577
|
-
- test/dummy/
|
578
|
-
- test/dummy/
|
579
|
-
- test/dummy/
|
580
|
-
- test/dummy/
|
581
|
-
- test/dummy/
|
582
|
-
- test/dummy/
|
583
|
-
- test/dummy/
|
584
|
-
- test/dummy/
|
585
|
-
- test/dummy/
|
586
|
-
- test/
|
587
|
-
- test/
|
588
|
-
- test/
|
589
|
-
- test/
|
590
|
-
- test/
|
591
|
-
- test/
|
592
|
-
- test/fixtures/reference.yml
|
593
|
-
- test/fixtures/owner.yml
|
594
|
-
- test/fixtures/belongs_to_field.yml
|
595
|
-
- test/fixtures/has_many_through_field.yml
|
596
|
-
- test/services/forest_liana/schema_adapter_test.rb
|
573
|
+
- test/dummy/db/migrate/20150608131603_create_decimal_field.rb
|
574
|
+
- test/dummy/db/migrate/20150616150629_create_polymorphic_field.rb
|
575
|
+
- test/dummy/db/migrate/20160628173505_add_timestamps.rb
|
576
|
+
- test/dummy/db/migrate/20181111162121_create_references_table.rb
|
577
|
+
- test/dummy/db/migrate/20150623115554_create_has_many_class_name_field.rb
|
578
|
+
- test/dummy/db/migrate/20150608131610_create_float_field.rb
|
579
|
+
- test/dummy/db/migrate/20160627172951_create_tree.rb
|
580
|
+
- test/dummy/db/migrate/20150612112520_create_has_and_belongs_to_many_field.rb
|
581
|
+
- test/dummy/db/migrate/20150608132159_create_boolean_field.rb
|
582
|
+
- test/dummy/db/migrate/20150608131430_create_integer_field.rb
|
583
|
+
- test/dummy/db/migrate/20150608133044_create_has_one_field.rb
|
584
|
+
- test/dummy/db/migrate/20150609114636_create_belongs_to_class_name_field.rb
|
585
|
+
- test/dummy/db/migrate/20150814081918_create_has_many_through_field.rb
|
586
|
+
- test/dummy/db/migrate/20150608130516_create_date_field.rb
|
587
|
+
- test/dummy/db/migrate/20170614141921_create_serialize_field.rb
|
588
|
+
- test/dummy/db/migrate/20150608133038_create_belongs_to_field.rb
|
589
|
+
- test/dummy/db/migrate/20150608150016_create_has_many_field.rb
|
590
|
+
- test/dummy/db/migrate/20160627172810_create_owner.rb
|
591
|
+
- test/dummy/db/migrate/20150608132621_create_string_field.rb
|
592
|
+
- test/dummy/db/schema.rb
|
593
|
+
- test/dummy/bin/rails
|
594
|
+
- test/dummy/bin/rake
|
595
|
+
- test/dummy/bin/bundle
|
596
|
+
- test/dummy/bin/setup
|
597
597
|
- test/services/forest_liana/operator_date_interval_parser_test.rb
|
598
|
-
- test/
|
599
|
-
-
|
600
|
-
- spec/
|
601
|
-
- spec/
|
602
|
-
- spec/
|
603
|
-
- spec/
|
604
|
-
- spec/
|
605
|
-
- spec/dummy/bin/rails
|
606
|
-
- spec/dummy/db/schema.rb
|
607
|
-
- spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
|
608
|
-
- spec/dummy/db/migrate/20210511141752_create_owners.rb
|
609
|
-
- spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
|
610
|
-
- spec/dummy/db/migrate/20210326140855_create_locations.rb
|
611
|
-
- spec/dummy/db/migrate/20190226174951_create_tree.rb
|
612
|
-
- spec/dummy/db/migrate/20210326110524_create_references.rb
|
613
|
-
- spec/dummy/db/migrate/20190226172951_create_user.rb
|
614
|
-
- spec/dummy/db/migrate/20210526084712_create_products.rb
|
615
|
-
- spec/dummy/db/migrate/20190226173051_create_isle.rb
|
598
|
+
- test/services/forest_liana/schema_adapter_test.rb
|
599
|
+
- test/test_helper.rb
|
600
|
+
- spec/spec_helper.rb
|
601
|
+
- spec/config/initializers/logger_spec.rb
|
602
|
+
- spec/lib/forest_liana/schema_file_updater_spec.rb
|
603
|
+
- spec/lib/forest_liana/bootstrapper_spec.rb
|
604
|
+
- spec/rails_helper.rb
|
616
605
|
- spec/dummy/README.rdoc
|
617
|
-
- spec/dummy/
|
618
|
-
- spec/dummy/
|
619
|
-
- spec/dummy/
|
620
|
-
- spec/dummy/
|
621
|
-
- spec/dummy/
|
622
|
-
- spec/dummy/
|
623
|
-
- spec/dummy/
|
624
|
-
- spec/dummy/app/models/owner.rb
|
625
|
-
- spec/dummy/app/models/location.rb
|
626
|
-
- spec/dummy/app/models/reference.rb
|
627
|
-
- spec/dummy/app/models/tree.rb
|
628
|
-
- spec/dummy/app/controllers/forest/islands_controller.rb
|
629
|
-
- spec/dummy/app/controllers/application_controller.rb
|
630
|
-
- spec/dummy/app/config/routes.rb
|
631
|
-
- spec/dummy/app/views/layouts/application.html.erb
|
632
|
-
- spec/dummy/config.ru
|
633
|
-
- spec/dummy/config/secrets.yml
|
634
|
-
- spec/dummy/config/boot.rb
|
635
|
-
- spec/dummy/config/environment.rb
|
636
|
-
- spec/dummy/config/initializers/inflections.rb
|
637
|
-
- spec/dummy/config/initializers/assets.rb
|
606
|
+
- spec/dummy/Rakefile
|
607
|
+
- spec/dummy/config/application.rb
|
608
|
+
- spec/dummy/config/routes.rb
|
609
|
+
- spec/dummy/config/environments/production.rb
|
610
|
+
- spec/dummy/config/environments/test.rb
|
611
|
+
- spec/dummy/config/environments/development.rb
|
612
|
+
- spec/dummy/config/database.yml
|
638
613
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
614
|
+
- spec/dummy/config/initializers/assets.rb
|
615
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
616
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
617
|
+
- spec/dummy/config/initializers/session_store.rb
|
639
618
|
- spec/dummy/config/initializers/forest_liana.rb
|
619
|
+
- spec/dummy/config/initializers/inflections.rb
|
640
620
|
- spec/dummy/config/initializers/mime_types.rb
|
641
|
-
- spec/dummy/config/initializers/wrap_parameters.rb
|
642
621
|
- spec/dummy/config/initializers/cookies_serializer.rb
|
643
|
-
- spec/dummy/config/
|
644
|
-
- spec/dummy/config/
|
645
|
-
- spec/dummy/config/
|
646
|
-
- spec/dummy/config/routes.rb
|
647
|
-
- spec/dummy/config/environments/production.rb
|
648
|
-
- spec/dummy/config/environments/development.rb
|
649
|
-
- spec/dummy/config/environments/test.rb
|
650
|
-
- spec/dummy/config/application.rb
|
622
|
+
- spec/dummy/config/environment.rb
|
623
|
+
- spec/dummy/config/secrets.yml
|
624
|
+
- spec/dummy/config/boot.rb
|
651
625
|
- spec/dummy/lib/forest_liana/collections/island.rb
|
652
626
|
- spec/dummy/lib/forest_liana/collections/user.rb
|
653
627
|
- spec/dummy/lib/forest_liana/collections/location.rb
|
654
|
-
- spec/
|
655
|
-
- spec/
|
656
|
-
- spec/
|
628
|
+
- spec/dummy/app/models/tree.rb
|
629
|
+
- spec/dummy/app/models/island.rb
|
630
|
+
- spec/dummy/app/models/reference.rb
|
631
|
+
- spec/dummy/app/models/owner.rb
|
632
|
+
- spec/dummy/app/models/product.rb
|
633
|
+
- spec/dummy/app/models/user.rb
|
634
|
+
- spec/dummy/app/models/location.rb
|
635
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
636
|
+
- spec/dummy/app/config/routes.rb
|
637
|
+
- spec/dummy/app/assets/javascripts/application.js
|
638
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
639
|
+
- spec/dummy/app/assets/config/manifest.js
|
640
|
+
- spec/dummy/app/controllers/application_controller.rb
|
641
|
+
- spec/dummy/app/controllers/forest/islands_controller.rb
|
642
|
+
- spec/dummy/app/helpers/application_helper.rb
|
643
|
+
- spec/dummy/config.ru
|
644
|
+
- spec/dummy/db/migrate/20190226173051_create_isle.rb
|
645
|
+
- spec/dummy/db/migrate/20190226172951_create_user.rb
|
646
|
+
- spec/dummy/db/migrate/20190716130830_add_age_to_tree.rb
|
647
|
+
- spec/dummy/db/migrate/20210326110524_create_references.rb
|
648
|
+
- spec/dummy/db/migrate/20190226174951_create_tree.rb
|
649
|
+
- spec/dummy/db/migrate/20210526084712_create_products.rb
|
650
|
+
- spec/dummy/db/migrate/20210326140855_create_locations.rb
|
651
|
+
- spec/dummy/db/migrate/20190716135241_add_type_to_user.rb
|
652
|
+
- spec/dummy/db/migrate/20210511141752_create_owners.rb
|
653
|
+
- spec/dummy/db/schema.rb
|
654
|
+
- spec/dummy/bin/rails
|
655
|
+
- spec/dummy/bin/rake
|
656
|
+
- spec/dummy/bin/bundle
|
657
|
+
- spec/dummy/bin/setup
|
658
|
+
- spec/services/forest_liana/apimap_sorter_spec.rb
|
659
|
+
- spec/services/forest_liana/smart_action_field_validator_spec.rb
|
657
660
|
- spec/services/forest_liana/resource_updater_spec.rb
|
661
|
+
- spec/services/forest_liana/has_many_getter_spec.rb
|
662
|
+
- spec/services/forest_liana/scope_manager_spec.rb
|
663
|
+
- spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
|
664
|
+
- spec/services/forest_liana/ip_whitelist_checker_spec.rb
|
665
|
+
- spec/services/forest_liana/permissions_formatter_spec.rb
|
658
666
|
- spec/services/forest_liana/value_stat_getter_spec.rb
|
667
|
+
- spec/services/forest_liana/line_stat_getter_spec.rb
|
668
|
+
- spec/services/forest_liana/filters_parser_spec.rb
|
669
|
+
- spec/services/forest_liana/permissions_checker_live_queries_spec.rb
|
659
670
|
- spec/services/forest_liana/permissions_getter_spec.rb
|
660
671
|
- spec/services/forest_liana/pie_stat_getter_spec.rb
|
661
|
-
- spec/services/forest_liana/permissions_checker_live_queries_spec.rb
|
662
|
-
- spec/services/forest_liana/permissions_checker_acl_disabled_spec.rb
|
663
672
|
- spec/services/forest_liana/permissions_checker_acl_enabled_spec.rb
|
664
|
-
- spec/services/forest_liana/smart_action_field_validator_spec.rb
|
665
|
-
- spec/services/forest_liana/filters_parser_spec.rb
|
666
|
-
- spec/services/forest_liana/apimap_sorter_spec.rb
|
667
673
|
- spec/services/forest_liana/schema_adapter_spec.rb
|
668
|
-
- spec/services/forest_liana/
|
669
|
-
- spec/
|
670
|
-
- spec/services/forest_liana/ip_whitelist_checker_spec.rb
|
671
|
-
- spec/services/forest_liana/permissions_formatter_spec.rb
|
672
|
-
- spec/spec_helper.rb
|
673
|
-
- spec/lib/forest_liana/schema_file_updater_spec.rb
|
674
|
-
- spec/lib/forest_liana/bootstrapper_spec.rb
|
675
|
-
- spec/rails_helper.rb
|
676
|
-
- spec/requests/stats_spec.rb
|
674
|
+
- spec/services/forest_liana/resources_getter_spec.rb
|
675
|
+
- spec/requests/authentications_spec.rb
|
677
676
|
- spec/requests/actions_controller_spec.rb
|
677
|
+
- spec/requests/stats_spec.rb
|
678
678
|
- spec/requests/resources_spec.rb
|
679
|
-
- spec/
|
679
|
+
- spec/helpers/forest_liana/query_helper_spec.rb
|
680
|
+
- spec/helpers/forest_liana/schema_helper_spec.rb
|