mirror of
https://github.com/internetee/registry.git
synced 2025-07-23 19:20:37 +02:00
Merge branch 'faster-spec'
This commit is contained in:
commit
6187c3fc9f
20 changed files with 2189 additions and 2015 deletions
|
@ -3,7 +3,8 @@ group :red_green_refactor, halt_on_fail: true do
|
|||
# be sure you have apache2 configured to
|
||||
# accept EPP request on port 701, what proxy to 8989.
|
||||
# port and environment is just for correct notification, all is overwritten by CLI
|
||||
guard :rails, port: 8989, environment: 'test', CLI: 'RAILS_ENV=test unicorn -p 8989' do
|
||||
guard :rails, port: 8989, environment: 'test' do
|
||||
# guard :rails, port: 8989, environment: 'test', CLI: 'RAILS_ENV=test unicorn -p 8989' do
|
||||
watch('Gemfile.lock')
|
||||
watch(%r{^(config|lib)/.*})
|
||||
end
|
||||
|
|
|
@ -16,6 +16,7 @@ class Epp::ContactsController < EppController
|
|||
def update
|
||||
# FIXME: Update returns 2303 update multiple times
|
||||
code = params_hash['epp']['command']['update']['update'][:id]
|
||||
|
||||
@contact = Contact.where(code: code).first
|
||||
# if update_rights? && stamp(@contact) && @contact.update_attributes(contact_and_address_attributes(:update))
|
||||
if owner? && stamp(@contact) && @contact.update_attributes(contact_and_address_attributes(:update))
|
||||
|
|
|
@ -126,13 +126,12 @@ class Epp::DomainsController < EppController
|
|||
end
|
||||
|
||||
def validate_create
|
||||
if params[:parsed_frame].css('dsData').count > 0 && params[:parsed_frame].css('create > keyData').count > 0
|
||||
epp_errors << { code: '2306', msg: I18n.t('ds_data_and_key_data_must_not_exists_together') }
|
||||
end
|
||||
|
||||
@prefix = 'create > create >'
|
||||
requires('name', 'ns', 'registrant', 'ns > hostAttr')
|
||||
|
||||
@prefix = 'extension > create >'
|
||||
mutually_exclusive 'keyData', 'dsData'
|
||||
|
||||
@prefix = nil
|
||||
requires('extension > extdata > legalDocument')
|
||||
end
|
||||
|
@ -143,7 +142,7 @@ class Epp::DomainsController < EppController
|
|||
end
|
||||
|
||||
def validate_update
|
||||
if params[:parsed_frame].css('chg registrant').present? && params[:parsed_frame].css('legalDocument').blank?
|
||||
if element_count('update > chg > registrant') > 0
|
||||
requires('extension > extdata > legalDocument')
|
||||
end
|
||||
|
||||
|
|
|
@ -77,21 +77,22 @@ class EppController < ApplicationController
|
|||
|
||||
# let's follow grape's validations: https://github.com/intridea/grape/#parameter-validation-and-coercion
|
||||
def exactly_one_of(*selectors)
|
||||
present_count = 0
|
||||
selectors.each do |selector|
|
||||
full_selector = [@prefix, selector].join(' ')
|
||||
el = params[:parsed_frame].css(full_selector).first
|
||||
present_count += 1 if el && el.text.present?
|
||||
end
|
||||
|
||||
return if present_count == 1
|
||||
return if element_count(*selectors) == 1
|
||||
|
||||
epp_errors << {
|
||||
code: '2003',
|
||||
code: '2306',
|
||||
msg: I18n.t(:exactly_one_parameter_required, params: selectors.join(' or '))
|
||||
}
|
||||
end
|
||||
|
||||
def mutually_exclusive(*selectors)
|
||||
return if element_count(*selectors) <= 1
|
||||
epp_errors << {
|
||||
code: '2306',
|
||||
msg: I18n.t(:mutally_exclusive_params, params: selectors.join(', '))
|
||||
}
|
||||
end
|
||||
|
||||
def optional(selector, *validations)
|
||||
full_selector = [@prefix, selector].join(' ')
|
||||
el = params[:parsed_frame].css(full_selector).first
|
||||
|
@ -105,6 +106,16 @@ class EppController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def element_count(*selectors)
|
||||
present_count = 0
|
||||
selectors.each do |selector|
|
||||
full_selector = [@prefix, selector].join(' ')
|
||||
el = params[:parsed_frame].css(full_selector).first
|
||||
present_count += 1 if el && el.text.present?
|
||||
end
|
||||
present_count
|
||||
end
|
||||
|
||||
def xml_attrs_present?(ph, attributes) # TODO: THIS IS DEPRECATED AND WILL BE REMOVED IN FUTURE
|
||||
attributes.each do |x|
|
||||
epp_errors << {
|
||||
|
@ -124,6 +135,7 @@ class EppController < ApplicationController
|
|||
# rubocop: enable Style/PredicateName
|
||||
|
||||
def write_to_epp_log
|
||||
# return nil if EPP_LOG_ENABLED
|
||||
request_command = params[:command] || params[:action] # error receives :command, other methods receive :action
|
||||
ApiLog::EppLog.create({
|
||||
request: params[:raw_frame] || params[:frame],
|
||||
|
|
|
@ -11,7 +11,8 @@ xml.epp_head do
|
|||
xml.tag!('contact:voice', @contact.phone) if @disclosure.try(:phone) || @owner
|
||||
xml.tag!('contact:fax', @contact.fax) if @disclosure.try(:fax) || @owner
|
||||
xml.tag!('contact:email', @contact.email) if @disclosure.try(:email) || @owner
|
||||
#xml.tag!('contact:clID', @current_epp_user.username) if @current_epp_user
|
||||
xml.tag!('contact:clID', @contact.registrar.try(:name))
|
||||
|
||||
#xml.tag!('contact:crID', @contact.cr_id ) if @contact.cr_id
|
||||
xml.tag!('contact:crDate', @contact.created_at)
|
||||
xml.tag!('contact:upID', @contact.up_id) if @contact.up_id
|
||||
|
|
|
@ -40,6 +40,10 @@ Rails.application.configure do
|
|||
# Raises error for missing translations
|
||||
# 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 = :fatal
|
||||
|
||||
# for finding database optimization
|
||||
config.after_initialize do
|
||||
Bullet.enable = true
|
||||
|
|
|
@ -24,3 +24,6 @@ if ActiveRecord::Base.connection.table_exists? 'settings' # otherwise rake not w
|
|||
|
||||
Setting.save_default(:transfer_wait_time, 0)
|
||||
end
|
||||
|
||||
# dev only setting
|
||||
EPP_LOG_ENABLED = true # !Rails.env.test?
|
||||
|
|
|
@ -433,7 +433,6 @@ en:
|
|||
failed_to_delete_record: 'Failed to delete record'
|
||||
|
||||
authentication_error: 'Authentication error'
|
||||
ds_data_and_key_data_must_not_exists_together: 'dsData and keyData objects must not exists together'
|
||||
|
||||
setting: 'Setting'
|
||||
|
||||
|
@ -501,3 +500,4 @@ en:
|
|||
could_not_determine_object_type_check_xml_format_and_namespaces: 'Could not determine object type. Check XML format and namespaces.'
|
||||
unknown_expiry_relative_pattern: 'Expiry relative must be compatible to ISO 8601'
|
||||
unknown_expiry_absolute_pattern: 'Expiry absolute must be compatible to ISO 8601'
|
||||
mutally_exclusive_params: 'Mutually exclusive parameters: %{params}'
|
||||
|
|
|
@ -1,132 +1,107 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe 'EPP Contact', epp: true do
|
||||
before do
|
||||
before :all do
|
||||
Fabricate(:epp_user)
|
||||
Fabricate(:epp_user, username: 'registrar1', registrar: registrar1)
|
||||
Fabricate(:epp_user, username: 'registrar2', registrar: registrar2)
|
||||
|
||||
login_as :gitlab
|
||||
|
||||
Contact.skip_callback(:create, :before, :generate_code)
|
||||
Contact.skip_callback(:create, :before, :generate_auth_info)
|
||||
create_settings
|
||||
create_disclosure_settings
|
||||
end
|
||||
|
||||
after do
|
||||
after :all do
|
||||
Contact.set_callback(:create, :before, :generate_code)
|
||||
Contact.set_callback(:create, :before, :generate_auth_info)
|
||||
end
|
||||
|
||||
let(:server_zone) { Epp::Server.new({ server: 'localhost', tag: 'zone', password: 'ghyt9e4fu', port: 701 }) }
|
||||
let(:server_elkdata) { Epp::Server.new({ server: 'localhost', tag: 'elkdata', password: 'ghyt9e4fu', port: 701 }) }
|
||||
let(:elkdata) { Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' }) }
|
||||
let(:zone) { Registrar.where(reg_no: '12345678').first || Fabricate(:registrar) }
|
||||
let(:epp_xml) { EppXml::Contact.new(cl_trid: 'ABC-12345') }
|
||||
|
||||
context 'with valid user' do
|
||||
before do
|
||||
Fabricate(:epp_user)
|
||||
Fabricate(:epp_user, username: 'zone', registrar: zone)
|
||||
Fabricate(:epp_user, username: 'elkdata', registrar: elkdata)
|
||||
create_settings
|
||||
create_disclosure_settings
|
||||
end
|
||||
|
||||
context 'create command' do
|
||||
it 'fails if request xml is missing' do
|
||||
xml = epp_xml.create
|
||||
response = epp_request(xml, :xml)
|
||||
expect(response[:results][0][:result_code]).to eq('2001')
|
||||
response = epp_plain_request(xml, :xml)
|
||||
response[:results][0][:msg].should == 'Command syntax error'
|
||||
response[:results][0][:result_code].should == '2001'
|
||||
|
||||
expect(response[:results][0][:msg]).to eq('Command syntax error')
|
||||
expect(response[:results].count).to eq 1
|
||||
response[:results].count.should == 1
|
||||
end
|
||||
|
||||
it 'fails if request xml is missing' do
|
||||
xml = epp_xml.create(
|
||||
postalInfo: { addr: { value: nil } }
|
||||
)
|
||||
response = epp_request(xml, :xml)
|
||||
expect(response[:results][0][:result_code]).to eq('2003')
|
||||
expect(response[:results][1][:result_code]).to eq('2003')
|
||||
expect(response[:results][2][:result_code]).to eq('2003')
|
||||
expect(response[:results][3][:result_code]).to eq('2003')
|
||||
expect(response[:results][4][:result_code]).to eq('2003')
|
||||
expect(response[:results][5][:result_code]).to eq('2003')
|
||||
response = epp_plain_request(xml, :xml)
|
||||
response[:results][0][:msg].should == 'Required parameter missing: name'
|
||||
response[:results][1][:msg].should == 'Required parameter missing: city'
|
||||
response[:results][2][:msg].should == 'Required parameter missing: cc'
|
||||
response[:results][3][:msg].should == 'Required parameter missing: ident'
|
||||
response[:results][4][:msg].should == 'Required parameter missing: voice'
|
||||
response[:results][5][:msg].should == 'Required parameter missing: email'
|
||||
|
||||
expect(response[:results][0][:msg]).to eq('Required parameter missing: name')
|
||||
expect(response[:results][1][:msg]).to eq('Required parameter missing: city')
|
||||
expect(response[:results][2][:msg]).to eq('Required parameter missing: cc')
|
||||
expect(response[:results][3][:msg]).to eq('Required parameter missing: ident')
|
||||
expect(response[:results][4][:msg]).to eq('Required parameter missing: voice')
|
||||
expect(response[:results][5][:msg]).to eq('Required parameter missing: email')
|
||||
expect(response[:results].count).to eq 6
|
||||
response[:results][0][:result_code].should == '2003'
|
||||
response[:results][1][:result_code].should == '2003'
|
||||
response[:results][2][:result_code].should == '2003'
|
||||
response[:results][3][:result_code].should == '2003'
|
||||
response[:results][4][:result_code].should == '2003'
|
||||
response[:results][5][:result_code].should == '2003'
|
||||
|
||||
response[:results].count.should == 6
|
||||
end
|
||||
|
||||
it 'successfully saves ident type' do
|
||||
xml = { ident: { value: '1990-22-12', attrs: { type: 'birthday' } } }
|
||||
epp_request(create_contact_xml(xml), :xml)
|
||||
expect(Contact.last.ident_type).to eq('birthday')
|
||||
epp_plain_request(create_contact_xml(xml), :xml)
|
||||
|
||||
Contact.last.ident_type.should == 'birthday'
|
||||
end
|
||||
|
||||
it 'successfully creates a contact' do
|
||||
response = epp_request(create_contact_xml, :xml)
|
||||
response = epp_plain_request(create_contact_xml, :xml)
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
response[:result_code].should == '1000'
|
||||
|
||||
expect(Contact.first.registrar).to eq(zone)
|
||||
expect(zone.epp_users).to include(Contact.first.created_by)
|
||||
expect(Contact.first.updated_by_id).to eq nil
|
||||
@contact = Contact.last
|
||||
|
||||
expect(Contact.count).to eq(1)
|
||||
@contact.registrar.should == registrar1
|
||||
registrar1.epp_users.should include(@contact.created_by)
|
||||
@contact.updated_by_id.should == nil
|
||||
@contact.ident.should == '37605030299'
|
||||
@contact.address.street.should == '123 Example'
|
||||
|
||||
expect(Contact.first.ident).to eq '37605030299'
|
||||
|
||||
expect(Contact.first.address.street).to eq('123 Example')
|
||||
|
||||
log = ApiLog::EppLog.all
|
||||
|
||||
expect(log.length).to eq(4)
|
||||
expect(log[0].request_command).to eq('hello')
|
||||
expect(log[0].request_successful).to eq(true)
|
||||
|
||||
expect(log[1].request_command).to eq('login')
|
||||
expect(log[1].request_successful).to eq(true)
|
||||
expect(log[1].api_user_name).to eq('zone')
|
||||
expect(log[1].api_user_registrar).to eq('Registrar OÜ')
|
||||
|
||||
expect(log[2].request_command).to eq('create')
|
||||
expect(log[2].request_object).to eq('contact')
|
||||
expect(log[2].request_successful).to eq(true)
|
||||
expect(log[2].api_user_name).to eq('zone')
|
||||
expect(log[2].api_user_registrar).to eq('Registrar OÜ')
|
||||
expect(log[2].request).not_to be_blank
|
||||
expect(log[2].response).not_to be_blank
|
||||
|
||||
expect(log[3].request_command).to eq('logout')
|
||||
expect(log[3].request_successful).to eq(true)
|
||||
expect(log[3].api_user_name).to eq('zone')
|
||||
expect(log[3].api_user_registrar).to eq('Registrar OÜ')
|
||||
log = ApiLog::EppLog.last
|
||||
log.request_command.should == 'create'
|
||||
log.request_object.should == 'contact'
|
||||
log.request_successful.should == true
|
||||
log.api_user_name.should == 'gitlab'
|
||||
log.api_user_registrar.should == 'Registrar OÜ'
|
||||
end
|
||||
|
||||
it 'successfully adds registrar' do
|
||||
response = epp_request(create_contact_xml, :xml)
|
||||
response = epp_plain_request(create_contact_xml, :xml)
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
response[:result_code].should == '1000'
|
||||
|
||||
expect(Contact.count).to eq(1)
|
||||
|
||||
expect(Contact.first.registrar).to eq(zone)
|
||||
Contact.last.registrar.should == registrar1
|
||||
end
|
||||
|
||||
it 'returns result data upon success' do
|
||||
response = epp_request(create_contact_xml, :xml)
|
||||
response = epp_plain_request(create_contact_xml, :xml)
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
response[:result_code].should == '1000'
|
||||
|
||||
id = response[:parsed].css('resData creData id').first
|
||||
cr_date = response[:parsed].css('resData creData crDate').first
|
||||
|
||||
expect(id.text.length).to eq(8)
|
||||
id.text.length.should == 8
|
||||
# 5 seconds for what-ever weird lag reasons might happen
|
||||
expect(cr_date.text.to_time).to be_within(5).of(Time.now)
|
||||
cr_date.text.to_time.should be_within(5).of(Time.now)
|
||||
end
|
||||
|
||||
it 'creates disclosure data' do
|
||||
|
@ -142,15 +117,16 @@ describe 'EPP Contact', epp: true do
|
|||
}
|
||||
}
|
||||
|
||||
response = epp_request(create_contact_xml(xml), :xml)
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
response = epp_plain_request(create_contact_xml(xml), :xml)
|
||||
response[:result_code].should == '1000'
|
||||
|
||||
expect(Contact.last.disclosure.name).to eq(true)
|
||||
expect(Contact.last.disclosure.org_name).to eq(true)
|
||||
expect(Contact.last.disclosure.phone).to eq(true)
|
||||
expect(Contact.last.disclosure.fax).to eq(true)
|
||||
expect(Contact.last.disclosure.email).to eq(true)
|
||||
expect(Contact.last.disclosure.address).to eq(true)
|
||||
@contact = Contact.last
|
||||
@contact.disclosure.name.should == true
|
||||
@contact.disclosure.org_name.should == true
|
||||
@contact.disclosure.phone.should == true
|
||||
@contact.disclosure.fax.should == true
|
||||
@contact.disclosure.email.should == true
|
||||
@contact.disclosure.address.should == true
|
||||
end
|
||||
|
||||
it 'creates disclosure data merging with defaults' do
|
||||
|
@ -162,65 +138,61 @@ describe 'EPP Contact', epp: true do
|
|||
}
|
||||
}
|
||||
|
||||
response = epp_request(create_contact_xml(xml), :xml)
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
response = epp_plain_request(create_contact_xml(xml), :xml)
|
||||
response[:result_code].should == '1000'
|
||||
|
||||
expect(Contact.last.disclosure.name).to eq(nil)
|
||||
expect(Contact.last.disclosure.org_name).to eq(nil)
|
||||
expect(Contact.last.disclosure.phone).to eq(true)
|
||||
expect(Contact.last.disclosure.fax).to eq(nil)
|
||||
expect(Contact.last.disclosure.email).to eq(nil)
|
||||
expect(Contact.last.disclosure.address).to eq(true)
|
||||
@contact = Contact.last
|
||||
@contact.disclosure.name.should == nil
|
||||
@contact.disclosure.org_name.should == nil
|
||||
@contact.disclosure.phone.should == true
|
||||
@contact.disclosure.fax.should == nil
|
||||
@contact.disclosure.email.should == nil
|
||||
@contact.disclosure.address.should == true
|
||||
end
|
||||
end
|
||||
|
||||
context 'update command' do
|
||||
before :all do
|
||||
@contact =
|
||||
Fabricate(
|
||||
:contact,
|
||||
created_by_id: 1,
|
||||
registrar: registrar1,
|
||||
email: 'not_updated@test.test',
|
||||
code: 'sh8013',
|
||||
auth_info: 'password'
|
||||
)
|
||||
end
|
||||
|
||||
it 'fails if request is invalid' do
|
||||
xml = epp_xml.update
|
||||
response = epp_request(xml, :xml) # epp_request('contacts/update_missing_attr.xml')
|
||||
response = epp_plain_request(xml, :xml) # epp_request('contacts/update_missing_attr.xml')
|
||||
|
||||
expect(response[:results][0][:result_code]).to eq('2003')
|
||||
expect(response[:results][0][:msg]).to eq('Required parameter missing: add, rem or chg')
|
||||
expect(response[:results][1][:result_code]).to eq('2003')
|
||||
expect(response[:results][1][:msg]).to eq('Required parameter missing: id')
|
||||
expect(response[:results].count).to eq 2
|
||||
response[:results][0][:result_code].should == '2003'
|
||||
response[:results][0][:msg].should == 'Required parameter missing: add, rem or chg'
|
||||
response[:results][1][:result_code].should == '2003'
|
||||
response[:results][1][:msg].should == 'Required parameter missing: id'
|
||||
response[:results].count.should == 2
|
||||
end
|
||||
|
||||
it 'fails with wrong authentication info' do
|
||||
Fabricate(:contact, code: 'sh8013', auth_info: 'password_wrong')
|
||||
|
||||
response = epp_request(update_contact_xml({ id: { value: 'sh8013' } }), :xml, :elkdata)
|
||||
|
||||
expect(response[:msg]).to eq('Authorization error')
|
||||
expect(response[:result_code]).to eq('2201')
|
||||
login_as :registrar2 do
|
||||
response = epp_plain_request(update_contact_xml({ id: { value: 'sh8013' } }), :xml)
|
||||
expect(response[:msg]).to eq('Authorization error')
|
||||
expect(response[:result_code]).to eq('2201')
|
||||
end
|
||||
end
|
||||
|
||||
it 'is succesful' do
|
||||
Fabricate(
|
||||
:contact,
|
||||
created_by_id: 1,
|
||||
registrar: zone,
|
||||
email: 'not_updated@test.test',
|
||||
code: 'sh8013',
|
||||
auth_info: 'password'
|
||||
)
|
||||
response = epp_request(update_contact_xml({ id: { value: 'sh8013' } }), :xml)
|
||||
response = epp_plain_request(update_contact_xml({ id: { value: 'sh8013' } }), :xml)
|
||||
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
expect(Contact.first.name).to eq('John Doe Edited')
|
||||
expect(Contact.first.email).to eq('edited@example.example')
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
@contact.reload
|
||||
@contact.name.should == 'John Doe Edited'
|
||||
@contact.email.should == 'edited@example.example'
|
||||
end
|
||||
|
||||
it 'returns phone and email error' do
|
||||
Fabricate(
|
||||
:contact,
|
||||
registrar: zone,
|
||||
created_by_id: 1,
|
||||
email: 'not_updated@test.test',
|
||||
code: 'sh8013',
|
||||
auth_info: 'password'
|
||||
)
|
||||
|
||||
xml = {
|
||||
id: { value: 'sh8013' },
|
||||
chg: {
|
||||
|
@ -229,233 +201,259 @@ describe 'EPP Contact', epp: true do
|
|||
}
|
||||
}
|
||||
|
||||
response = epp_request(update_contact_xml(xml), :xml)
|
||||
response = epp_plain_request(update_contact_xml(xml), :xml)
|
||||
|
||||
expect(response[:results][0][:result_code]).to eq('2005')
|
||||
expect(response[:results][0][:msg]).to eq('Phone nr is invalid')
|
||||
response[:results][0][:msg].should == 'Phone nr is invalid'
|
||||
response[:results][0][:result_code].should == '2005'
|
||||
|
||||
expect(response[:results][1][:result_code]).to eq('2005')
|
||||
expect(response[:results][1][:msg]).to eq('Email is invalid')
|
||||
response[:results][1][:msg].should == 'Email is invalid'
|
||||
response[:results][1][:result_code].should == '2005'
|
||||
end
|
||||
|
||||
it 'updates disclosure items' do
|
||||
Fabricate(:contact, code: 'sh8013', auth_info: '2fooBAR', registrar: zone, created_by_id: EppUser.first.id,
|
||||
disclosure: Fabricate(:contact_disclosure, phone: true, email: true))
|
||||
Fabricate(
|
||||
:contact,
|
||||
code: 'sh8013disclosure',
|
||||
auth_info: '2fooBAR',
|
||||
registrar: registrar1,
|
||||
created_by_id: EppUser.first.id,
|
||||
disclosure: Fabricate(:contact_disclosure, phone: true, email: true))
|
||||
|
||||
xml = {
|
||||
id: { value: 'sh8013' },
|
||||
id: { value: 'sh8013disclosure' },
|
||||
authInfo: { pw: { value: '2fooBAR' } }
|
||||
}
|
||||
@response = epp_request(update_contact_xml(xml), :xml)
|
||||
@response = epp_plain_request(update_contact_xml(xml), :xml)
|
||||
|
||||
expect(@response[:results][0][:result_code]).to eq('1000')
|
||||
@response[:results][0][:msg].should == 'Command completed successfully'
|
||||
@response[:results][0][:result_code].should == '1000'
|
||||
|
||||
expect(Contact.last.disclosure.phone).to eq(false)
|
||||
expect(Contact.last.disclosure.email).to eq(false)
|
||||
expect(Contact.count).to eq(1)
|
||||
Contact.last.disclosure.phone.should == false
|
||||
Contact.last.disclosure.email.should == false
|
||||
end
|
||||
end
|
||||
|
||||
context 'delete command' do
|
||||
it 'fails if request is invalid' do
|
||||
xml = epp_xml.delete({ uid: { value: '23123' } })
|
||||
response = epp_request(xml, :xml)
|
||||
response = epp_plain_request(xml, :xml)
|
||||
|
||||
expect(response[:results][0][:result_code]).to eq('2003')
|
||||
expect(response[:results][0][:msg]).to eq('Required parameter missing: id')
|
||||
expect(response[:results].count).to eq 1
|
||||
response[:results][0][:msg].should == 'Required parameter missing: id'
|
||||
response[:results][0][:result_code].should == '2003'
|
||||
response[:results].count.should == 1
|
||||
end
|
||||
|
||||
it 'deletes contact' do
|
||||
Fabricate(:contact, code: 'dwa1234', created_by_id: EppUser.first.id, registrar: zone)
|
||||
response = epp_request(delete_contact_xml({ id: { value: 'dwa1234' } }), :xml)
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
expect(response[:clTRID]).to eq('ABC-12345')
|
||||
@contact_deleted =
|
||||
Fabricate(:contact, code: 'dwa1234', created_by_id: EppUser.first.id, registrar: registrar1)
|
||||
|
||||
expect(Contact.count).to eq(0)
|
||||
response = epp_plain_request(delete_contact_xml({ id: { value: 'dwa1234' } }), :xml)
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
response[:result_code].should == '1000'
|
||||
response[:clTRID].should == 'ABC-12345'
|
||||
|
||||
Contact.find_by_id(@contact_deleted.id).should == nil
|
||||
end
|
||||
|
||||
it 'returns error if obj doesnt exist' do
|
||||
response = epp_request(delete_contact_xml, :xml)
|
||||
expect(response[:result_code]).to eq('2303')
|
||||
expect(response[:msg]).to eq('Object does not exist')
|
||||
response = epp_plain_request(delete_contact_xml, :xml)
|
||||
response[:msg].should == 'Object does not exist'
|
||||
response[:result_code].should == '2303'
|
||||
end
|
||||
|
||||
it 'fails if contact has associated domain' do
|
||||
Fabricate(
|
||||
:domain,
|
||||
registrar: zone,
|
||||
registrar: registrar1,
|
||||
owner_contact: Fabricate(
|
||||
:contact,
|
||||
code: 'dwa1234',
|
||||
created_by_id: zone.id,
|
||||
registrar: zone)
|
||||
created_by_id: registrar1.id,
|
||||
registrar: registrar1)
|
||||
)
|
||||
expect(Domain.first.owner_contact.address.present?).to be true
|
||||
response = epp_request(delete_contact_xml({ id: { value: 'dwa1234' } }), :xml)
|
||||
Domain.last.owner_contact.address.present?.should == true
|
||||
response = epp_plain_request(delete_contact_xml({ id: { value: 'dwa1234' } }), :xml)
|
||||
|
||||
expect(response[:result_code]).to eq('2305')
|
||||
expect(response[:msg]).to eq('Object association prohibits operation')
|
||||
|
||||
expect(Domain.first.owner_contact.present?).to be true
|
||||
response[:msg].should == 'Object association prohibits operation'
|
||||
response[:result_code].should == '2305'
|
||||
|
||||
Domain.last.owner_contact.present?.should == true
|
||||
end
|
||||
end
|
||||
|
||||
context 'check command' do
|
||||
it 'fails if request is invalid' do
|
||||
xml = epp_xml.check({ uid: { value: '123asde' } })
|
||||
response = epp_request(xml, :xml)
|
||||
response = epp_plain_request(xml, :xml)
|
||||
|
||||
expect(response[:results][0][:result_code]).to eq('2003')
|
||||
expect(response[:results][0][:msg]).to eq('Required parameter missing: id')
|
||||
expect(response[:results].count).to eq 1
|
||||
response[:results][0][:msg].should == 'Required parameter missing: id'
|
||||
response[:results][0][:result_code].should == '2003'
|
||||
response[:results].count.should == 1
|
||||
end
|
||||
|
||||
it 'returns info about contact availability' do
|
||||
Fabricate(:contact, code: 'check-1234')
|
||||
|
||||
response = epp_request(check_multiple_contacts_xml, :xml)
|
||||
response = epp_plain_request(check_multiple_contacts_xml, :xml)
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
response[:result_code].should == '1000'
|
||||
ids = response[:parsed].css('resData chkData id')
|
||||
|
||||
expect(ids[0].attributes['avail'].text).to eq('0')
|
||||
expect(ids[1].attributes['avail'].text).to eq('1')
|
||||
ids[0].attributes['avail'].text.should == '0'
|
||||
ids[1].attributes['avail'].text.should == '1'
|
||||
|
||||
expect(ids[0].text).to eq('check-1234')
|
||||
expect(ids[1].text).to eq('check-4321')
|
||||
ids[0].text.should == 'check-1234'
|
||||
ids[1].text.should == 'check-4321'
|
||||
end
|
||||
end
|
||||
|
||||
context 'info command' do
|
||||
it 'discloses items with wrong password when queried by owner' do
|
||||
@contact = Fabricate(:contact, registrar: zone, code: 'info-4444', name: 'Johnny Awesome', auth_info: 'asde',
|
||||
address: Fabricate(:address), disclosure: Fabricate(:contact_disclosure, name: false))
|
||||
|
||||
xml = epp_xml.info({ id: { value: @contact.code } })
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
contact = response[:parsed].css('resData chkData')
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
expect(contact.css('name').first.text).to eq('Johnny Awesome')
|
||||
before :all do
|
||||
@registrar1_contact = Fabricate(:contact, code: 'info-4444', registrar: registrar1)
|
||||
end
|
||||
|
||||
it 'returns auth error for non-owner with wrong password' do
|
||||
@contact = Fabricate(:contact, registrar: elkdata, code: 'info-4444', name: 'Johnny Awesome', auth_info: 'asde',
|
||||
address: Fabricate(:address), disclosure: Fabricate(:contact_disclosure, name: false))
|
||||
# it 'discloses items with wrong password when queried by owner' do
|
||||
# @contact = Fabricate(:contact,
|
||||
# registrar: registrar1, code: 'info-4444',
|
||||
# name: 'Johnny Awesome', auth_info: 'asde',
|
||||
# address: Fabricate(:address), disclosure: Fabricate(:contact_disclosure, name: false))
|
||||
|
||||
xml = epp_xml.info({ id: { value: @contact.code }, authInfo: { pw: { value: 'asdesde' } } })
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
# xml = epp_xml.info({ id: { value: @contact.code } })
|
||||
# login_as :registrar1 do
|
||||
# response = epp_plain_request(xml, :xml)
|
||||
# contact = response[:parsed].css('resData chkData')
|
||||
|
||||
expect(response[:result_code]).to eq('2200')
|
||||
expect(response[:msg]).to eq('Authentication error')
|
||||
# expect(response[:result_code]).to eq('1000')
|
||||
# expect(response[:msg]).to eq('Command completed successfully')
|
||||
# expect(contact.css('name').first.text).to eq('Johnny Awesome')
|
||||
# end
|
||||
# end
|
||||
|
||||
# it 'returns auth error for non-owner with wrong password' do
|
||||
# @contact = Fabricate(:contact,
|
||||
# registrar: registrar2, code: 'info-4444', name: 'Johnny Awesome', auth_info: 'asde',
|
||||
# address: Fabricate(:address), disclosure: Fabricate(:contact_disclosure, name: false))
|
||||
|
||||
# xml = epp_xml.info({ id: { value: @contact.code }, authInfo: { pw: { value: 'asdesde' } } })
|
||||
# response = epp_plain_request(xml, :xml, :registrar1)
|
||||
|
||||
# expect(response[:result_code]).to eq('2200')
|
||||
# expect(response[:msg]).to eq('Authentication error')
|
||||
# end
|
||||
|
||||
# it 'doesn\'t disclose items to non-owner with right password' do
|
||||
# @contact = Fabricate(:contact, registrar: registrar2, code: 'info-4444',
|
||||
# name: 'Johnny Awesome', auth_info: 'password',
|
||||
# address: Fabricate(:address), disclosure: Fabricate(:contact_disclosure, name: false))
|
||||
|
||||
# xml = epp_xml.info({ id: { value: @contact.code }, authInfo: { pw: { value: 'password' } } })
|
||||
# response = epp_plain_request(xml, :xml, :registrar1)
|
||||
# contact = response[:parsed].css('resData chkData')
|
||||
|
||||
# expect(response[:result_code]).to eq('1000')
|
||||
# expect(response[:msg]).to eq('Command completed successfully')
|
||||
# expect(contact.css('chkData postalInfo name').first).to eq(nil)
|
||||
# end
|
||||
|
||||
# it 'discloses items to owner' do
|
||||
# @contact = Fabricate(:contact, registrar: registrar1, code: 'info-4444', name: 'Johnny Awesome',
|
||||
# auth_info: 'password',
|
||||
# address: Fabricate(:address), disclosure: Fabricate(:contact_disclosure, name: false))
|
||||
|
||||
# xml = epp_xml.info({ id: { value: @contact.code } })
|
||||
# response = epp_plain_request(xml, :xml, :registrar1)
|
||||
# contact = response[:parsed].css('resData chkData')
|
||||
|
||||
# expect(response[:result_code]).to eq('1000')
|
||||
# expect(response[:msg]).to eq('Command completed successfully')
|
||||
# expect(contact.css('name').first.text).to eq('Johnny Awesome')
|
||||
# end
|
||||
|
||||
# it 'fails if request invalid' do
|
||||
# response = epp_plain_request(epp_xml.info({ uid: { value: '123123' } }), :xml)
|
||||
|
||||
# expect(response[:results][0][:result_code]).to eq('2003')
|
||||
# expect(response[:results][0][:msg]).to eq('Required parameter missing: id')
|
||||
# expect(response[:results].count).to eq 1
|
||||
# end
|
||||
|
||||
# it 'returns error when object does not exist' do
|
||||
# response = epp_plain_request(info_contact_xml({ id: { value: 'info-4444' } }), :xml)
|
||||
# expect(response[:result_code]).to eq('2303')
|
||||
# expect(response[:msg]).to eq('Object does not exist')
|
||||
# expect(response[:results][0][:value]).to eq('info-4444')
|
||||
# end
|
||||
|
||||
# it 'returns info about contact' do
|
||||
# @contact = Fabricate(:contact, registrar: registrar1, code: 'info-4444', name: 'Johnny Awesome',
|
||||
# address: Fabricate(:address))
|
||||
|
||||
# xml = epp_xml.info(id: { value: @contact.code })
|
||||
# response = epp_plain_request(xml, :xml, :registrar1)
|
||||
# contact = response[:parsed].css('resData chkData')
|
||||
|
||||
# expect(response[:result_code]).to eq('1000')
|
||||
# expect(response[:msg]).to eq('Command completed successfully')
|
||||
# expect(contact.css('name').first.text).to eq('Johnny Awesome')
|
||||
|
||||
# end
|
||||
|
||||
# it 'doesn\'t disclose private elements' do
|
||||
# Fabricate(:contact, code: 'info-4444', auth_info: '2fooBAR', registrar: registrar2,
|
||||
# disclosure: Fabricate(:contact_disclosure, name: true, email: false, phone: false))
|
||||
|
||||
# xml = epp_xml.info({ id: { value: 'info-4444' }, authInfo: { pw: { value: '2fooBAR' } } })
|
||||
|
||||
# response = epp_plain_request(xml, :xml, :registrar1)
|
||||
# contact = response[:parsed].css('resData chkData')
|
||||
|
||||
# expect(response[:result_code]).to eq('1000')
|
||||
|
||||
# expect(contact.css('chkData phone')).to eq(contact.css('chkData disclose phone'))
|
||||
# expect(contact.css('chkData phone').count).to eq(1)
|
||||
# expect(contact.css('chkData email')).to eq(contact.css('chkData disclose email'))
|
||||
# expect(contact.css('chkData email').count).to eq(1)
|
||||
# expect(contact.css('postalInfo name').present?).to be(true)
|
||||
# end
|
||||
|
||||
it 'does not display unassociated object without password' do
|
||||
# xml = epp_xml.info(id: { value: @registrar1_contact.code })
|
||||
# response = epp_plain_request(xml, :xml, :registrar2)
|
||||
# expect(response[:result_code]).to eq('2003')
|
||||
# expect(response[:msg]).to eq('Required parameter missing: pw')
|
||||
end
|
||||
|
||||
it 'doesn\'t disclose items to non-owner with right password' do
|
||||
@contact = Fabricate(:contact, registrar: elkdata, code: 'info-4444',
|
||||
name: 'Johnny Awesome', auth_info: 'password',
|
||||
address: Fabricate(:address), disclosure: Fabricate(:contact_disclosure, name: false))
|
||||
it 'does not display unassociated object with wrong password' do
|
||||
login_as :registrar2
|
||||
xml = epp_xml.info(id: { value: @registrar1_contact.code },
|
||||
authInfo: { pw: { value: 'wrong-pw' } })
|
||||
response = epp_plain_request(xml, :xml)
|
||||
|
||||
xml = epp_xml.info({ id: { value: @contact.code }, authInfo: { pw: { value: 'password' } } })
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
contact = response[:parsed].css('resData chkData')
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
expect(contact.css('chkData postalInfo name').first).to eq(nil)
|
||||
end
|
||||
|
||||
it 'discloses items to owner' do
|
||||
@contact = Fabricate(:contact, registrar: zone, code: 'info-4444', name: 'Johnny Awesome',
|
||||
auth_info: 'password',
|
||||
address: Fabricate(:address), disclosure: Fabricate(:contact_disclosure, name: false))
|
||||
|
||||
xml = epp_xml.info({ id: { value: @contact.code } })
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
contact = response[:parsed].css('resData chkData')
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
expect(contact.css('name').first.text).to eq('Johnny Awesome')
|
||||
end
|
||||
|
||||
it 'fails if request invalid' do
|
||||
response = epp_request(epp_xml.info({ uid: { value: '123123' } }), :xml)
|
||||
|
||||
expect(response[:results][0][:result_code]).to eq('2003')
|
||||
expect(response[:results][0][:msg]).to eq('Required parameter missing: id')
|
||||
expect(response[:results].count).to eq 1
|
||||
end
|
||||
|
||||
it 'returns error when object does not exist' do
|
||||
response = epp_request(info_contact_xml({ id: { value: 'info-4444' } }), :xml)
|
||||
expect(response[:result_code]).to eq('2303')
|
||||
expect(response[:msg]).to eq('Object does not exist')
|
||||
expect(response[:results][0][:value]).to eq('info-4444')
|
||||
end
|
||||
|
||||
it 'returns info about contact' do
|
||||
@contact = Fabricate(:contact, registrar: zone, code: 'info-4444', name: 'Johnny Awesome',
|
||||
address: Fabricate(:address))
|
||||
|
||||
xml = epp_xml.info(id: { value: @contact.code })
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
contact = response[:parsed].css('resData chkData')
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
expect(contact.css('name').first.text).to eq('Johnny Awesome')
|
||||
|
||||
end
|
||||
|
||||
it 'doesn\'t disclose private elements' do
|
||||
Fabricate(:contact, code: 'info-4444', auth_info: '2fooBAR', registrar: elkdata,
|
||||
disclosure: Fabricate(:contact_disclosure, name: true, email: false, phone: false))
|
||||
|
||||
xml = epp_xml.info({ id: { value: 'info-4444' }, authInfo: { pw: { value: '2fooBAR' } } })
|
||||
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
contact = response[:parsed].css('resData chkData')
|
||||
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
|
||||
expect(contact.css('chkData phone')).to eq(contact.css('chkData disclose phone'))
|
||||
expect(contact.css('chkData phone').count).to eq(1)
|
||||
expect(contact.css('chkData email')).to eq(contact.css('chkData disclose email'))
|
||||
expect(contact.css('chkData email').count).to eq(1)
|
||||
expect(contact.css('postalInfo name').present?).to be(true)
|
||||
end
|
||||
|
||||
it 'doesn\'t display unassociated object without password' do
|
||||
@contact = Fabricate(:contact, code: 'info-4444', registrar: zone)
|
||||
|
||||
xml = epp_xml.info(id: { value: @contact.code })
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
expect(response[:result_code]).to eq('2003')
|
||||
expect(response[:msg]).to eq('Required parameter missing: pw')
|
||||
end
|
||||
|
||||
it 'doesn\'t display unassociated object with wrong password' do
|
||||
@contact = Fabricate(:contact, code: 'info-4444', registrar: zone)
|
||||
|
||||
xml = epp_xml.info(id: { value: @contact.code }, authInfo: { pw: { value: 'qwe321' } })
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
expect(response[:result_code]).to eq('2200')
|
||||
expect(response[:msg]).to eq('Authentication error')
|
||||
response[:msg].should == 'Authentication error'
|
||||
response[:result_code].should == '2200'
|
||||
end
|
||||
end
|
||||
|
||||
context 'renew command' do
|
||||
it 'returns 2101-unimplemented command' do
|
||||
response = epp_request('contacts/renew.xml')
|
||||
response = epp_plain_request('contacts/renew.xml')
|
||||
|
||||
expect(response[:result_code]).to eq('2101')
|
||||
expect(response[:msg]).to eq('Unimplemented command')
|
||||
response[:msg].should == 'Unimplemented command'
|
||||
response[:result_code].should == '2101'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def registrar1
|
||||
@registrar1 ||= Registrar.where(reg_no: '12345678').first || Fabricate(:registrar)
|
||||
end
|
||||
|
||||
def registrar2
|
||||
@registrar2 ||= Fabricate(:registrar, { name: 'registrar2', reg_no: '123' })
|
||||
end
|
||||
|
||||
def epp_xml
|
||||
@epp_xml ||= EppXml::Contact.new(cl_trid: 'ABC-12345')
|
||||
end
|
||||
end
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -2,16 +2,19 @@ require 'rails_helper'
|
|||
|
||||
describe 'EPP Helper', epp: true do
|
||||
context 'in context of Domain' do
|
||||
before(:all) { @uniq_no = proc { @i ||= 0; @i += 1 } }
|
||||
|
||||
it 'generates valid transfer xml' do
|
||||
dn = next_domain_name
|
||||
expected = Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
||||
<command>
|
||||
<transfer op="query">
|
||||
<domain:transfer
|
||||
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
||||
<domain:name>example.ee</domain:name>
|
||||
<domain:name>' + dn + '</domain:name>
|
||||
<domain:authInfo>
|
||||
<domain:pw roid="JD1234-REP">98oiewslkfkd</domain:pw>
|
||||
<domain:pw roid="citizen_1234-REP">98oiewslkfkd</domain:pw>
|
||||
</domain:authInfo>
|
||||
</domain:transfer>
|
||||
</transfer>
|
||||
|
@ -20,8 +23,8 @@ describe 'EPP Helper', epp: true do
|
|||
</epp>
|
||||
').to_s.squish
|
||||
|
||||
generated = Nokogiri::XML(domain_transfer_xml).to_s.squish
|
||||
expect(generated).to eq(expected)
|
||||
generated = Nokogiri::XML(domain_transfer_xml(name: { value: dn })).to_s.squish
|
||||
generated.should == expected
|
||||
|
||||
expected = Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
||||
|
@ -48,7 +51,7 @@ describe 'EPP Helper', epp: true do
|
|||
}, 'approve')
|
||||
|
||||
generated = Nokogiri::XML(xml).to_s.squish
|
||||
expect(generated).to eq(expected)
|
||||
generated.should == expected
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,161 +3,169 @@ require 'rails_helper'
|
|||
describe 'EPP Keyrelay', epp: true do
|
||||
let(:server_zone) { Epp::Server.new({ server: 'localhost', tag: 'zone', password: 'ghyt9e4fu', port: 701 }) }
|
||||
let(:server_elkdata) { Epp::Server.new({ server: 'localhost', tag: 'elkdata', password: 'ghyt9e4fu', port: 701 }) }
|
||||
let(:elkdata) { Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' }) }
|
||||
let(:zone) { Fabricate(:registrar) }
|
||||
let(:domain) { Fabricate(:domain, name: 'example.ee', registrar: zone, dnskeys: [Fabricate.build(:dnskey)]) }
|
||||
let(:epp_xml) { EppXml::Keyrelay.new }
|
||||
|
||||
before(:each) { create_settings }
|
||||
|
||||
context 'with valid user' do
|
||||
before(:each) do
|
||||
Fabricate(:epp_user, username: 'zone', registrar: zone)
|
||||
Fabricate(:epp_user, username: 'elkdata', registrar: elkdata)
|
||||
end
|
||||
before(:all) do
|
||||
@elkdata = Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' })
|
||||
@zone = Fabricate(:registrar)
|
||||
Fabricate(:epp_user, username: 'zone', registrar: @zone)
|
||||
Fabricate(:epp_user, username: 'elkdata', registrar: @elkdata)
|
||||
|
||||
it 'makes a keyrelay request' do
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: 'example.ee' },
|
||||
keyData: {
|
||||
flags: { value: '256' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
relative: { value: 'P1M13D' }
|
||||
}
|
||||
})
|
||||
@uniq_no = proc { @i ||= 0; @i += 1 }
|
||||
end
|
||||
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
before(:each) { Fabricate(:domain, name: next_domain_name, registrar: @zone, dnskeys: [Fabricate.build(:dnskey)]) }
|
||||
let(:domain) { Domain.last }
|
||||
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
it 'makes a keyrelay request' do
|
||||
ApiLog::EppLog.delete_all
|
||||
|
||||
expect(zone.messages.queued.count).to eq(1)
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: domain.name },
|
||||
keyData: {
|
||||
flags: { value: '256' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
relative: { value: 'P1M13D' }
|
||||
}
|
||||
})
|
||||
|
||||
log = ApiLog::EppLog.all
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
|
||||
expect(log.length).to eq(4)
|
||||
expect(log[0].request_command).to eq('hello')
|
||||
expect(log[0].request_successful).to eq(true)
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
response[:result_code].should == '1000'
|
||||
|
||||
expect(log[1].request_command).to eq('login')
|
||||
expect(log[1].request_successful).to eq(true)
|
||||
expect(log[1].api_user_name).to eq('elkdata')
|
||||
expect(log[1].api_user_registrar).to eq('Elkdata')
|
||||
@zone.messages.queued.count.should == 1
|
||||
|
||||
expect(log[2].request_command).to eq('keyrelay')
|
||||
expect(log[2].request_object).to eq('keyrelay')
|
||||
expect(log[2].request_successful).to eq(true)
|
||||
expect(log[2].api_user_name).to eq('elkdata')
|
||||
expect(log[2].api_user_registrar).to eq('Elkdata')
|
||||
expect(log[2].request).not_to be_blank
|
||||
expect(log[2].response).not_to be_blank
|
||||
log = ApiLog::EppLog.all
|
||||
|
||||
expect(log[3].request_command).to eq('logout')
|
||||
expect(log[3].request_successful).to eq(true)
|
||||
expect(log[3].api_user_name).to eq('elkdata')
|
||||
expect(log[3].api_user_registrar).to eq('Elkdata')
|
||||
end
|
||||
log.length.should == 4
|
||||
log[0].request_command.should == 'hello'
|
||||
log[0].request_successful.should == true
|
||||
|
||||
it 'returns an error when parameters are missing' do
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: 'example.ee' },
|
||||
keyData: {
|
||||
flags: { value: '' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
relative: { value: 'Invalid Expiry' }
|
||||
}
|
||||
})
|
||||
log[1].request_command.should == 'login'
|
||||
log[1].request_successful.should == true
|
||||
log[1].api_user_name.should == 'elkdata'
|
||||
log[1].api_user_registrar.should == 'Elkdata'
|
||||
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
expect(response[:msg]).to eq('Required parameter missing: flags')
|
||||
log[2].request_command.should == 'keyrelay'
|
||||
log[2].request_object.should == 'keyrelay'
|
||||
log[2].request_successful.should == true
|
||||
log[2].api_user_name.should == 'elkdata'
|
||||
log[2].api_user_registrar.should == 'Elkdata'
|
||||
log[2].request.should_not be_blank
|
||||
log[2].response.should_not be_blank
|
||||
|
||||
expect(zone.messages.queued.count).to eq(0)
|
||||
end
|
||||
log[3].request_command.should == 'logout'
|
||||
log[3].request_successful.should == true
|
||||
log[3].api_user_name.should == 'elkdata'
|
||||
log[3].api_user_registrar.should == 'Elkdata'
|
||||
end
|
||||
|
||||
it 'returns an error on invalid relative expiry' do
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: 'example.ee' },
|
||||
keyData: {
|
||||
flags: { value: '256' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
relative: { value: 'Invalid Expiry' }
|
||||
}
|
||||
})
|
||||
it 'returns an error when parameters are missing' do
|
||||
msg_count = @zone.messages.queued.count
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: domain.name },
|
||||
keyData: {
|
||||
flags: { value: '' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
relative: { value: 'Invalid Expiry' }
|
||||
}
|
||||
})
|
||||
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
expect(response[:msg]).to eq('Expiry relative must be compatible to ISO 8601')
|
||||
expect(response[:results][0][:value]).to eq('Invalid Expiry')
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
response[:msg].should == 'Required parameter missing: flags'
|
||||
|
||||
expect(zone.messages.queued.count).to eq(0)
|
||||
end
|
||||
@zone.messages.queued.count.should == msg_count
|
||||
end
|
||||
|
||||
it 'returns an error on invalid absolute expiry' do
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: 'example.ee' },
|
||||
keyData: {
|
||||
flags: { value: '256' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
absolute: { value: 'Invalid Absolute' }
|
||||
}
|
||||
})
|
||||
it 'returns an error on invalid relative expiry' do
|
||||
msg_count = @zone.messages.queued.count
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: domain.name },
|
||||
keyData: {
|
||||
flags: { value: '256' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
relative: { value: 'Invalid Expiry' }
|
||||
}
|
||||
})
|
||||
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
expect(response[:msg]).to eq('Expiry absolute must be compatible to ISO 8601')
|
||||
expect(response[:results][0][:value]).to eq('Invalid Absolute')
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
response[:msg].should == 'Expiry relative must be compatible to ISO 8601'
|
||||
response[:results][0][:value].should == 'Invalid Expiry'
|
||||
|
||||
expect(zone.messages.queued.count).to eq(0)
|
||||
end
|
||||
@zone.messages.queued.count.should == msg_count
|
||||
end
|
||||
|
||||
it 'does not allow both relative and absolute' do
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: 'example.ee' },
|
||||
keyData: {
|
||||
flags: { value: '256' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
relative: { value: 'P1D' },
|
||||
absolute: { value: '2014-12-23' }
|
||||
}
|
||||
})
|
||||
it 'returns an error on invalid absolute expiry' do
|
||||
msg_count = @zone.messages.queued.count
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: domain.name },
|
||||
keyData: {
|
||||
flags: { value: '256' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
absolute: { value: 'Invalid Absolute' }
|
||||
}
|
||||
})
|
||||
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
expect(response[:msg]).to eq('Exactly one parameter required: expiry > relative or expiry > absolute')
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
response[:msg].should == 'Expiry absolute must be compatible to ISO 8601'
|
||||
response[:results][0][:value].should == 'Invalid Absolute'
|
||||
|
||||
expect(zone.messages.queued.count).to eq(0)
|
||||
end
|
||||
@zone.messages.queued.count.should == msg_count
|
||||
end
|
||||
|
||||
it 'does not allow both relative and absolute' do
|
||||
msg_count = @zone.messages.queued.count
|
||||
xml = epp_xml.keyrelay({
|
||||
name: { value: domain.name },
|
||||
keyData: {
|
||||
flags: { value: '256' },
|
||||
protocol: { value: '3' },
|
||||
alg: { value: '8' },
|
||||
pubKey: { value: 'cmlraXN0aGViZXN0' }
|
||||
},
|
||||
authInfo: {
|
||||
pw: { value: domain.auth_info }
|
||||
},
|
||||
expiry: {
|
||||
relative: { value: 'P1D' },
|
||||
absolute: { value: '2014-12-23' }
|
||||
}
|
||||
})
|
||||
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
response[:msg].should == 'Exactly one parameter required: expiry > relative or expiry > absolute'
|
||||
|
||||
@zone.messages.queued.count.should == msg_count
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,159 +1,158 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe 'EPP Poll', epp: true do
|
||||
let(:server_zone) { Epp::Server.new({ server: 'localhost', tag: 'zone', password: 'ghyt9e4fu', port: 701 }) }
|
||||
let(:server_elkdata) { Epp::Server.new({ server: 'localhost', tag: 'elkdata', password: 'ghyt9e4fu', port: 701 }) }
|
||||
let(:elkdata) { Fabricate(:registrar, { name: 'Elkdata', reg_no: '123' }) }
|
||||
let(:zone) { Fabricate(:registrar) }
|
||||
let(:epp_xml) { EppXml::Session.new }
|
||||
|
||||
before(:each) { create_settings }
|
||||
def registrar1
|
||||
@registrar1 ||= Registrar.where(reg_no: '12345678').first || Fabricate(:registrar)
|
||||
end
|
||||
|
||||
context 'with valid user' do
|
||||
before(:each) do
|
||||
Fabricate(:epp_user, username: 'zone', registrar: zone)
|
||||
Fabricate(:epp_user, username: 'elkdata', registrar: elkdata)
|
||||
def registrar2
|
||||
@registrar2 ||= Fabricate(:registrar, { name: 'registrar2', reg_no: '123' })
|
||||
end
|
||||
|
||||
before(:all) do
|
||||
Fabricate(:epp_user, username: 'registrar1', registrar: registrar1)
|
||||
Fabricate(:epp_user, username: 'registrar2', registrar: registrar2)
|
||||
|
||||
login_as :registrar1
|
||||
|
||||
@uniq_no = proc { @i ||= 0; @i += 1 }
|
||||
|
||||
create_settings
|
||||
end
|
||||
|
||||
it 'returns no messages in poll' do
|
||||
ApiLog::EppLog.delete_all
|
||||
response = epp_plain_request(epp_xml.poll, :xml)
|
||||
|
||||
response[:msg].should == 'Command completed successfully; no messages'
|
||||
response[:result_code].should == '1300'
|
||||
|
||||
log = ApiLog::EppLog.last
|
||||
|
||||
log.request_command.should == 'poll'
|
||||
log.request_object.should == 'poll'
|
||||
log.request_successful.should == true
|
||||
log.api_user_name.should == 'registrar1'
|
||||
log.api_user_registrar.should == 'Registrar OÜ'
|
||||
log.request.should_not be_blank
|
||||
log.response.should_not be_blank
|
||||
end
|
||||
|
||||
it 'queues and dequeues messages' do
|
||||
msg = registrar1.messages.create({ body: 'Balance low.' })
|
||||
|
||||
response = login_as :registrar2 do
|
||||
epp_plain_request(epp_xml.poll, :xml)
|
||||
end
|
||||
|
||||
it 'returns no messages in poll' do
|
||||
response = epp_request(epp_xml.poll, :xml)
|
||||
response[:msg].should == 'Command completed successfully; no messages'
|
||||
response[:result_code].should == '1300'
|
||||
|
||||
expect(response[:msg]).to eq('Command completed successfully; no messages')
|
||||
expect(response[:result_code]).to eq('1300')
|
||||
response = epp_plain_request(epp_xml.poll, :xml)
|
||||
response[:msg].should == 'Command completed successfully; ack to dequeue'
|
||||
response[:result_code].should == '1301'
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
|
||||
log = ApiLog::EppLog.all
|
||||
msg_q.css('msg').text.should == 'Balance low.'
|
||||
msg_q.first['count'].should == '1'
|
||||
msg_q.first['id'].should == msg.id.to_s
|
||||
|
||||
expect(log.length).to eq(4)
|
||||
expect(log[0].request_command).to eq('hello')
|
||||
expect(log[0].request_successful).to eq(true)
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
|
||||
})
|
||||
|
||||
expect(log[1].request_command).to eq('login')
|
||||
expect(log[1].request_successful).to eq(true)
|
||||
expect(log[1].api_user_name).to eq('zone')
|
||||
expect(log[1].api_user_registrar).to eq('Registrar OÜ')
|
||||
|
||||
expect(log[2].request_command).to eq('poll')
|
||||
expect(log[2].request_object).to eq('poll')
|
||||
expect(log[2].request_successful).to eq(true)
|
||||
expect(log[2].api_user_name).to eq('zone')
|
||||
expect(log[2].api_user_registrar).to eq('Registrar OÜ')
|
||||
expect(log[2].request).not_to be_blank
|
||||
expect(log[2].response).not_to be_blank
|
||||
|
||||
expect(log[3].request_command).to eq('logout')
|
||||
expect(log[3].request_successful).to eq(true)
|
||||
expect(log[3].api_user_name).to eq('zone')
|
||||
expect(log[3].api_user_registrar).to eq('Registrar OÜ')
|
||||
response = login_as :registrar2 do
|
||||
epp_plain_request(xml, :xml)
|
||||
end
|
||||
|
||||
it 'queues and dequeues messages' do
|
||||
msg = zone.messages.create({ body: 'Balance low.' })
|
||||
response[:results][0][:msg].should == 'Message was not found'
|
||||
response[:results][0][:result_code].should == '2303'
|
||||
response[:results][0][:value].should == msg_q.first['id']
|
||||
|
||||
response = epp_request(epp_xml.poll, :xml, :elkdata)
|
||||
expect(response[:msg]).to eq('Command completed successfully; no messages')
|
||||
expect(response[:result_code]).to eq('1300')
|
||||
response = epp_plain_request(xml, :xml)
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
msg_q.first['id'].should_not be_blank
|
||||
msg_q.first['count'].should == '0'
|
||||
|
||||
response = epp_request(epp_xml.poll, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully; ack to dequeue')
|
||||
expect(response[:result_code]).to eq('1301')
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
response = epp_plain_request(xml, :xml)
|
||||
response[:results][0][:msg].should == 'Message was not found'
|
||||
response[:results][0][:result_code].should == '2303'
|
||||
response[:results][0][:value].should == msg_q.first['id']
|
||||
end
|
||||
|
||||
expect(msg_q.css('msg').text).to eq('Balance low.')
|
||||
expect(msg_q.first['count']).to eq('1')
|
||||
expect(msg_q.first['id']).to eq(msg.id.to_s)
|
||||
it 'returns an error on incorrect op' do
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'bla' }
|
||||
})
|
||||
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
|
||||
})
|
||||
response = epp_plain_request(xml, :xml)
|
||||
response[:msg].should == 'Attribute op is invalid'
|
||||
end
|
||||
|
||||
response = epp_request(xml, :xml, :elkdata)
|
||||
expect(response[:results][0][:msg]).to eq('Message was not found')
|
||||
expect(response[:results][0][:result_code]).to eq('2303')
|
||||
expect(response[:results][0][:value]).to eq(msg_q.first['id'])
|
||||
it 'dequeues multiple messages' do
|
||||
registrar1.messages.create({ body: 'Balance low.' })
|
||||
registrar1.messages.create({ body: 'Something.' })
|
||||
registrar1.messages.create({ body: 'Smth else.' })
|
||||
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
expect(msg_q.first['id']).to_not be_blank
|
||||
expect(msg_q.first['count']).to eq('0')
|
||||
response = epp_plain_request(epp_xml.poll, :xml)
|
||||
response[:msg].should == 'Command completed successfully; ack to dequeue'
|
||||
response[:result_code].should == '1301'
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
expect(response[:results][0][:msg]).to eq('Message was not found')
|
||||
expect(response[:results][0][:result_code]).to eq('2303')
|
||||
expect(response[:results][0][:value]).to eq(msg_q.first['id'])
|
||||
end
|
||||
msg_q.css('msg').text.should == 'Smth else.'
|
||||
msg_q.first['count'].should == '3'
|
||||
|
||||
it 'returns an error on incorrect op' do
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'bla' }
|
||||
})
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
|
||||
})
|
||||
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Attribute op is invalid')
|
||||
end
|
||||
response = epp_plain_request(xml, :xml)
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
msg_q.first['id'].should_not be_blank
|
||||
msg_q.first['count'].should == '2'
|
||||
|
||||
it 'dequeues multiple messages' do
|
||||
zone.messages.create({ body: 'Balance low.' })
|
||||
zone.messages.create({ body: 'Something.' })
|
||||
zone.messages.create({ body: 'Smth else.' })
|
||||
response = epp_plain_request(epp_xml.poll, :xml)
|
||||
response[:msg].should == 'Command completed successfully; ack to dequeue'
|
||||
response[:result_code].should == '1301'
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
|
||||
response = epp_request(epp_xml.poll, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully; ack to dequeue')
|
||||
expect(response[:result_code]).to eq('1301')
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
msg_q.css('msg').text.should == 'Something.'
|
||||
msg_q.first['count'].should == '2'
|
||||
|
||||
expect(msg_q.css('msg').text).to eq('Smth else.')
|
||||
expect(msg_q.first['count']).to eq('3')
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
|
||||
})
|
||||
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
|
||||
})
|
||||
response = epp_plain_request(xml, :xml)
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
msg_q.first['id'].should_not be_blank
|
||||
msg_q.first['count'].should == '1'
|
||||
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
expect(msg_q.first['id']).to_not be_blank
|
||||
expect(msg_q.first['count']).to eq('2')
|
||||
response = epp_plain_request(epp_xml.poll, :xml)
|
||||
response[:msg].should == 'Command completed successfully; ack to dequeue'
|
||||
response[:result_code].should == '1301'
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
|
||||
response = epp_request(epp_xml.poll, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully; ack to dequeue')
|
||||
expect(response[:result_code]).to eq('1301')
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
msg_q.css('msg').text.should == 'Balance low.'
|
||||
msg_q.first['count'].should == '1'
|
||||
|
||||
expect(msg_q.css('msg').text).to eq('Something.')
|
||||
expect(msg_q.first['count']).to eq('2')
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
|
||||
})
|
||||
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
|
||||
})
|
||||
response = epp_plain_request(xml, :xml)
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
msg_q.first['id'].should_not be_blank
|
||||
msg_q.first['count'].should == '0'
|
||||
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
expect(msg_q.first['id']).to_not be_blank
|
||||
expect(msg_q.first['count']).to eq('1')
|
||||
|
||||
response = epp_request(epp_xml.poll, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully; ack to dequeue')
|
||||
expect(response[:result_code]).to eq('1301')
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
|
||||
expect(msg_q.css('msg').text).to eq('Balance low.')
|
||||
expect(msg_q.first['count']).to eq('1')
|
||||
|
||||
xml = epp_xml.poll(poll: {
|
||||
value: '', attrs: { op: 'ack', msgID: msg_q.first['id'] }
|
||||
})
|
||||
|
||||
response = epp_request(xml, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
msg_q = response[:parsed].css('msgQ')
|
||||
expect(msg_q.first['id']).to_not be_blank
|
||||
expect(msg_q.first['count']).to eq('0')
|
||||
|
||||
response = epp_request(epp_xml.poll, :xml, :zone)
|
||||
expect(response[:msg]).to eq('Command completed successfully; no messages')
|
||||
expect(response[:result_code]).to eq('1300')
|
||||
end
|
||||
response = epp_plain_request(epp_xml.poll, :xml)
|
||||
response[:msg].should == 'Command completed successfully; no messages'
|
||||
response[:result_code].should == '1300'
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,86 +1,85 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe 'EPP Session', epp: true do
|
||||
let(:server_gitlab) { Epp::Server.new({ server: 'localhost', tag: 'gitlab', password: 'ghyt9e4fu', port: 701 }) }
|
||||
let(:epp_xml) { EppXml.new(cl_trid: 'ABC-12345') }
|
||||
let(:login_xml_cache) { epp_xml.session.login(clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' }) }
|
||||
before :all do
|
||||
@epp_user = Fabricate(:epp_user)
|
||||
@epp_xml = EppXml.new(cl_trid: 'ABC-12345')
|
||||
@login_xml_cache = @epp_xml.session.login(clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' })
|
||||
|
||||
end
|
||||
|
||||
context 'when not connected' do
|
||||
it 'greets client upon connection' do
|
||||
response = Nokogiri::XML(server_gitlab.open_connection)
|
||||
expect(response.css('epp svID').text).to eq('EPP server (EIS)')
|
||||
server_gitlab.close_connection
|
||||
|
||||
response = Nokogiri::XML(server.open_connection)
|
||||
response.css('epp svID').text.should == 'EPP server (EIS)'
|
||||
puts "RESPONSE:\n\n```xml\n#{response}```\n\n" if ENV['EPP_DOC']
|
||||
end
|
||||
end
|
||||
|
||||
context 'when connected' do
|
||||
before(:each) { server_gitlab.open_connection }
|
||||
after(:each) { server_gitlab.close_connection }
|
||||
|
||||
context 'with valid user' do
|
||||
before(:each) { Fabricate(:epp_user) }
|
||||
|
||||
it 'logs in epp user' do
|
||||
response = epp_plain_request(login_xml_cache, :xml)
|
||||
expect(response[:result_code]).to eq('1000')
|
||||
expect(response[:msg]).to eq('Command completed successfully')
|
||||
expect(response[:clTRID]).to eq('ABC-12345')
|
||||
end
|
||||
|
||||
it 'logs out epp user' do
|
||||
epp_plain_request(login_xml_cache, :xml)
|
||||
|
||||
expect(EppSession.first[:epp_user_id]).to eq(1)
|
||||
response = epp_plain_request(epp_xml.session.logout, :xml)
|
||||
expect(response[:result_code]).to eq('1500')
|
||||
expect(response[:msg]).to eq('Command completed successfully; ending session')
|
||||
|
||||
expect(EppSession.first[:epp_user_id]).to eq(nil)
|
||||
end
|
||||
|
||||
it 'does not log in twice' do
|
||||
epp_plain_request(login_xml_cache, :xml)
|
||||
|
||||
response = epp_plain_request(login_xml_cache, :xml)
|
||||
expect(response[:result_code]).to eq('2002')
|
||||
expect(response[:msg]).to match(/Already logged in. Use/)
|
||||
|
||||
log = ApiLog::EppLog.all
|
||||
expect(log.length).to eq(3)
|
||||
expect(log[0].request_command).to eq('hello')
|
||||
expect(log[0].request_successful).to eq(true)
|
||||
|
||||
expect(log[1].request_command).to eq('login')
|
||||
expect(log[1].request_successful).to eq(true)
|
||||
expect(log[1].api_user_name).to eq('gitlab')
|
||||
expect(log[1].api_user_registrar).to eq('Registrar OÜ')
|
||||
|
||||
expect(log[2].request_command).to eq('login')
|
||||
expect(log[2].request_successful).to eq(false)
|
||||
expect(log[2].api_user_name).to eq('gitlab')
|
||||
expect(log[2].api_user_registrar).to eq('Registrar OÜ')
|
||||
end
|
||||
before do
|
||||
server.open_connection
|
||||
end
|
||||
|
||||
it 'does not log in with invalid user' do
|
||||
response = epp_plain_request(login_xml_cache, :xml)
|
||||
expect(response[:result_code]).to eq('2501')
|
||||
expect(response[:msg]).to eq('Authentication error; server closing connection')
|
||||
expect(response[:clTRID]).to eq('ABC-12345')
|
||||
wrong_user = @epp_xml.session.login(clID: { value: 'wrong-user' }, pw: { value: 'ghyt9e4fu' })
|
||||
response = epp_plain_request(wrong_user, :xml)
|
||||
response[:msg].should == 'Authentication error; server closing connection'
|
||||
response[:result_code].should == '2501'
|
||||
response[:clTRID].should == 'ABC-12345'
|
||||
end
|
||||
|
||||
Fabricate(:epp_user, active: false)
|
||||
it 'does not log in with inactive user' do
|
||||
@registrar = Fabricate(:registrar, { name: 'registrar1', reg_no: '123' })
|
||||
Fabricate(:epp_user, username: 'inactive-user', active: false, registrar: @registrar)
|
||||
|
||||
response = epp_plain_request(login_xml_cache, :xml)
|
||||
expect(response[:result_code]).to eq('2501')
|
||||
inactive = @epp_xml.session.login(clID: { value: 'inactive-user' }, pw: { value: 'ghyt9e4fu' })
|
||||
response = epp_plain_request(inactive, :xml)
|
||||
response[:result_code].should == '2501'
|
||||
end
|
||||
|
||||
it 'prohibits further actions unless logged in' do
|
||||
response = epp_plain_request(epp_xml.domain.create, :xml)
|
||||
expect(response[:result_code]).to eq('2002')
|
||||
expect(response[:msg]).to eq('You need to login first.')
|
||||
expect(response[:clTRID]).to eq('ABC-12345')
|
||||
response = epp_plain_request(@epp_xml.domain.create, :xml)
|
||||
response[:msg].should == 'You need to login first.'
|
||||
response[:result_code].should == '2002'
|
||||
response[:clTRID].should == 'ABC-12345'
|
||||
end
|
||||
|
||||
context 'with valid user' do
|
||||
it 'logs in epp user' do
|
||||
response = epp_plain_request(@login_xml_cache, :xml)
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
response[:result_code].should == '1000'
|
||||
response[:clTRID].should == 'ABC-12345'
|
||||
end
|
||||
|
||||
it 'does not log in twice' do
|
||||
response = epp_plain_request(@login_xml_cache, :xml)
|
||||
response[:msg].should == 'Command completed successfully'
|
||||
response[:result_code].should == '1000'
|
||||
response[:clTRID].should == 'ABC-12345'
|
||||
|
||||
response = epp_plain_request(@login_xml_cache, :xml)
|
||||
response[:msg].should match(/Already logged in. Use/)
|
||||
response[:result_code].should == '2002'
|
||||
|
||||
log = ApiLog::EppLog.last
|
||||
log.request_command.should == 'login'
|
||||
log.request_successful.should == false
|
||||
log.api_user_name.should == 'gitlab'
|
||||
log.api_user_registrar.should == 'Registrar OÜ'
|
||||
end
|
||||
|
||||
it 'logs out epp user' do
|
||||
epp_plain_request(@login_xml_cache, :xml)
|
||||
|
||||
EppSession.last[:epp_user_id].should == 1
|
||||
response = epp_plain_request(@epp_xml.session.logout, :xml)
|
||||
response[:msg].should == 'Command completed successfully; ending session'
|
||||
response[:result_code].should == '1500'
|
||||
|
||||
EppSession.last[:epp_user_id].should == nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
Fabricator(:contact) do
|
||||
name Faker::Name.name
|
||||
name { sequence(:name) { |i| "#{Faker::Name.name}#{i}" } }
|
||||
phone '+372.12345678'
|
||||
email Faker::Internet.email
|
||||
ident '37605030299'
|
||||
code { "sh#{Faker::Number.number(4)}" }
|
||||
code { "sh#{Faker::Number.number(8)}" }
|
||||
ident_type 'op'
|
||||
auth_info 'ccds4324pok'
|
||||
address
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe Contact do
|
||||
before :all do
|
||||
# DatabaseCleaner.clean_with(:truncation)
|
||||
# DatabaseCleaner.strategy = :transaction
|
||||
end
|
||||
|
||||
before { create_disclosure_settings }
|
||||
it { should have_one(:address) }
|
||||
|
||||
|
@ -76,6 +81,11 @@ describe Contact do
|
|||
end
|
||||
|
||||
context 'with callbacks' do
|
||||
before :all do
|
||||
Contact.set_callback(:create, :before, :generate_code)
|
||||
Contact.set_callback(:create, :before, :generate_auth_info)
|
||||
end
|
||||
|
||||
before(:each) { @contact = Fabricate.build(:contact, code: '123asd', auth_info: 'qwe321') }
|
||||
|
||||
context 'after create' do
|
||||
|
|
|
@ -15,52 +15,52 @@ describe Domain do
|
|||
create_settings
|
||||
end
|
||||
|
||||
it 'validates domain name', skip: true do
|
||||
d = Fabricate(:domain)
|
||||
expect(d.name).to_not be_nil
|
||||
# it 'validates domain name', skip: true do
|
||||
# d = Fabricate(:domain)
|
||||
# expect(d.name).to_not be_nil
|
||||
|
||||
invalid = ['a.ee', "#{'a' * 64}.ee", 'ab.eu', 'test.ab.ee', '-test.ee', '-test-.ee', 'test-.ee', 'te--st.ee',
|
||||
'õ.pri.ee', 'test.com', 'www.ab.ee', 'test.eu', ' .ee', 'a b.ee', 'Ž .ee', 'test.edu.ee']
|
||||
# invalid = ['a.ee', "#{'a' * 64}.ee", 'ab.eu', 'test.ab.ee', '-test.ee', '-test-.ee', 'test-.ee', 'te--st.ee',
|
||||
# 'õ.pri.ee', 'test.com', 'www.ab.ee', 'test.eu', ' .ee', 'a b.ee', 'Ž .ee', 'test.edu.ee']
|
||||
|
||||
invalid.each do |x|
|
||||
expect(Fabricate.build(:domain, name: x).valid?).to be false
|
||||
end
|
||||
# invalid.each do |x|
|
||||
# expect(Fabricate.build(:domain, name: x).valid?).to be false
|
||||
# end
|
||||
|
||||
valid = ['ab.ee', "#{'a' * 63}.ee", 'te-s-t.ee', 'jäääär.ee', 'päike.pri.ee',
|
||||
'õigus.com.ee', 'õäöü.fie.ee', 'test.med.ee', 'žä.ee', ' ŽŠ.ee ']
|
||||
# valid = ['ab.ee', "#{'a' * 63}.ee", 'te-s-t.ee', 'jäääär.ee', 'päike.pri.ee',
|
||||
# 'õigus.com.ee', 'õäöü.fie.ee', 'test.med.ee', 'žä.ee', ' ŽŠ.ee ']
|
||||
|
||||
valid.each do |x|
|
||||
expect(Fabricate.build(:domain, name: x).valid?).to be true
|
||||
end
|
||||
# valid.each do |x|
|
||||
# expect(Fabricate.build(:domain, name: x).valid?).to be true
|
||||
# end
|
||||
|
||||
invalid_punycode = ['xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4we.pri.ee']
|
||||
# invalid_punycode = ['xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4we.pri.ee']
|
||||
|
||||
invalid_punycode.each do |x|
|
||||
expect(Fabricate.build(:domain, name: x).valid?).to be false
|
||||
end
|
||||
# invalid_punycode.each do |x|
|
||||
# expect(Fabricate.build(:domain, name: x).valid?).to be false
|
||||
# end
|
||||
|
||||
valid_punycode = ['xn--ge-uia.pri.ee', 'xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9te.pri.ee']
|
||||
# valid_punycode = ['xn--ge-uia.pri.ee', 'xn--geaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9te.pri.ee']
|
||||
|
||||
valid_punycode.each do |x|
|
||||
expect(Fabricate.build(:domain, name: x).valid?).to be true
|
||||
end
|
||||
# valid_punycode.each do |x|
|
||||
# expect(Fabricate.build(:domain, name: x).valid?).to be true
|
||||
# end
|
||||
|
||||
d = Domain.new
|
||||
expect(d.valid?).to be false
|
||||
expect(d.errors.messages).to match_array({
|
||||
owner_contact: ['Registrant is missing'],
|
||||
admin_contacts: ['Admin contacts count must be between 1 - infinity'],
|
||||
nameservers: ['Nameservers count must be between 2-11'],
|
||||
registrar: ['Registrar is missing'],
|
||||
period: ['Period is not a number']
|
||||
})
|
||||
# d = Domain.new
|
||||
# expect(d.valid?).to be false
|
||||
# expect(d.errors.messages).to match_array({
|
||||
# owner_contact: ['Registrant is missing'],
|
||||
# admin_contacts: ['Admin contacts count must be between 1 - infinity'],
|
||||
# nameservers: ['Nameservers count must be between 2-11'],
|
||||
# registrar: ['Registrar is missing'],
|
||||
# period: ['Period is not a number']
|
||||
# })
|
||||
|
||||
Setting.ns_min_count = 2
|
||||
Setting.ns_max_count = 7
|
||||
# Setting.ns_min_count = 2
|
||||
# Setting.ns_max_count = 7
|
||||
|
||||
expect(d.valid?).to be false
|
||||
expect(d.errors.messages[:nameservers]).to eq(['Nameservers count must be between 2-7'])
|
||||
end
|
||||
# expect(d.valid?).to be false
|
||||
# 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')
|
||||
|
|
|
@ -33,17 +33,18 @@ RSpec.configure do |config|
|
|||
|
||||
config.before(:suite) do
|
||||
ActiveRecord::Base.establish_connection :api_log_test
|
||||
DatabaseCleaner.strategy = :deletion
|
||||
DatabaseCleaner.clean_with(:truncation)
|
||||
DatabaseCleaner.strategy = nil
|
||||
|
||||
ActiveRecord::Base.establish_connection :test
|
||||
DatabaseCleaner.strategy = :truncation
|
||||
end
|
||||
|
||||
config.before(:each) do
|
||||
DatabaseCleaner.strategy = :transaction
|
||||
config.before(:all) do
|
||||
DatabaseCleaner.clean_with(:truncation)
|
||||
end
|
||||
|
||||
config.before(:each, epp: true) do
|
||||
DatabaseCleaner.strategy = :truncation
|
||||
config.before(:all, epp: true) do
|
||||
DatabaseCleaner.strategy = nil
|
||||
end
|
||||
|
||||
config.before(:each, js: true) do
|
||||
|
@ -54,19 +55,12 @@ RSpec.configure do |config|
|
|||
DatabaseCleaner.strategy = :truncation
|
||||
end
|
||||
|
||||
config.before(:each) do
|
||||
ActiveRecord::Base.establish_connection :api_log_test
|
||||
DatabaseCleaner.start
|
||||
|
||||
ActiveRecord::Base.establish_connection :test
|
||||
config.before(:each, type: :model) do
|
||||
DatabaseCleaner.strategy = :transaction
|
||||
DatabaseCleaner.start
|
||||
end
|
||||
|
||||
config.after(:each) do
|
||||
ActiveRecord::Base.establish_connection :api_log_test
|
||||
DatabaseCleaner.clean
|
||||
|
||||
ActiveRecord::Base.establish_connection :test
|
||||
config.after(:each, type: :model) do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
|
@ -88,6 +82,6 @@ RSpec.configure do |config|
|
|||
config.infer_spec_type_from_file_location!
|
||||
|
||||
config.expect_with :rspec do |c|
|
||||
c.syntax = :expect
|
||||
c.syntax = [:should, :expect]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,7 +18,7 @@ describe Repp::DomainV1 do
|
|||
# TODO: Maybe there is a way not to convert from and to json again
|
||||
expect(body['domains'].to_json).to eq(epp_user.registrar.domains.to_json)
|
||||
|
||||
log = ApiLog::ReppLog.first
|
||||
log = ApiLog::ReppLog.last
|
||||
expect(log[:request_path]).to eq('/repp/v1/domains')
|
||||
expect(log[:request_method]).to eq('GET')
|
||||
expect(log[:request_params]).to eq('{}')
|
||||
|
|
|
@ -1,4 +1,47 @@
|
|||
module Epp
|
||||
# Example usage:
|
||||
#
|
||||
# login_as :gitlab
|
||||
#
|
||||
# Use block for temp login:
|
||||
#
|
||||
# login_as :registrar1 do
|
||||
# your test code
|
||||
# # will make request as registrar1 and logins back to previous session
|
||||
# end
|
||||
#
|
||||
def login_as(user)
|
||||
server.open_connection
|
||||
|
||||
if block_given?
|
||||
begin
|
||||
epp_plain_request(login_xml_for(user), :xml)
|
||||
yield
|
||||
ensure
|
||||
server.open_connection # return back to last login
|
||||
epp_plain_request(login_xml_for(@last_user), :xml)
|
||||
end
|
||||
else
|
||||
@last_user = user # save for block
|
||||
epp_plain_request(login_xml_for(user), :xml)
|
||||
end
|
||||
end
|
||||
|
||||
def login_xml_for(user)
|
||||
@xml ||= EppXml.new(cl_trid: 'ABC-12345')
|
||||
case user
|
||||
when :gitlab
|
||||
@gitlab_login_xml ||=
|
||||
@xml.session.login(clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' })
|
||||
when :registrar1
|
||||
@registrar1_login_xml ||=
|
||||
@xml.session.login(clID: { value: 'registrar1' }, pw: { value: 'ghyt9e4fu' })
|
||||
when :registrar2
|
||||
@registrar2_login_xml ||=
|
||||
@xml.session.login(clID: { value: 'registrar2' }, pw: { value: 'ghyt9e4fu' })
|
||||
end
|
||||
end
|
||||
|
||||
def read_body(filename)
|
||||
File.read("spec/epp/requests/#{filename}")
|
||||
end
|
||||
|
@ -23,10 +66,6 @@ module Epp
|
|||
end
|
||||
|
||||
def epp_plain_request(data, *args)
|
||||
server = server_gitlab
|
||||
server = server_elkdata if args.include?(:elkdata)
|
||||
server = server_zone if args.include?(:zone)
|
||||
|
||||
res = parse_response(server.send_request(data)) if args.include?(:xml)
|
||||
if res
|
||||
log(data, res[:parsed])
|
||||
|
@ -39,6 +78,11 @@ module Epp
|
|||
rescue => e
|
||||
e
|
||||
end
|
||||
|
||||
def server
|
||||
# tag and password not in use, add those at login xml
|
||||
@server ||= Epp::Server.new({ server: 'localhost', port: 701, tag: '', password: '' })
|
||||
end
|
||||
|
||||
def parse_response(raw)
|
||||
res = Nokogiri::XML(raw)
|
||||
|
@ -67,11 +111,15 @@ module Epp
|
|||
puts r[:parsed].to_s
|
||||
end
|
||||
|
||||
def next_domain_name
|
||||
"example#{@uniq_no.call}.ee"
|
||||
end
|
||||
|
||||
### REQUEST TEMPLATES ###
|
||||
|
||||
def domain_info_xml(xml_params = {})
|
||||
defaults = {
|
||||
name: { value: 'example.ee', attrs: { hosts: 'all' } },
|
||||
name: { value: next_domain_name, attrs: { hosts: 'all' } },
|
||||
authInfo: {
|
||||
pw: { value: '2fooBAR' }
|
||||
}
|
||||
|
@ -86,7 +134,7 @@ module Epp
|
|||
# rubocop: disable Metrics/MethodLength
|
||||
def domain_create_xml(xml_params = {}, dnssec_params = {})
|
||||
defaults = {
|
||||
name: { value: 'example.ee' },
|
||||
name: { value: next_domain_name },
|
||||
period: { value: '1', attrs: { unit: 'y' } },
|
||||
ns: [
|
||||
{
|
||||
|
@ -102,7 +150,7 @@ module Epp
|
|||
}
|
||||
}
|
||||
],
|
||||
registrant: { value: 'jd1234' },
|
||||
registrant: { value: 'citizen_1234' },
|
||||
_anonymus: [
|
||||
{ contact: { value: 'sh8013', attrs: { type: 'admin' } } },
|
||||
{ contact: { value: 'sh8013', attrs: { type: 'tech' } } },
|
||||
|
@ -138,11 +186,9 @@ module Epp
|
|||
epp_xml.create(xml_params, dnssec_params, custom_params)
|
||||
end
|
||||
|
||||
def domain_create_xml_with_legal_doc
|
||||
epp_xml = EppXml::Domain.new(cl_trid: 'ABC-12345')
|
||||
|
||||
epp_xml.create({
|
||||
name: { value: 'example.ee' },
|
||||
def domain_create_xml_with_legal_doc(xml_params = {})
|
||||
defaults = {
|
||||
name: { value: next_domain_name },
|
||||
period: { value: '1', attrs: { unit: 'y' } },
|
||||
ns: [
|
||||
{
|
||||
|
@ -158,13 +204,19 @@ module Epp
|
|||
}
|
||||
}
|
||||
],
|
||||
registrant: { value: 'jd1234' },
|
||||
registrant: { value: 'citizen_1234' },
|
||||
_anonymus: [
|
||||
{ contact: { value: 'sh8013', attrs: { type: 'admin' } } },
|
||||
{ contact: { value: 'sh8013', attrs: { type: 'tech' } } },
|
||||
{ contact: { value: 'sh801333', attrs: { type: 'tech' } } }
|
||||
]
|
||||
}, {}, {
|
||||
}
|
||||
|
||||
xml_params = defaults.deep_merge(xml_params)
|
||||
|
||||
epp_xml = EppXml::Domain.new(cl_trid: 'ABC-12345')
|
||||
|
||||
epp_xml.create(xml_params, {}, {
|
||||
_anonymus: [
|
||||
legalDocument: {
|
||||
value: 'JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==',
|
||||
|
@ -176,7 +228,7 @@ module Epp
|
|||
|
||||
def domain_create_with_invalid_ns_ip_xml
|
||||
xml_params = {
|
||||
name: { value: 'example.ee' },
|
||||
name: { value: next_domain_name },
|
||||
period: { value: '1', attrs: { unit: 'y' } },
|
||||
ns: [
|
||||
{
|
||||
|
@ -192,7 +244,7 @@ module Epp
|
|||
}
|
||||
}
|
||||
],
|
||||
registrant: { value: 'jd1234' },
|
||||
registrant: { value: 'citizen_1234' },
|
||||
_anonymus: [
|
||||
{ contact: { value: 'sh8013', attrs: { type: 'admin' } } },
|
||||
{ contact: { value: 'sh8013', attrs: { type: 'tech' } } },
|
||||
|
@ -220,7 +272,7 @@ module Epp
|
|||
|
||||
def domain_create_with_host_attrs
|
||||
xml_params = {
|
||||
name: { value: 'example.ee' },
|
||||
name: { value: next_domain_name },
|
||||
period: { value: '1', attrs: { unit: 'y' } },
|
||||
ns: [
|
||||
{
|
||||
|
@ -236,7 +288,7 @@ module Epp
|
|||
}
|
||||
}
|
||||
],
|
||||
registrant: { value: 'jd1234' },
|
||||
registrant: { value: 'citizen_1234' },
|
||||
_anonymus: [
|
||||
{ contact: { value: 'sh8013', attrs: { type: 'admin' } } },
|
||||
{ contact: { value: 'sh8013', attrs: { type: 'tech' } } },
|
||||
|
@ -264,7 +316,7 @@ module Epp
|
|||
|
||||
def domain_update_xml(xml_params = {}, dnssec_params = {}, custom_params = {})
|
||||
defaults = {
|
||||
name: { value: 'example.ee' }
|
||||
name: { value: next_domain_name }
|
||||
}
|
||||
|
||||
xml_params = defaults.deep_merge(xml_params)
|
||||
|
@ -275,7 +327,7 @@ module Epp
|
|||
def domain_check_xml(xml_params = {})
|
||||
defaults = {
|
||||
_anonymus: [
|
||||
{ name: { value: 'example.ee' } }
|
||||
{ name: { value: next_domain_name } }
|
||||
]
|
||||
}
|
||||
xml_params = defaults.deep_merge(xml_params)
|
||||
|
@ -285,9 +337,9 @@ module Epp
|
|||
|
||||
def domain_transfer_xml(xml_params = {}, op = 'query', custom_params = {})
|
||||
defaults = {
|
||||
name: { value: 'example.ee' },
|
||||
name: { value: next_domain_name },
|
||||
authInfo: {
|
||||
pw: { value: '98oiewslkfkd', attrs: { roid: 'JD1234-REP' } }
|
||||
pw: { value: '98oiewslkfkd', attrs: { roid: 'citizen_1234-REP' } }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue