Merge branch 'master' into remove-spring-gem

# Conflicts:
#	config/environments/test.rb
This commit is contained in:
Artur Beljajev 2018-06-14 13:33:14 +03:00
commit 78d7d5d894
39 changed files with 107 additions and 188 deletions

View file

@ -1,5 +1,4 @@
class EppController < ApplicationController
include Iptable
layout false
protect_from_forgery with: :null_session
skip_before_action :verify_authenticity_token
@ -359,12 +358,6 @@ class EppController < ApplicationController
# rubocop: enable Metrics/CyclomaticComplexity
# rubocop: enable Metrics/PerceivedComplexity
def iptables_counter_update
return if ENV['iptables_counter_enabled'].blank? && ENV['iptables_counter_enabled'] != 'true'
return if current_user.blank?
counter_update(current_user.registrar_code, ENV['iptables_server_ip'])
end
def resource
name = self.class.to_s.sub("Epp::","").sub("Controller","").underscore.singularize
instance_variable_get("@#{name}")
@ -407,4 +400,26 @@ class EppController < ApplicationController
timeout = 5.minutes
epp_session.updated_at < (Time.zone.now - timeout)
end
def iptables_counter_update
return if ENV['iptables_counter_enabled'].blank? && ENV['iptables_counter_enabled'] != 'true'
return if current_user.blank?
counter_update(current_user.registrar_code, ENV['iptables_server_ip'])
end
def counter_update(registrar_code, ip)
counter_proc = "/proc/net/xt_recent/#{registrar_code}"
begin
File.open(counter_proc, 'a') do |f|
f.puts "+#{ip}"
end
rescue Errno::ENOENT => e
logger.error "IPTABLES COUNTER UPDATE: cannot open #{counter_proc}: #{e}"
rescue Errno::EACCES => e
logger.error "IPTABLES COUNTER UPDATE: no permission #{counter_proc}: #{e}"
rescue IOError => e
logger.error "IPTABLES COUNTER UPDATE: cannot write #{ip} to #{counter_proc}: #{e}"
end
end
end

View file

@ -372,8 +372,6 @@ class Contact < ActiveRecord::Base
end
def related_domain_descriptions
ActiveSupport::Deprecation.warn('Use #domain_names_with_roles')
@desc = {}
registrant_domains.each do |dom|

View file

@ -199,21 +199,6 @@ class Domain < ActiveRecord::Base
statuses.include? DomainStatus::SERVER_TECH_CHANGE_PROHIBITED
end
def self.clean_expired_pendings
ActiveSupport::Deprecation.instance.deprecation_warning(DomainCron, __method__)
DomainCron.send(__method__)
end
def self.start_redemption_grace_period
ActiveSupport::Deprecation.instance.deprecation_warning(DomainCron, __method__)
DomainCron.send(__method__)
end
def self.destroy_delete_candidates
ActiveSupport::Deprecation.instance.deprecation_warning(DomainCron, __method__)
DomainCron.send(__method__)
end
class << self
def nameserver_required?
Setting.nameserver_required

View file

@ -92,7 +92,7 @@ class DomainCron
if domain.save(validate: false)
::PaperTrail.whodunnit = "cron - #{__method__}"
DomainDeleteJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60 + DateTime.now.minute))).minutes.from_now)
STDOUT << "#{Time.zone.now.utc} Domain.destroy_delete_candidates: job added by deleteCandidate status ##{domain.id} (#{domain.name})\n" unless Rails.env.test?
STDOUT << "#{Time.zone.now.utc} DomainCron.destroy_delete_candidates: job added by deleteCandidate status ##{domain.id} (#{domain.name})\n" unless Rails.env.test?
c += 1
end
end

View file

@ -1,18 +1,15 @@
require 'countries'
require 'action_view'
class SortedCountry
class << self
include ActionView::Helpers
def all_options(selected = nil)
quick_options = options_for_select(quick_list, { selected: selected })
quick_options = options_for_select(quick_list, selected: selected)
# no double select
selected = quick_list.map(&:second).include?(selected) ? '' : selected
selected = quick_list.map(&:second).include?(selected) ? '' : selected
all_options = options_for_select([['---', '---']] + all_sorted_truncated,
{ selected: selected, disabled: ['---'] })
all_options = options_for_select([['---', '---']] + all_sorted_truncated,
selected: selected, disabled: ['---'])
quick_options + all_options
end
@ -21,12 +18,12 @@ class SortedCountry
def quick_list
@quick_list ||=
[
['Estonia', 'EE'],
['Finland', 'FI'],
['Latvia', 'LV'],
['Lithuania', 'LT'],
%w[Estonia' EE],
%w[Finland FI],
%w[Latvia LV],
%w[Lithuania LT],
['Russian Federation', 'RU'],
['Sweden', 'SE'],
%w[Sweden SE],
['United States', 'US']
]
end

View file

@ -40,8 +40,8 @@ module DomainNameRegistry
# Autoload all model subdirs
config.autoload_paths += Dir[Rails.root.join('app', 'models', '**/')]
config.autoload_paths << Rails.root.join('lib')
config.eager_load_paths << config.root.join('lib', 'validators')
config.watchable_dirs['lib'] = %i[rb]
# Add the fonts path
config.assets.paths << Rails.root.join('vendor', 'assets', 'fonts')

View file

@ -1,52 +1,28 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
config.cache_classes = true
# Do not eager load code on boot. This avoids loading your whole application
# just for the purpose of running a single test. If you are using a tool that
# preloads Rails for running tests, you may have to set it to true.
config.eager_load = false
# Configure static asset server for tests with Cache-Control for performance.
config.serve_static_files = true
config.static_cache_control = 'public, max-age=3600'
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Raise exceptions instead of rendering exception templates.
config.action_dispatch.show_exceptions = false
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
config.active_support.test_order = :random
ActiveSupport::Deprecation.silenced = true
# For rails-settings-cached conflict
config.cache_store = :file_store, 'tmp/cache_test'
config.active_support.deprecation = :raise
config.logger = ActiveSupport::Logger.new(nil)
config.action_view.raise_on_missing_translations = true
# The available log levels are: :debug, :info, :warn, :error, :fatal, and :unknown,
# corresponding to the log level numbers from 0 up to 5 respectively
config.log_level = :debug
config.active_job.queue_adapter = :test
config.logger = ActiveSupport::Logger.new(nil)
config.active_support.test_order = :random # :random is the default in Rails 5
# If set to :null_store, Setting.x returns nil after first spec runs (database is emptied)
config.cache_store = :memory_store
end
# In this mode, any jobs you queue will be run in the same thread, synchronously
# (that is, MyJob.enqueue runs the job and won't return until it's completed).
# This makes your application's behavior easier to test
Que.mode = :sync

View file

@ -1,3 +1,5 @@
require 'devise_custom_failure'
# Use this hook to configure devise mailer, warden hooks and so forth.
# Many of these configuration options can be set straight in your model.
Devise.setup do |config|

View file

@ -0,0 +1,4 @@
require 'core_ext/array'
require 'gem_ext/builder'
require 'gem_ext/i18n'
require 'gem_ext/paper_trail'

View file

@ -51,8 +51,8 @@ if con.present? && con.table_exists?('settings')
Setting.save_default(:redemption_grace_period, 30)
Setting.save_default(:expiration_reminder_mail, 2)
Setting.save_default(:registrar_ip_whitelist_enabled, true)
Setting.save_default(:api_ip_whitelist_enabled, true)
Setting.save_default(:registrar_ip_whitelist_enabled, false)
Setting.save_default(:api_ip_whitelist_enabled, false)
Setting.save_default(:registry_juridical_name, 'Eesti Interneti SA')
Setting.save_default(:registry_reg_no, '90010019')

View file

@ -1 +0,0 @@
Dir[File.join(Rails.root, 'lib', 'ext', '*.rb')].each { |x| require x }

View file

@ -1,4 +1,4 @@
require 'epp_constraint'
require_dependency 'epp_constraint'
Rails.application.routes.draw do
namespace(:epp, defaults: { format: :xml }) do

View file

@ -668,7 +668,6 @@
<text text-anchor="start" x="-72.5" y="-60.8" font-family="Times,serif" font-size="14.00">generate_svtrid</text>
<text text-anchor="start" x="-72.5" y="-45.8" font-family="Times,serif" font-size="14.00">handle_errors</text>
<text text-anchor="start" x="-72.5" y="-30.8" font-family="Times,serif" font-size="14.00">has_attribute</text>
<text text-anchor="start" x="-72.5" y="-15.8" font-family="Times,serif" font-size="14.00">iptables_counter_update</text>
<text text-anchor="start" x="-72.5" y="-0.8" font-family="Times,serif" font-size="14.00">latin_only</text>
<text text-anchor="start" x="-72.5" y="14.2" font-family="Times,serif" font-size="14.00">mutually_exclusive</text>
<text text-anchor="start" x="-72.5" y="29.2" font-family="Times,serif" font-size="14.00">optional</text>

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Before After
Before After

View file

@ -1,5 +1,5 @@
class Array
def include_any? *args
def include_any?(*args)
(self & args).any?
end
end
end

View file

@ -1,14 +0,0 @@
require 'builder'
class Builder::XmlMarkup
def epp_head
self.instruct!
epp(
'xmlns' => 'https://epp.tld.ee/schema/epp-ee-1.0.xsd',
'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
'xsi:schemaLocation' => 'lib/schemas/epp-ee-1.0.xsd'
) do
yield
end
end
end

14
lib/gem_ext/builder.rb Normal file
View file

@ -0,0 +1,14 @@
module Builder
class XmlMarkup
def epp_head
instruct!
epp(
'xmlns' => 'https://epp.tld.ee/schema/epp-ee-1.0.xsd',
'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
'xsi:schemaLocation' => 'lib/schemas/epp-ee-1.0.xsd'
) do
yield
end
end
end
end

View file

@ -1,5 +1,5 @@
# Don't raise error when nil
# http://stackoverflow.com/questions/9467034/rails-i18n-how-to-handle-case-of-a-nil-date-being-passed-ie-lnil
# http://stackoverflow.com/questions/9467034/rails-i18n-how-to-handle-case-of-a-nil-date-being-passed-ie-lnil
module I18n
class << self
alias_method :original_localize, :localize

View file

@ -8,7 +8,7 @@ end
# Store console and rake changes in versions
if defined?(::Rails::Console)
PaperTrail.whodunnit = "console-#{`whoami`.strip}"
elsif File.basename($PROGRAM_NAME) == "rake"
elsif File.basename($PROGRAM_NAME) == 'rake'
# rake username does not work when spring enabled
PaperTrail.whodunnit = "rake-#{`whoami`.strip} #{ARGV.join ' '}"
end

View file

@ -1,17 +0,0 @@
module Iptable
def counter_update(registrar_code, ip)
counter_proc = "/proc/net/xt_recent/#{registrar_code}"
begin
File.open(counter_proc, 'a') do |f|
f.puts "+#{ip}"
end
rescue Errno::ENOENT => e
logger.error "IPTABLES COUNTER UPDATE: cannot open #{counter_proc}: #{e}"
rescue Errno::EACCES => e
logger.error "IPTABLES COUNTER UPDATE: no permission #{counter_proc}: #{e}"
rescue IOError => e
logger.error "IPTABLES COUNTER UPDATE: cannot write #{ip} to #{counter_proc}: #{e}"
end
end
end

View file

@ -171,9 +171,7 @@ namespace :dev do
end
end
Setting.api_ip_whitelist_enabled = false
Setting.address_processing = false
Setting.registrar_ip_whitelist_enabled = false
ActiveRecord::Base.transaction do
generate_default_data

View file

@ -10,6 +10,7 @@ FactoryBot.define do
email 'test@test.com'
country_code 'US'
accounting_customer_code 'test'
language 'en'
factory :registrar_with_unlimited_balance do
after :create do |registrar|

View file

@ -31,8 +31,6 @@ RSpec.feature 'Contact deletion in registrar area' do
background do
allow(Depp::Contact).to receive(:find_by_id).and_return(FakeDeppContact.new)
allow(Depp::Contact).to receive(:new).and_return(FakeDeppContact.new)
Setting.api_ip_whitelist_enabled = false
Setting.registrar_ip_whitelist_enabled = false
sign_in_to_registrar_area(user: create(:api_user_with_unlimited_balance, registrar: registrar))
end

View file

@ -1,11 +1,16 @@
require 'rails_helper'
RSpec.feature 'Registrar area IP restriction', settings: false do
background do
Setting.registrar_ip_whitelist_enabled = true
before do
@original_registrar_ip_whitelist_enabled = Setting.registrar_ip_whitelist_enabled
end
after do
Setting.registrar_ip_whitelist_enabled = @original_registrar_ip_whitelist_enabled
end
scenario 'notifies the user if his IP is not allowed' do
Setting.registrar_ip_whitelist_enabled = true
visit registrar_root_path
expect(page).to have_text('Access denied from IP 127.0.0.1')
end

View file

@ -6,7 +6,6 @@ RSpec.feature 'Registrar area linked users', settings: false do
username: 'new-user-name') }
background do
Setting.registrar_ip_whitelist_enabled = false
sign_in_to_registrar_area(user: current_user)
end

View file

@ -2,7 +2,6 @@ require 'rails_helper'
RSpec.feature 'Registrar area profile', settings: false do
background do
Setting.registrar_ip_whitelist_enabled = false
sign_in_to_registrar_area(user: create(:api_user_with_unlimited_balance))
end

View file

@ -4,7 +4,6 @@ RSpec.feature 'Mobile ID login', db: true do
given!(:api_user) { create(:api_user, identity_code: 1234) }
background do
Setting.registrar_ip_whitelist_enabled = false
digidoc_client = instance_double(Digidoc::Client, authenticate: OpenStruct.new(user_id_code: 1234), session_code: 1234)
allow(Digidoc::Client).to receive(:new).and_return(digidoc_client)
end

View file

@ -1,10 +1,6 @@
require 'rails_helper'
RSpec.feature 'Registrar area password sign-in' do
background do
Setting.registrar_ip_whitelist_enabled = false
end
scenario 'signs in the user with valid credentials' do
create(:api_user_with_unlimited_balance,
active: true,

View file

@ -2,7 +2,6 @@ require 'rails_helper'
RSpec.feature 'Registrar area sign-out', settings: false do
background do
Setting.registrar_ip_whitelist_enabled = false
sign_in_to_registrar_area(user: create(:api_user_with_unlimited_balance))
end

View file

@ -2,6 +2,14 @@ require 'rails_helper'
RSpec.describe Authorization::RestrictedIP do
describe '::enabled?', db: true, settings: false do
before do
@original_registrar_ip_whitelist_enabled = Setting.registrar_ip_whitelist_enabled
end
after do
Setting.registrar_ip_whitelist_enabled = @original_registrar_ip_whitelist_enabled
end
context 'when "registrar_ip_whitelist_enabled" is true' do
before do
Setting.registrar_ip_whitelist_enabled = true
@ -13,10 +21,6 @@ RSpec.describe Authorization::RestrictedIP do
end
context 'when "registrar_ip_whitelist_enabled" is false' do
before do
Setting.registrar_ip_whitelist_enabled = false
end
specify do
expect(described_class).to_not be_enabled
end

View file

@ -108,30 +108,6 @@ RSpec.describe Domain do
@domain.registrant_update_confirmable?('123').should == false
end
it 'should not find any domain pendings to clean' do
Domain.clean_expired_pendings.should == 0
end
it 'should not find any domains with wrong pendings' do
domain = create(:domain)
domain.registrant_verification_asked!('frame-str', '1')
domain.registrant_verification_asked_at = 30.days.ago
domain.save
Domain.clean_expired_pendings.should == 0
end
it 'should clean domain pendings' do
domain = create(:domain)
domain.registrant_verification_asked!('frame-str', '1')
domain.registrant_verification_asked_at = 30.days.ago
domain.pending_delete!
DomainCron.clean_expired_pendings.should == 1
domain.reload.pending_delete?.should == false
domain.pending_json.should == {}
end
it 'should expire domains' do
Setting.expire_warning_period = 1
Setting.redemption_grace_period = 1
@ -164,14 +140,6 @@ RSpec.describe Domain do
@domain.statuses.include?(DomainStatus::EXPIRED).should == true
end
it 'should start redemption grace period' do
domain = create(:domain)
DomainCron.start_redemption_grace_period
domain.reload
domain.statuses.include?(DomainStatus::SERVER_HOLD).should == false
end
context 'with time period settings' do
before :example do
@save_days_to_renew = Setting.days_to_renew_domain_before_expire

View file

@ -1,6 +1,14 @@
require 'rails_helper'
RSpec.describe 'Registrar area IP restriction', settings: false do
before do
@original_registrar_ip_whitelist_enabled = Setting.registrar_ip_whitelist_enabled
end
after do
Setting.registrar_ip_whitelist_enabled = @original_registrar_ip_whitelist_enabled
end
context 'when authenticated' do
before do
sign_in_to_registrar_area
@ -39,10 +47,6 @@ RSpec.describe 'Registrar area IP restriction', settings: false do
end
context 'when IP restriction is disabled' do
before do
Setting.registrar_ip_whitelist_enabled = false
end
specify do
get registrar_root_url
follow_redirect!
@ -77,10 +81,6 @@ RSpec.describe 'Registrar area IP restriction', settings: false do
end
context 'when IP restriction is disabled' do
before do
Setting.registrar_ip_whitelist_enabled = false
end
specify do
get registrar_login_path
expect(response).to be_success

View file

@ -3,10 +3,6 @@ require 'rails_helper'
RSpec.describe 'Registrar area password sign-in', settings: false do
let!(:user) { create(:api_user, active: true, login: 'test', password: 'testtest') }
before do
Setting.registrar_ip_whitelist_enabled = false
end
it 'signs the user in' do
post registrar_sessions_path, depp_user: { tag: 'test', password: 'testtest' }
follow_redirect!

View file

@ -2,7 +2,6 @@ require 'rails_helper'
RSpec.describe 'Registrar area sign-out', settings: false do
before do
Setting.registrar_ip_whitelist_enabled = false
sign_in_to_registrar_area
end

View file

@ -12,7 +12,7 @@ RSpec.describe 'admin/billing/prices/_form' do
allow(view).to receive(:durations).and_return([])
end
stub_template '_form_errors' => ''
stub_template '_form_errors.html.erb' => ''
end
describe 'price' do

View file

@ -5,7 +5,7 @@ RSpec.describe 'admin/dns/zones/index' do
before :example do
assign(:zones, zones)
stub_template '_zone' => 'zone-row'
stub_template '_zone.html.erb' => 'zone-row'
end
it 'has title' do

View file

@ -13,8 +13,8 @@ RSpec.describe 'admin/domains/edit' do
assign(:domain, domain)
stub_template '_form' => ''
stub_template '_force_delete_dialog' => ''
stub_template '_form.html.erb' => ''
stub_template '_force_delete_dialog.html.erb' => ''
end
it 'has force_delete_toggle_btn' do

View file

@ -10,11 +10,11 @@ RSpec.describe 'registrar/contacts/_form' do
assign(:contact, contact)
stub_template 'registrar/shared/_error_messages' => ''
stub_template 'registrar/contacts/form/_general' => ''
stub_template 'registrar/contacts/form/_address' => 'address info'
stub_template 'registrar/contacts/form/_code' => ''
stub_template 'registrar/contacts/form/_legal_document' => ''
stub_template 'registrar/shared/_error_messages.haml' => ''
stub_template 'registrar/contacts/form/_general.html.haml' => ''
stub_template 'registrar/contacts/form/_address.html.haml' => 'address info'
stub_template 'registrar/contacts/form/_code.html.haml' => ''
stub_template 'registrar/contacts/form/_legal_document.html.haml' => ''
end
context 'when address processing is enabled' do

View file

@ -5,11 +5,11 @@ RSpec.describe 'registrar/contacts/show' do
before do
assign(:contact, contact)
stub_template 'shared/_title' => ''
stub_template 'registrar/contacts/partials/_general' => ''
stub_template 'registrar/contacts/partials/_statuses' => ''
stub_template 'registrar/contacts/partials/_domains' => ''
stub_template 'registrar/contacts/partials/_address' => 'address info'
stub_template 'shared/_title.html.haml' => ''
stub_template 'registrar/contacts/partials/_general.html.haml' => ''
stub_template 'registrar/contacts/partials/_statuses.html.haml' => ''
stub_template 'registrar/contacts/partials/_domains.html.haml' => ''
stub_template 'registrar/contacts/partials/_address.html.haml' => 'address info'
end
context 'when address processing is enabled' do

View file

@ -10,10 +10,10 @@ RSpec.describe 'registrar/domains/_form' do
assign(:domain, domain)
stub_template 'registrar/domains/form/_general' => ''
stub_template 'registrar/domains/form/_contacts' => ''
stub_template 'registrar/domains/form/_nameservers' => ''
stub_template 'registrar/domains/form/_dnskeys' => ''
stub_template 'registrar/domains/form/_general.html.haml' => ''
stub_template 'registrar/domains/form/_contacts.html.haml' => ''
stub_template 'registrar/domains/form/_nameservers.html.haml' => ''
stub_template 'registrar/domains/form/_dnskeys.html.haml' => ''
end
it 'has legal document' do