Merge branch 'master' of github.com:internetee/registry

Conflicts:
	app/models/nameserver.rb
This commit is contained in:
Andres Keskküla 2014-10-20 16:42:35 +03:00
commit dd8410248e
12 changed files with 113 additions and 79 deletions

View file

@ -28,7 +28,7 @@ class Client::DomainTransfersController < ClientController
end
@domain_transfer = @domain.domain_transfers.create(domain_transfer_params)
@domain_transfer.approve_as_server if SettingGroup.domain_general.setting(:transfer_wait_time).value.to_i == 0
@domain_transfer.approve_as_server if Setting.transfer_wait_time == 0
if @domain_transfer.approved?
flash[:notice] = I18n.t('shared.domain_transfer_approved')

View file

@ -167,22 +167,25 @@ module Epp::DomainsHelper
## SHARED
def find_domain(secure = { secure: true })
domain = Epp::EppDomain.find_by(name: @ph[:name])
domain = Epp::EppDomain.find_by(name: @ph[:name].strip.downcase)
unless domain
epp_errors << {
code: '2303',
msg: I18n.t('errors.messages.epp_domain_not_found'),
value: { obj: 'name', val: @ph[:name] }
value: { obj: 'name', val: @ph[:name].strip.downcase }
}
return nil
end
if domain.registrar != current_epp_user.registrar && secure[:secure] == true
@ph[:authInfo] ||= {}
return domain if domain.auth_info == @ph[:authInfo][:pw]
if (domain.registrar != current_epp_user.registrar && secure[:secure] == true) &&
epp_errors << {
code: '2302',
msg: I18n.t('errors.messages.domain_exists_but_belongs_to_other_registrar'),
value: { obj: 'name', val: @ph[:name] }
value: { obj: 'name', val: @ph[:name].strip.downcase }
}
return nil
end

View file

@ -82,6 +82,7 @@ class Domain < ActiveRecord::Base
def name=(value)
value.strip!
value.downcase!
self[:name] = SimpleIDN.to_unicode(value)
self[:name_puny] = SimpleIDN.to_ascii(value)
self[:name_dirty] = value

View file

@ -477,6 +477,8 @@ class Epp::EppDomain < Domain
res = []
domains.each do |x|
x.strip!
x.downcase!
unless DomainNameValidator.validate_format(x)
res << { name: x, avail: 0, reason: 'invalid format' }
next

View file

@ -13,6 +13,8 @@ class Nameserver < ActiveRecord::Base
# archiving
has_paper_trail class_name: 'NameserverVersion'
before_validation :normalize_attributes
def epp_code_map
{
'2302' => [
@ -37,6 +39,12 @@ class Nameserver < ActiveRecord::Base
}
end
def normalize_attributes
self.hostname = hostname.try(:strip).try(:downcase)
self.ipv4 = ipv4.try(:strip)
self.ipv6 = ipv6.try(:strip).try(:upcase)
end
def to_s
hostname
end

View file

@ -24,23 +24,19 @@ xml.epp_head do
xml.tag!('domain:ns') do
@domain.nameservers.each do |x|
if x.ipv4.present? || x.ipv6.present?
xml.tag!('domain:hostAttr') do
xml.tag!('domain:hostName', x.hostname)
xml.tag!('domain:hostAddr', x.ipv4, 'ip' => 'v4') if x.ipv4.present?
xml.tag!('domain:hostAddr', x.ipv6, 'ip' => 'v6') if x.ipv6.present?
end
else
xml.tag!('domain:hostObj', x.hostname)
xml.tag!('domain:hostAttr') do
xml.tag!('domain:hostName', x.hostname)
xml.tag!('domain:hostAddr', x.ipv4, 'ip' => 'v4') if x.ipv4.present?
xml.tag!('domain:hostAddr', x.ipv6, 'ip' => 'v6') if x.ipv6.present?
end
end
end
## TODO Find out what this domain:host is all about
xml.tag!('domain:clID', @domain.owner_contact_code)
xml.tag!('domain:clID', @domain.registrar_name)
xml.tag!('domain:crID', @domain.registrar_name) if @domain.registrar #TODO Registrar has to be specified
xml.tag!('domain:crID', @domain.versions.first.try(:reify).try(:registrar) || @domain.registrar) #TODO Registrar has to be specified
xml.tag!('domain:crDate', @domain.created_at)

View file

@ -1,18 +1,60 @@
#!/bin/bash
#
# Update repo
# Build and run for automatic tests
#
# fail later
set -o pipefail
# default locations
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export RAILS_ENV=test
# cd to Rails root directory
cd "$(dirname "$0")"; cd ..
git pull origin master &> /dev/null
git reset --hard &> /dev/null
unset GIT_DIR GIT_WORK_TREE
# cp config/secrets-example.yml config/secrets.yml
# create manually config/database.yml
bin/robot-audit
bundle install
RAILS_ENV=test bundle exec rake db:drop
RAILS_ENV=test bundle exec rake db:create
RAILS_ENV=test bundle exec rake db:schema:load &> /dev/null
RAILS_ENV=test bundle exec rake db:seed
RAILS_ENV=test bundle exec rake assets:precompile
echo "GIT_LAST_COMMITS"
git log origin/master -n 10 --pretty=oneline | sed -r '/^.{40} Merge branch/d' | sed -r 's/^.{40}/Latest: /'
echo "END_OF_GIT_LAST_COMMITS"
echo "RUBOCOP_RESULTS"
bundle exec rubocop -D
RCODE=$?
echo "END_OF_RUBOCOP_RESULTS"
echo "TEST_RESULTS"
ROBOT=true bundle exec rake test
TCODE=$?
TCODE=0 # tmp
echo "END_OF_TEST_RESULTS"
echo "SECURITY_RESULTS"
bundle exec bundle-audit update
bundle exec bundle-audit
BCODE=$?
BCODE=0 # tmp
bundle exec brakeman
echo "END_OF_SECURITY_RESULTS"
# update code review
bundle exec rubycritic app lib
if [ $RCODE == 0 ] && [ $TCODE == 0 ] &&[ $BCODE == 0 ]; then
exit 0
else
echo "ROBOTEXITWITHFAILURE"
exit 1
fi

View file

@ -1,51 +0,0 @@
#!/bin/bash
#
# Build and run for automatic tests
#
# fail later
set -o pipefail
# cp config/secrets-example.yml config/secrets.yml
# create manually config/database.yml
bundle install
RAILS_ENV=test bundle exec rake db:drop
RAILS_ENV=test bundle exec rake db:create
RAILS_ENV=test bundle exec rake db:schema:load &> /dev/null
RAILS_ENV=test bundle exec rake db:seed
RAILS_ENV=test bundle exec rake assets:precompile
echo "GIT_LAST_COMMITS"
git log origin/master -n 10 --pretty=oneline | sed -r '/^.{40} Merge branch/d' | sed -r 's/^.{40}/Latest: /'
echo "END_OF_GIT_LAST_COMMITS"
echo "RUBOCOP_RESULTS"
bundle exec rubocop -D
RCODE=$?
echo "END_OF_RUBOCOP_RESULTS"
echo "TEST_RESULTS"
ROBOT=true bundle exec rake test
TCODE=$?
TCODE=0 # tmp
echo "END_OF_TEST_RESULTS"
echo "SECURITY_RESULTS"
bundle exec bundle-audit update
bundle exec bundle-audit
BCODE=$?
BCODE=0 # tmp
bundle exec brakeman
echo "END_OF_SECURITY_RESULTS"
# update code review
bundle exec rubycritic app lib
if [ $RCODE == 0 ] && [ $TCODE == 0 ] &&[ $BCODE == 0 ]; then
exit 0
else
echo "ROBOTEXITWITHFAILURE"
exit 1
fi

11
bin/update-repo Executable file
View file

@ -0,0 +1,11 @@
#!/bin/bash
#
# Update repo
#
# cd to Rails root directory
cd "$(dirname "$0")"; cd ..
git pull origin master &> /dev/null
git reset --hard &> /dev/null
unset GIT_DIR GIT_WORK_TREE

View file

@ -325,7 +325,7 @@ describe 'EPP Domain', epp: true do
expect(response[:results][0][:value]).to eq '192.0.2.2.invalid'
expect(response[:results][1][:result_code]).to eq '2005'
expect(response[:results][1][:msg]).to eq 'IPv6 is invalid'
expect(response[:results][1][:value]).to eq 'invalid_ipv6'
expect(response[:results][1][:value]).to eq 'INVALID_IPV6'
expect(Domain.count).to eq(0)
expect(Nameserver.count).to eq(0)
end
@ -743,7 +743,9 @@ describe 'EPP Domain', epp: true do
d.save
response = epp_request(domain_info_xml, :xml)
xml = domain_info_xml(name_value: 'Example.ee')
response = epp_request(xml, :xml)
expect(response[:results][0][:result_code]).to eq('1000')
expect(response[:results][0][:msg]).to eq('Command completed successfully')
@ -758,14 +760,16 @@ describe 'EPP Domain', epp: true do
expect(admin_contacts_from_request).to eq(admin_contacts_existing)
hosts_from_request = inf_data.css('hostObj').map(&:text)
hosts_existing = d.nameservers.where(ipv4: nil).pluck(:hostname)
hosts_from_request = inf_data.css('hostName').map(&:text)
hosts_existing = d.nameservers.pluck(:hostname)
expect(hosts_from_request).to eq(hosts_existing)
expect(inf_data.css('hostName').first.text).to eq('ns1.example.com')
expect(inf_data.css('hostAddr').first.text).to eq('192.168.1.1')
expect(inf_data.css('hostAddr').last.text).to eq('1080:0:0:0:8:800:200C:417A')
ns1 = inf_data.css('hostAttr').last
expect(ns1.css('hostName').last.text).to eq('ns1.example.com')
expect(ns1.css('hostAddr').first.text).to eq('192.168.1.1')
expect(ns1.css('hostAddr').last.text).to eq('1080:0:0:0:8:800:200C:417A')
expect(inf_data.css('crDate').text).to eq(d.created_at.to_time.utc.to_s)
expect(inf_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s)
expect(inf_data.css('pw').text).to eq(d.auth_info)
@ -865,6 +869,7 @@ describe 'EPP Domain', epp: true do
expect(d.dnskeys.count).to eq(2)
response = epp_request(xml, :xml)
expect(response[:results][0][:result_code]).to eq('2302')
expect(response[:results][0][:msg]).to eq('Nameserver already exists on this domain')
expect(response[:results][0][:value]).to eq('ns1.example.com')

View file

@ -62,6 +62,24 @@ describe Domain do
expect(d.errors.messages[:nameservers]).to eq(['Nameservers count must be between 2-7'])
end
it 'downcases domain' do
d = Domain.new(name: 'TesT.Ee')
expect(d.name).to eq('test.ee')
expect(d.name_puny).to eq('test.ee')
expect(d.name_dirty).to eq('test.ee')
end
it 'normalizes ns attrs' do
d = Fabricate(:domain)
d.nameservers.build(hostname: 'BLA.EXAMPLE.EE', ipv4: ' 192.168.1.1', ipv6: '1080:0:0:0:8:800:200c:417a')
d.save
ns = d.nameservers.last
expect(ns.hostname).to eq('bla.example.ee')
expect(ns.ipv4).to eq('192.168.1.1')
expect(ns.ipv6).to eq('1080:0:0:0:8:800:200C:417A')
end
it 'does not create a reserved domain' do
Fabricate(:reserved_domain)
expect(Fabricate.build(:domain, name: '1162.ee').valid?).to be false

View file

@ -14,7 +14,6 @@ module General
end
end
RSpec.configure do |c|
c.include General
end