diff --git a/.codeclimate.yml b/.codeclimate.yml index 1b9e4ee26..346b01897 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -13,7 +13,8 @@ plugins: enabled: true config: languages: - - ruby + ruby: + mass_threshold: 26 - javascript eslint: enabled: true diff --git a/app/controllers/repp/v1/base_controller.rb b/app/controllers/repp/v1/base_controller.rb index 339d03311..05386b535 100644 --- a/app/controllers/repp/v1/base_controller.rb +++ b/app/controllers/repp/v1/base_controller.rb @@ -1,6 +1,6 @@ module Repp module V1 - class BaseController < ActionController::API + class BaseController < ActionController::API # rubocop:disable Metrics/ClassLength rescue_from ActiveRecord::RecordNotFound, with: :not_found_error before_action :authenticate_user before_action :validate_webclient_ca diff --git a/app/controllers/repp/v1/contacts_controller.rb b/app/controllers/repp/v1/contacts_controller.rb index f3e40a119..92f89a160 100644 --- a/app/controllers/repp/v1/contacts_controller.rb +++ b/app/controllers/repp/v1/contacts_controller.rb @@ -1,7 +1,7 @@ require 'serializers/repp/contact' module Repp module V1 - class ContactsController < BaseController + class ContactsController < BaseController # rubocop:disable Metrics/ClassLength before_action :find_contact, only: %i[show update destroy] api :get, '/repp/v1/contacts' diff --git a/app/controllers/repp/v1/domains/statuses_controller.rb b/app/controllers/repp/v1/domains/statuses_controller.rb index 1b1d47477..22e73df60 100644 --- a/app/controllers/repp/v1/domains/statuses_controller.rb +++ b/app/controllers/repp/v1/domains/statuses_controller.rb @@ -10,7 +10,7 @@ module Repp param :domain_name, String, required: true, desc: 'Domain name' param :status, String, required: true, desc: 'Status to be removed' def destroy - return editing_failed unless @domain.statuses.include?(params[:id]) + return editing_failed unless domain_with_status?(params[:id]) @domain.statuses = @domain.statuses.delete(params[:id]) if @domain.save @@ -25,18 +25,22 @@ module Repp param :domain_name, String, required: true, desc: 'Domain name' param :status, String, required: true, desc: 'Status to be added' def update - return editing_failed if @domain.statuses.include?(params[:id]) + return editing_failed if domain_with_status?(params[:id]) - @domain.statuses = @domain.statuses << params[:id] - # rubocop:disable Style/AndOr - handle_errors(@domain) and return unless @domain.save - # rubocop:enable Style/AndOr - - render_success(data: { domain: @domain.name, status: params[:id] }) + @domain.statuses << params[:id] + if @domain.save + render_success(data: { domain: @domain.name, status: params[:id] }) + else + handle_errors(@domain) + end end private + def domain_with_status? + @domain.statuses.include?(params[:id]) + end + def verify_status allowed_statuses = [DomainStatus::CLIENT_HOLD].freeze stat = params[:id] diff --git a/app/controllers/repp/v1/domains_controller.rb b/app/controllers/repp/v1/domains_controller.rb index 8e77cd219..70970b7e1 100644 --- a/app/controllers/repp/v1/domains_controller.rb +++ b/app/controllers/repp/v1/domains_controller.rb @@ -1,7 +1,7 @@ require 'serializers/repp/domain' module Repp module V1 - class DomainsController < BaseController + class DomainsController < BaseController # rubocop:disable Metrics/ClassLength before_action :set_authorized_domain, only: %i[transfer_info destroy] before_action :forward_registrar_id, only: %i[create destroy] before_action :set_domain, only: %i[show update] @@ -11,13 +11,9 @@ module Repp def index records = current_user.registrar.domains domains = records.limit(limit).offset(offset) - domains = domains.pluck(:name) unless index_params[:details] == 'true' - if index_params[:details] == 'true' - domains = domains.map { |d| Serializers::Repp::Domain.new(d).to_json } - end - - render_success(data: { domains: domains, total_number_of_records: records.count }) + render_success(data: { domains: serialized_domains(domains), + total_number_of_records: records.count }) end api :GET, '/repp/v1/domains/:domain_name' @@ -136,6 +132,12 @@ module Repp private + def serialized_domains(domains) + return domains.pluck(:name) unless index_params[:details] == 'true' + + domains.map { |d| Serializers::Repp::Domain.new(d).to_json } + end + def initiate_transfer(transfer) domain = Epp::Domain.find_or_initialize_by(name: transfer[:domain_name]) action = Actions::DomainTransfer.new(domain, transfer[:transfer_code], diff --git a/app/models/actions/domain_create.rb b/app/models/actions/domain_create.rb index 274a070fb..0c3e19805 100644 --- a/app/models/actions/domain_create.rb +++ b/app/models/actions/domain_create.rb @@ -65,7 +65,7 @@ module Actions def assign_domain_attributes domain.name = params[:name].strip.downcase - domain.registrar = Registrar.find(params[:registrar_id]) + domain.registrar = current_registrar assign_domain_period assign_domain_auth_codes domain.dnskeys_attributes = params[:dnskeys_attributes] if params[:dnskeys_attributes] @@ -111,9 +111,12 @@ module Actions return unless domain.period period = Integer(domain.period) + domain.expire_time = calculate_expiry(period) + end + + def calculate_expiry(period) plural_period_unit_name = (domain.period_unit == 'm' ? 'months' : 'years').to_sym - exp = (Time.zone.now.advance(plural_period_unit_name => period) + 1.day).beginning_of_day - domain.expire_time = exp + (Time.zone.now.advance(plural_period_unit_name => period) + 1.day).beginning_of_day end def action_billable? @@ -173,5 +176,9 @@ module Actions domain.errors.delete(:name_dirty) if domain.errors[:puny_label].any? domain.errors.any? end + + def current_registrar + Registrar.find(params[:registrar_id]) + end end end diff --git a/app/models/actions/domain_delete.rb b/app/models/actions/domain_delete.rb index f3197c452..929b1f6f7 100644 --- a/app/models/actions/domain_delete.rb +++ b/app/models/actions/domain_delete.rb @@ -39,11 +39,15 @@ module Actions true end + def ask_delete_verification + domain.registrant_verification_asked!(params, user.id) + domain.pending_delete! + domain.manage_automatic_statuses + end + def destroy if verify? - domain.registrant_verification_asked!(params, user.id) - domain.pending_delete! - domain.manage_automatic_statuses + ask_delete_verification else domain.set_pending_delete! end diff --git a/app/models/actions/domain_renew.rb b/app/models/actions/domain_renew.rb index ba1ac8fb3..047d24f17 100644 --- a/app/models/actions/domain_renew.rb +++ b/app/models/actions/domain_renew.rb @@ -11,15 +11,15 @@ module Actions end def call - renew + if !domain.renewable? || domain.invalid? + domain.add_renew_epp_errors + false + else + renew + end end def renew - if !domain.renewable? || domain.invalid? - domain.add_renew_epp_errors - return - end - task = Domains::BulkRenew::SingleDomainRenew.run(domain: domain, period: params[:period], unit: params[:period_unit],