pg_rails 7.5.3 → 7.5.4
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/pg_associable/spec/pg_associable/helpers_spec.rb +14 -0
- data/pg_engine/app/controllers/concerns/pg_engine/require_tenant_set.rb +1 -1
- data/pg_engine/app/controllers/pg_engine/base_controller.rb +5 -3
- data/pg_engine/app/controllers/pg_engine/base_public_controller.rb +4 -0
- data/pg_engine/app/controllers/pg_engine/health_controller.rb +0 -1
- data/pg_engine/app/models/email.rb +0 -1
- data/pg_engine/app/models/user.rb +9 -0
- data/pg_engine/app/models/user_account.rb +6 -2
- data/pg_engine/app/views/users/account_switcher/list.html.slim +20 -16
- data/pg_engine/config/initializers/acts_as_tenant.rb +3 -12
- data/pg_engine/db/seeds.rb +3 -4
- data/pg_engine/lib/pg_engine/utils/pg_logger.rb +5 -0
- data/pg_engine/spec/controllers/admin/accounts_controller_spec.rb +1 -1
- data/pg_engine/spec/controllers/admin/users_controller_spec.rb +1 -1
- data/pg_engine/spec/controllers/devise/sessions_controller_spec.rb +1 -0
- data/pg_engine/spec/controllers/users/registrations_controller_spec.rb +1 -1
- data/pg_engine/spec/factories/users.rb +5 -1
- data/pg_engine/spec/lib/pg_engine/mailgun/log_sync_spec.rb +4 -0
- data/pg_engine/spec/models/email_spec.rb +5 -0
- data/pg_engine/spec/requests/current_attributes_spec.rb +22 -0
- data/pg_engine/spec/requests/devise_spec.rb +24 -0
- data/pg_engine/spec/requests/users/switcher_spec.rb +11 -1
- data/pg_layout/app/views/devise/sessions/new.html.erb +1 -1
- data/pg_rails/lib/pg_rails/current_attributes_support.rb +6 -0
- data/pg_rails/lib/pg_rails/rspec_logger_matchers.rb +13 -1
- data/pg_rails/lib/version.rb +1 -1
- data/pg_scaffold/lib/generators/pg_rspec/scaffold/templates/edit_spec.rb +1 -1
- data/pg_scaffold/lib/generators/pg_rspec/scaffold/templates/index_spec.rb +1 -1
- data/pg_scaffold/lib/generators/pg_rspec/scaffold/templates/new_spec.rb +1 -1
- data/pg_scaffold/lib/generators/pg_rspec/scaffold/templates/show_spec.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f12846cd393967f0aac07acebf37b6799a9e67983da3ee892311aac4fd8a93b
|
4
|
+
data.tar.gz: dc6a9d65a1454b891de4bcd751f5f74f1b51a27d2fdc46c0baaf216db28a9306
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a832616bb110d3662bc1b2f07991f4dc9015ba95a0e17584b749c36058cea9d87928ca7403cc3c46a62789f13abdaff3c827be6bce8d3468420861380bddff3b
|
7
|
+
data.tar.gz: 3c103db1aa747b5fd09757c680505d203d06afad591b46ee1903d36037a35de5b2b02ef0475f15f4f8e222accfafb21a8f75a2932b83e93f7fa6c2a82eb763b7
|
@@ -1,6 +1,20 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
describe PgAssociable::Helpers do
|
4
|
+
include ActiveSupport::CurrentAttributes::TestHelper
|
5
|
+
|
6
|
+
describe 'current attributes gets reset' do
|
7
|
+
it 'sets a current attribute' do
|
8
|
+
Current.user = 1
|
9
|
+
expect(Current.namespace).to be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'the attribute gets reset' do
|
13
|
+
Current.namespace = 2
|
14
|
+
expect(Current.user).to be_nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
4
18
|
# DEPRECATED
|
5
19
|
describe '#pg_respond_buscar with query scope' do
|
6
20
|
let(:ctrl) do
|
@@ -17,18 +17,20 @@ module PgEngine
|
|
17
17
|
# if ActsAsTenant.current_tenant.blank? && !global_domain?
|
18
18
|
# raise ActsAsTenant::Errors::NoTenantSet
|
19
19
|
# end
|
20
|
+
# FIXME: if current_tenant.present? check it's not discarded
|
20
21
|
|
21
22
|
if Current.user.present?
|
23
|
+
user_accounts = Current.user.user_accounts.kept
|
22
24
|
if ActsAsTenant.current_tenant.present?
|
23
|
-
unless
|
25
|
+
unless user_accounts.exists?(account: ActsAsTenant.current_tenant)
|
24
26
|
sign_out(Current.user)
|
25
27
|
throw :warden, scope: :user, message: :invalid
|
26
28
|
end
|
27
29
|
|
28
30
|
@current_tenant_set_by_domain_or_subdomain = true
|
29
31
|
else
|
30
|
-
account = if
|
31
|
-
|
32
|
+
account = if user_accounts.count == 1
|
33
|
+
user_accounts.first.account
|
32
34
|
elsif session['current_user_account'].present?
|
33
35
|
UserAccount.where(id: session['current_user_account']).first&.account
|
34
36
|
end
|
@@ -71,6 +71,15 @@ class User < ApplicationRecord
|
|
71
71
|
|
72
72
|
attr_accessor :orphan
|
73
73
|
|
74
|
+
def active_for_authentication?
|
75
|
+
super && kept?
|
76
|
+
end
|
77
|
+
|
78
|
+
# TODO: test
|
79
|
+
def inactive_message
|
80
|
+
kept? ? super : :locked
|
81
|
+
end
|
82
|
+
|
74
83
|
after_create do
|
75
84
|
create_account unless orphan
|
76
85
|
end
|
@@ -32,8 +32,12 @@ class UserAccount < ApplicationRecord
|
|
32
32
|
belongs_to :creado_por, optional: true, class_name: 'User'
|
33
33
|
belongs_to :actualizado_por, optional: true, class_name: 'User'
|
34
34
|
|
35
|
+
# scope :kept, -> { undiscarded.joins(:account).merge(Account.kept) }
|
36
|
+
scope :kept, -> { joins(:account).merge(Account.kept) }
|
37
|
+
|
35
38
|
enumerize :profiles, in: {
|
36
|
-
|
37
|
-
|
39
|
+
administracion: 1,
|
40
|
+
operacion: 2,
|
41
|
+
lectura: 3
|
38
42
|
}, multiple: true
|
39
43
|
end
|
@@ -1,20 +1,24 @@
|
|
1
1
|
h1 Cambiar a otra cuenta
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
p
|
6
|
-
|
7
|
-
|
3
|
+
/ FIXME!: user_accounts add active column
|
4
|
+
- if @user_accounts.empty?
|
5
|
+
p No tenés ninguna cuenta disponible
|
6
|
+
- else
|
7
|
+
- if @current_tenant_set_by_domain_or_subdomain
|
8
|
+
p Estás en el dominio de #{ActsAsTenant.current_tenant} (#{request.host})
|
9
|
+
p
|
10
|
+
| Para cambiar de cuenta vas a tener que iniciar sesión en el dominio
|
11
|
+
|< de Bien o de la cuenta específica a la que quieras cambiar
|
8
12
|
|
9
|
-
ul.m-auto.list-group style="max-width: 20em"
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
= user_account.account
|
14
|
-
- elsif user_account.account == ActsAsTenant.current_tenant
|
15
|
-
b
|
13
|
+
ul.m-auto.list-group style="max-width: 20em"
|
14
|
+
- @user_accounts.each do |user_account|
|
15
|
+
li.list-group-item
|
16
|
+
- if @current_tenant_set_by_domain_or_subdomain
|
16
17
|
= user_account.account
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
- elsif user_account.account == ActsAsTenant.current_tenant
|
19
|
+
b
|
20
|
+
= user_account.account
|
21
|
+
| (Actual)
|
22
|
+
- else
|
23
|
+
= link_to user_account.account, users_account_switch_path(user_account),
|
24
|
+
'data-turbo-method': :post
|
@@ -1,16 +1,7 @@
|
|
1
1
|
ActsAsTenant.configure do |config|
|
2
|
-
config.require_tenant =
|
3
|
-
|
4
|
-
|
5
|
-
# # # tal vez en algunos casos de devise sí requeriría el tenant?
|
6
|
-
# # # creería que no, el único lugar en donde se debería queriar
|
7
|
-
# # # User es en devise y es para obtener el current_user
|
8
|
-
# # # hay que ver luego qué pasa con invitable
|
9
|
-
# # false
|
10
|
-
# # else
|
11
|
-
# # true
|
12
|
-
# # end
|
13
|
-
# end
|
2
|
+
config.require_tenant = lambda do
|
3
|
+
Current.namespace == :users
|
4
|
+
end
|
14
5
|
|
15
6
|
# Customize the query for loading the tenant in background jobs
|
16
7
|
# config.job_scope = ->{ all }
|
data/pg_engine/db/seeds.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
DatabaseCleaner.clean_with(:truncation, except: %w(ar_internal_metadata))
|
2
2
|
|
3
|
-
|
4
3
|
bien = FactoryBot.create(:account, nombre: 'Bien', subdomain: 'bien')
|
5
4
|
rosso = FactoryBot.create(:user, email: 'mrosso10@gmail.com', nombre: 'Martín', apellido: 'Rosso', password: 'admin123',
|
6
5
|
confirmed_at: Time.now, developer: true, orphan: true)
|
7
6
|
|
8
|
-
bien.user_accounts.create(user: rosso, profiles: [:
|
7
|
+
bien.user_accounts.create(user: rosso, profiles: [:administracion])
|
9
8
|
|
10
9
|
racionalismo = FactoryBot.create(:account, nombre: 'Racionalismo', subdomain: 'racionalismo')
|
11
10
|
baruch = FactoryBot.create(:user, email: 'baruch@bien.com', nombre: 'Baruch', apellido: 'Spinoza', password: 'admin123',
|
@@ -13,5 +12,5 @@ baruch = FactoryBot.create(:user, email: 'baruch@bien.com', nombre: 'Baruch', ap
|
|
13
12
|
rené = FactoryBot.create(:user, email: 'rene@bien.com', nombre: 'René', apellido: 'Descartes', password: 'admin123',
|
14
13
|
confirmed_at: Time.now, orphan: true)
|
15
14
|
|
16
|
-
racionalismo.user_accounts.create(user: baruch, profiles: [:
|
17
|
-
racionalismo.user_accounts.create(user: rené, profiles: [:
|
15
|
+
racionalismo.user_accounts.create(user: baruch, profiles: [:administracion])
|
16
|
+
racionalismo.user_accounts.create(user: rené, profiles: [:operacion])
|
@@ -36,6 +36,11 @@ def pg_log(*)
|
|
36
36
|
PgEngine::PgLogger.log(*)
|
37
37
|
end
|
38
38
|
|
39
|
+
# To be called inside a method or block that is deprecated
|
40
|
+
def pg_deprecation(method, message = nil, deprecator:)
|
41
|
+
deprecator.warn(deprecator.deprecation_warning(method, message), caller_locations(3))
|
42
|
+
end
|
43
|
+
|
39
44
|
module PgEngine
|
40
45
|
class PgLogger
|
41
46
|
def self.test_logged_messages
|
@@ -5,6 +5,10 @@ describe PgEngine::Mailgun::LogSync, vcr: { cassette_name: 'mailgun/log_sync_dow
|
|
5
5
|
match_requests_on: %i[method host] } do
|
6
6
|
let(:instancia) { described_class }
|
7
7
|
|
8
|
+
before do
|
9
|
+
ActsAsTenant.current_tenant = nil
|
10
|
+
end
|
11
|
+
|
8
12
|
describe '#download' do
|
9
13
|
subject do
|
10
14
|
instancia.download
|
@@ -11,6 +11,11 @@ RSpec.describe Email do
|
|
11
11
|
expect(email).to be_persisted
|
12
12
|
end
|
13
13
|
|
14
|
+
it 'se persiste cuando no hay tenant' do
|
15
|
+
ActsAsTenant.current_tenant = nil
|
16
|
+
expect(email).to be_persisted
|
17
|
+
end
|
18
|
+
|
14
19
|
describe 'update_status!' do
|
15
20
|
context 'cuando hay accepted y delivered' do
|
16
21
|
subject do
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe 'current attributes' do
|
4
|
+
it 'Current gets reset between requests' do
|
5
|
+
allow(Current).to receive(:namespace=)
|
6
|
+
allow(Current.instance).to receive(:reset)
|
7
|
+
get '/contacto/new'
|
8
|
+
expect(Current).to have_received(:namespace=).with(:public)
|
9
|
+
expect(Current.instance).to have_received(:reset).at_least(:twice)
|
10
|
+
expect(Current.namespace).to be_nil
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'sets a current attribute' do
|
14
|
+
Current.user = 1
|
15
|
+
expect(Current.namespace).to be_nil
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'the attribute gets reset' do
|
19
|
+
Current.namespace = 2
|
20
|
+
expect(Current.user).to be_nil
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe 'devise flows' do
|
4
|
+
describe 'resend confirmation' do
|
5
|
+
subject do
|
6
|
+
post '/users/confirmation', params: { user: { email: user.email } }
|
7
|
+
end
|
8
|
+
|
9
|
+
let!(:user) { create :user, confirmed_at: nil }
|
10
|
+
|
11
|
+
it do
|
12
|
+
expect { subject }.to change(ActionMailer::Base.deliveries, :length).by(1)
|
13
|
+
end
|
14
|
+
|
15
|
+
it do
|
16
|
+
subject
|
17
|
+
expect(response).to redirect_to(new_user_session_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
it do
|
21
|
+
expect { subject }.not_to have_errored
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -26,6 +26,16 @@ describe 'redirection' do
|
|
26
26
|
expect(response).to have_http_status(:ok)
|
27
27
|
end
|
28
28
|
|
29
|
+
context 'when account is discarded' do
|
30
|
+
it do
|
31
|
+
get '/u/cosas'
|
32
|
+
expect(response.body).to include 'No hay cosos que mostrar'
|
33
|
+
logged_user.user_accounts.first.account.discard!
|
34
|
+
get '/u/cosas'
|
35
|
+
expect(response).to redirect_to users_account_switcher_path
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
29
39
|
context 'when has been removed from account' do
|
30
40
|
let!(:other_account) { create :account }
|
31
41
|
let!(:other_user_account) { logged_user.user_accounts.create(account: other_account) }
|
@@ -48,7 +58,7 @@ describe 'redirection' do
|
|
48
58
|
expect(response.body).to include other_account.to_s
|
49
59
|
expect(response.body).to include 'No hay cosos que mostrar'
|
50
60
|
other_user_account.destroy!
|
51
|
-
get '/'
|
61
|
+
get '/u/cosas'
|
52
62
|
expect(response).to redirect_to users_account_switcher_path
|
53
63
|
end
|
54
64
|
end
|
@@ -33,6 +33,18 @@ module PgEngine
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
def failure_message_when_negated
|
37
|
+
msg = "expected not to #{@level || log}"
|
38
|
+
msg << "with text: #{@text}" if @text.present?
|
39
|
+
return msg unless @new_messages.any?
|
40
|
+
|
41
|
+
msg << "\nLogged messages:"
|
42
|
+
@new_messages.each do |level, message|
|
43
|
+
msg << "\n #{level}: #{message[0..500]}"
|
44
|
+
end
|
45
|
+
msg
|
46
|
+
end
|
47
|
+
|
36
48
|
def failure_message
|
37
49
|
msg = "expected to #{@level || log}"
|
38
50
|
msg << "with text: #{@text}" if @text.present?
|
@@ -40,7 +52,7 @@ module PgEngine
|
|
40
52
|
|
41
53
|
msg << "\nLogged messages:"
|
42
54
|
@new_messages.each do |level, message|
|
43
|
-
msg << "\n #{level}: #{message[0..
|
55
|
+
msg << "\n #{level}: #{message[0..500]}"
|
44
56
|
end
|
45
57
|
msg
|
46
58
|
end
|
data/pg_rails/lib/version.rb
CHANGED
@@ -9,7 +9,7 @@ RSpec.describe "<%= ruta_vistas %>/edit", <%= type_metatag(:view) %> do
|
|
9
9
|
helper <%= mountable_engine? %>::Engine.routes.url_helpers
|
10
10
|
<% end -%>
|
11
11
|
|
12
|
-
let(:user) { create(:user, :
|
12
|
+
let(:user) { create(:user, :developer) }
|
13
13
|
|
14
14
|
before(:each) do
|
15
15
|
sign_in user
|
@@ -9,7 +9,7 @@ RSpec.describe "<%= ruta_vistas %>/index", <%= type_metatag(:view) %> do
|
|
9
9
|
helper <%= mountable_engine? %>::Engine.routes.url_helpers
|
10
10
|
<% end -%>
|
11
11
|
|
12
|
-
let(:user) { create(:user, :
|
12
|
+
let(:user) { create(:user, :developer) }
|
13
13
|
let!(:<%= plural_name %>) { create_list(:<%= nombre_tabla_completo_singular %>, rand(10..20))}
|
14
14
|
|
15
15
|
before(:each) do
|
@@ -9,7 +9,7 @@ RSpec.describe "<%= ruta_vistas %>/new", <%= type_metatag(:view) %> do
|
|
9
9
|
helper <%= mountable_engine? %>::Engine.routes.url_helpers
|
10
10
|
<% end -%>
|
11
11
|
|
12
|
-
let(:user) { create(:user, :
|
12
|
+
let(:user) { create(:user, :developer) }
|
13
13
|
|
14
14
|
before(:each) do
|
15
15
|
sign_in user
|
@@ -9,7 +9,7 @@ RSpec.describe "<%= ruta_vistas %>/show", <%= type_metatag(:view) %> do
|
|
9
9
|
helper <%= mountable_engine? %>::Engine.routes.url_helpers
|
10
10
|
<% end -%>
|
11
11
|
|
12
|
-
let(:user) { create(:user, :
|
12
|
+
let(:user) { create(:user, :developer) }
|
13
13
|
|
14
14
|
before(:each) do
|
15
15
|
sign_in user
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.5.
|
4
|
+
version: 7.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martín Rosso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -878,6 +878,8 @@ files:
|
|
878
878
|
- pg_engine/spec/pg_engine/pdf_preview_generator_spec.rb
|
879
879
|
- pg_engine/spec/requests/admin/eventos_spec.rb
|
880
880
|
- pg_engine/spec/requests/base_controller_requests_spec.rb
|
881
|
+
- pg_engine/spec/requests/current_attributes_spec.rb
|
882
|
+
- pg_engine/spec/requests/devise_spec.rb
|
881
883
|
- pg_engine/spec/requests/users/accounts_spec.rb
|
882
884
|
- pg_engine/spec/requests/users/base_controller_spec.rb
|
883
885
|
- pg_engine/spec/requests/users/date_jumper_spec.rb
|