From 37c16a067d0a73500c3a490f9fdead7bd21d359b Mon Sep 17 00:00:00 2001 From: Sergei Tsoganov Date: Thu, 16 Mar 2023 11:28:25 +0200 Subject: [PATCH] Updated dependency ransack to v4 --- app/controllers/admin/disputes_controller.rb | 2 +- app/models/account.rb | 12 ++++- app/models/account_activity.rb | 8 +++ app/models/api_log/db.rb | 8 +++ app/models/auction.rb | 8 +++ app/models/bank_statement.rb | 4 ++ app/models/billing/price.rb | 4 ++ app/models/blocked_domain.rb | 11 +++- app/models/contact.rb | 8 +++ app/models/dispute.rb | 8 +++ app/models/domain.rb | 8 +++ app/models/invoice.rb | 8 +++ app/models/reserved_domain.rb | 14 +++-- app/models/version/contact_version.rb | 10 +++- app/models/version/domain_version.rb | 8 +++ .../repp/v1/contacts/create_test.rb | 54 +++++++++---------- 16 files changed, 139 insertions(+), 36 deletions(-) diff --git a/app/controllers/admin/disputes_controller.rb b/app/controllers/admin/disputes_controller.rb index 2b9eb041f..cb2ac6608 100644 --- a/app/controllers/admin/disputes_controller.rb +++ b/app/controllers/admin/disputes_controller.rb @@ -56,7 +56,7 @@ module Admin private def sortable_dispute_query_for(disputes, query, closed: false) - @q = disputes.order(:domain_name).search(query) + @q = disputes.order(:domain_name).ransack(query) disputes = @q.result.page(closed ? params[:closed_page] : params[:page]) return disputes.per(params[:results_per_page]) if params[:results_per_page].present? diff --git a/app/models/account.rb b/app/models/account.rb index 7639c61dd..69dabe550 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -6,7 +6,7 @@ class Account < ApplicationRecord validates :account_type, presence: true - CASH = 'cash' + CASH = 'cash'.freeze def activities account_activities @@ -16,7 +16,15 @@ class Account < ApplicationRecord [id, balance, currency, registrar] end + def self.ransackable_associations(auth_object = nil) + super + end + + def self.ransackable_attributes(auth_object = nil) + super + end + def self.csv_header - ['Id', 'Balance', 'Currency', 'Registrar'] + %w[Id Balance Currency Registrar] end end diff --git a/app/models/account_activity.rb b/app/models/account_activity.rb index 38fa70358..03af640aa 100644 --- a/app/models/account_activity.rb +++ b/app/models/account_activity.rb @@ -25,6 +25,14 @@ class AccountActivity < ApplicationRecord end class << self + def ransackable_attributes(auth_object = nil) + super + end + + def ransackable_associations(auth_object = nil) + super + end + def types_for_select [CREATE, RENEW, ADD_CREDIT, UPDATE_CREDIT].map { |x| [I18n.t(x), x] } end diff --git a/app/models/api_log/db.rb b/app/models/api_log/db.rb index ca1162e8f..c6da66558 100644 --- a/app/models/api_log/db.rb +++ b/app/models/api_log/db.rb @@ -4,5 +4,13 @@ module ApiLog # to_sym is needed because passing a string to ActiveRecord::Base.establish_connection # for a configuration lookup is deprecated establish_connection "api_log_#{Rails.env}".to_sym + + def self.ransackable_associations(auth_object = nil) + super + end + + def self.ransackable_attributes(auth_object = nil) + super + end end end diff --git a/app/models/auction.rb b/app/models/auction.rb index f0aa1fe6d..f02938d97 100644 --- a/app/models/auction.rb +++ b/app/models/auction.rb @@ -33,6 +33,14 @@ class Auction < ApplicationRecord where('domain ilike ?', "%#{domain_name.strip}%") if domain_name.present? } + def self.ransackable_attributes(auth_object = nil) + super + end + + def self.ransackable_associations(auth_object = nil) + super + end + def self.pending(domain_name) find_by(domain: domain_name.to_s, status: PENDING_STATUSES) end diff --git a/app/models/bank_statement.rb b/app/models/bank_statement.rb index d57f3e4d7..ae058734e 100644 --- a/app/models/bank_statement.rb +++ b/app/models/bank_statement.rb @@ -10,6 +10,10 @@ class BankStatement < ApplicationRecord PARTIALLY_BINDED = 'partially_binded'.freeze NOT_BINDED = 'not_binded'.freeze + def self.ransackable_attributes(auth_object = nil) + super + end + # TODO: Cache this to database so it can be used for searching def status if bank_transactions.unbinded.count == bank_transactions.count diff --git a/app/models/billing/price.rb b/app/models/billing/price.rb index 519d53001..0dd7487ba 100644 --- a/app/models/billing/price.rb +++ b/app/models/billing/price.rb @@ -21,6 +21,10 @@ module Billing new_record? || duration_changed? end + def self.ransackable_attributes(auth_object = nil) + super + end + def self.operation_categories %w[create renew] end diff --git a/app/models/blocked_domain.rb b/app/models/blocked_domain.rb index f82faa771..6887ab23d 100644 --- a/app/models/blocked_domain.rb +++ b/app/models/blocked_domain.rb @@ -5,14 +5,21 @@ class BlockedDomain < ApplicationRecord validates :name, domain_name: true, uniqueness: true - class << self + def ransackable_attributes(auth_object = nil) + super + end + + def ransackable_associations(auth_object = nil) + super + end + def by_domain(name) where(name: name) end end - def name= val + def name=(val) super SimpleIDN.to_unicode(val) end diff --git a/app/models/contact.rb b/app/models/contact.rb index 36784509b..2ab986aee 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -183,6 +183,14 @@ class Contact < ApplicationRecord # class << self + def ransackable_associations(auth_object = nil) + super + end + + def ransackable_attributes(auth_object = nil) + super + end + def search_by_query(query) res = search(code_cont: query).result res.reduce([]) { |o, v| o << { id: v[:id], display_key: "#{v.name} (#{v.code})" } } diff --git a/app/models/dispute.rb b/app/models/dispute.rb index f5a948355..64773e752 100644 --- a/app/models/dispute.rb +++ b/app/models/dispute.rb @@ -21,6 +21,14 @@ class Dispute < ApplicationRecord Domain.find_by(name: domain_name) end + def self.ransackable_associations(auth_object = nil) + super + end + + def self.ransackable_attributes(auth_object = nil) + super + end + def self.close_by_domain(domain_name) dispute = Dispute.active.find_by(domain_name: domain_name) return false unless dispute diff --git a/app/models/domain.rb b/app/models/domain.rb index f770b623f..ecca84494 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -245,6 +245,14 @@ class Domain < ApplicationRecord end class << self + def ransackable_associations(auth_object = nil) + super + end + + def ransackable_attributes(auth_object = nil) + super + end + def nameserver_required? Setting.nameserver_required end diff --git a/app/models/invoice.rb b/app/models/invoice.rb index 64366b997..623b7f873 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -144,6 +144,14 @@ class Invoice < ApplicationRecord ] end + def self.ransackable_associations(auth_object = nil) + super + end + + def self.ransackable_attributes(auth_object = nil) + super + end + def self.csv_header ['Number', 'Buyer', 'Due Date', 'Receipt Date', 'Issue Date', 'Total', 'Currency', 'Seller Name'] end diff --git a/app/models/reserved_domain.rb b/app/models/reserved_domain.rb index 10d5edd11..e02569466 100644 --- a/app/models/reserved_domain.rb +++ b/app/models/reserved_domain.rb @@ -13,16 +13,24 @@ class ReservedDomain < ApplicationRecord self.ignored_columns = %w[legacy_id] class << self + def ransackable_attributes(auth_object = nil) + super + end + + def ransackable_associations(auth_object = nil) + super + end + def pw_for(domain_name) name_in_ascii = SimpleIDN.to_ascii(domain_name) by_domain(domain_name).first.try(:password) || by_domain(name_in_ascii).first.try(:password) end - def by_domain name + def by_domain(name) where(name: name) end - def new_password_for name + def new_password_for(name) record = by_domain(name).first return unless record @@ -31,7 +39,7 @@ class ReservedDomain < ApplicationRecord end end - def name= val + def name=(val) super SimpleIDN.to_unicode(val) end diff --git a/app/models/version/contact_version.rb b/app/models/version/contact_version.rb index d3ff1130c..b286bc08d 100644 --- a/app/models/version/contact_version.rb +++ b/app/models/version/contact_version.rb @@ -13,10 +13,18 @@ class Version::ContactVersion < PaperTrail::Version contact.ident_human_description, contact.registrar, event, - created_at.to_formatted_s(:db) + created_at.to_formatted_s(:db), ] end + def self.ransackable_attributes(auth_object = nil) + super + end + + def self.ransackable_associations(auth_object = nil) + super + end + def self.csv_header ['Name', 'ID', 'Ident', 'Registrar', 'Action', 'Created at'] end diff --git a/app/models/version/domain_version.rb b/app/models/version/domain_version.rb index e84fc9da2..85724050a 100644 --- a/app/models/version/domain_version.rb +++ b/app/models/version/domain_version.rb @@ -18,6 +18,14 @@ class Version::DomainVersion < PaperTrail::Version ] end + def self.ransackable_attributes(auth_object = nil) + super + end + + def self.ransackable_associations(auth_object = nil) + super + end + def self.was_contact_linked?(contact_id) sql = <<-SQL SELECT diff --git a/test/integration/repp/v1/contacts/create_test.rb b/test/integration/repp/v1/contacts/create_test.rb index 3d0c2f646..b9eda19c1 100644 --- a/test/integration/repp/v1/contacts/create_test.rb +++ b/test/integration/repp/v1/contacts/create_test.rb @@ -8,12 +8,12 @@ class ReppV1ContactsCreateTest < ActionDispatch::IntegrationTest @auth_headers = { 'Authorization' => token } - adapter = ENV["shunter_default_adapter"].constantize.new + adapter = ENV['shunter_default_adapter'].constantize.new adapter&.clear! end def test_creates_new_contact - request_body = { + request_body = { contact: { name: 'Donald Trump', phone: '+372.51111112', @@ -60,8 +60,8 @@ class ReppV1ContactsCreateTest < ActionDispatch::IntegrationTest street: 'Wismari 13', zip: '12345', country_code: 'EE', - } - } + }, + }, } post '/repp/v1/contacts', headers: @auth_headers, params: request_body @@ -83,17 +83,17 @@ class ReppV1ContactsCreateTest < ActionDispatch::IntegrationTest def test_requires_contact_address_when_processing_enabled Setting.address_processing = true - request_body = { + request_body = { "contact": { - "name": "Donald Trump", - "phone": "+372.51111112", - "email": "donald@trumptower.com", + "name": 'Donald Trump', + "phone": '+372.51111112', + "email": 'donald@trumptower.com', "ident": { - "ident_type": "priv", - "ident_country_code": "EE", - "ident": "39708290069" - } - } + 'ident_type': 'priv', + 'ident_country_code': 'EE', + 'ident': '39708290069', + }, + }, } post '/repp/v1/contacts', headers: @auth_headers, params: request_body @@ -107,17 +107,17 @@ class ReppV1ContactsCreateTest < ActionDispatch::IntegrationTest end def test_validates_ident_code - request_body = { + request_body = { "contact": { - "name": "Donald Trump", - "phone": "+372.51111112", - "email": "donald@trumptower.com", + "name": 'Donald Trump', + "phone": '+372.51111112', + "email": 'donald@trumptower.com', "ident": { - "ident_type": "priv", - "ident_country_code": "EE", - "ident": "123123123" - } - } + "ident_type": 'priv', + "ident_country_code": 'EE', + "ident": '123123123', + }, + }, } post '/repp/v1/contacts', headers: @auth_headers, params: request_body @@ -158,10 +158,10 @@ class ReppV1ContactsCreateTest < ActionDispatch::IntegrationTest end def test_returns_error_response_if_throttled - ENV["shunter_default_threshold"] = '1' - ENV["shunter_enabled"] = 'true' + ENV['shunter_default_threshold'] = '1' + ENV['shunter_enabled'] = 'true' - request_body = { + request_body = { contact: { name: 'Donald Trump', phone: '+372.51111112', @@ -181,7 +181,7 @@ class ReppV1ContactsCreateTest < ActionDispatch::IntegrationTest assert_response :bad_request assert_equal json[:code], 2502 assert response.body.include?(Shunter.default_error_message) - ENV["shunter_default_threshold"] = '10000' - ENV["shunter_enabled"] = 'false' + ENV['shunter_default_threshold'] = '10000' + ENV['shunter_enabled'] = 'false' end end