Merge remote-tracking branch 'origin/master' into 1819-improve-credit-account-balance-overview

This commit is contained in:
Karl Erik Õunapuu 2021-02-12 11:30:09 +02:00
commit 9a7acf7c33
No known key found for this signature in database
GPG key ID: C9DD647298A34764
93 changed files with 2337 additions and 203 deletions

View file

@ -0,0 +1,39 @@
require 'test_helper'
require 'application_system_test_case'
class AdminAreaAccountActivitiesIntegrationTest < ApplicationSystemTestCase
# /admin/account_activities
setup do
sign_in users(:admin)
@original_default_language = Setting.default_language
end
def test_show_account_activities_page
account_activities(:one).update(sum: "123.00")
visit admin_account_activities_path
assert_text 'Account activities'
end
def test_default_url_params
account_activities(:one).update(sum: "123.00")
visit admin_root_path
click_link_or_button 'Settings', match: :first
find(:xpath, "//ul/li/a[text()='Account activities']").click
assert has_current_path?(admin_account_activities_path(created_after: 'today'))
end
def test_download_account_activity
now = Time.zone.parse('2010-07-05 08:00')
travel_to now
account_activities(:one).update(sum: "123.00")
get admin_account_activities_path(format: :csv)
assert_response :ok
assert_equal "text/csv", response.headers['Content-Type']
assert_equal %(attachment; filename="account_activities_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''account_activities_#{Time.zone.now.to_formatted_s(:number)}.csv),
response.headers['Content-Disposition']
assert_not_empty response.body
end
end

View file

@ -0,0 +1,101 @@
require 'test_helper'
require 'application_system_test_case'
class AdminAreaAdminUsersIntegrationTest < JavaScriptApplicationSystemTestCase
include Devise::Test::IntegrationHelpers
include ActionView::Helpers::NumberHelper
setup do
WebMock.allow_net_connect!
@original_default_language = Setting.default_language
sign_in users(:admin)
end
def test_create_new_admin_user
createNewAdminUser(true)
end
def test_create_with_invalid_data_new_admin_user
createNewAdminUser(false)
end
def test_edit_successfully_exist_record
createNewAdminUser(true)
visit admin_admin_users_path
click_on 'test_user_name'
assert_text 'General'
click_on 'Edit'
fill_in 'Password', with: 'test_password'
fill_in 'Password confirmation', with: 'test_password'
click_on 'Save'
assert_text 'Record updated'
end
def test_edit_exist_record_with_invalid_data
createNewAdminUser(true)
visit admin_admin_users_path
click_on 'test_user_name'
assert_text 'General'
click_on 'Edit'
fill_in 'Password', with: 'test_password'
fill_in 'Password confirmation', with: 'test_password2'
click_on 'Save'
assert_text 'Failed to update record'
end
def test_delete_exist_record
createNewAdminUser(true)
visit admin_admin_users_path
click_on 'test_user_name'
assert_text 'General'
click_on 'Delete'
page.driver.browser.switch_to.alert.accept
assert_text 'Record deleted'
end
private
def createNewAdminUser(valid)
visit admin_admin_users_path
click_on 'New admin user'
fill_in 'Username', with: 'test_user_name'
# If valid=true creating valid user, if else, then with invalid data
if valid
fill_in 'Password', with: 'test_password'
fill_in 'Password confirmation', with: 'test_password'
else
fill_in 'Password', with: 'test_password'
fill_in 'Password confirmation', with: 'test_password2'
end
fill_in 'Identity code', with: '38903110313'
fill_in 'Email', with: 'oleg@tester.ee'
select 'Estonia', from: 'admin_user_country_code', match: :first
select_element = find(:xpath, "/html/body/div[2]/form/div[2]/div/div[7]/div[2]/div/div[1]")
select_element.click
option_element = find(:xpath, "/html/body/div[2]/form/div[2]/div/div[7]/div[2]/div/div[2]/div/div[1]")
option_element.click
click_on 'Save'
if valid
assert_text 'Record created'
else
assert_text 'Failed to create record'
end
end
end

View file

@ -0,0 +1,68 @@
require 'test_helper'
require 'application_system_test_case'
# /admin/blocked_domains
class AdminAreaBlockedDomainsIntegrationTest < JavaScriptApplicationSystemTestCase
setup do
WebMock.allow_net_connect!
sign_in users(:admin)
@domain = domains(:shop)
@blocked_domain = blocked_domains(:one)
end
def test_page_successfully_loaded
visit_admin_blocked_domains_path
end
def test_add_into_blocked_list
visit_admin_blocked_domains_path
add_domain_into_blocked_list(true)
end
def test_add_into_blocked_list_same_domain
visit_admin_blocked_domains_path
add_domain_into_blocked_list(true)
add_domain_into_blocked_list(false)
end
def test_delete_domain_from_blocked_list
visit_admin_blocked_domains_path
add_domain_into_blocked_list(true)
click_link_or_button 'Delete', match: :first
# Accept to delete in modal window
page.driver.browser.switch_to.alert.accept
assert_text 'Domain deleted!'
end
def test_find_blocked_domain_from_blocked_list
visit_admin_blocked_domains_path
add_domain_into_blocked_list(true)
fill_in 'Name', with: @domain.name
find(:xpath, "//span[@class='glyphicon glyphicon-search']").click
assert_text @domain.name
end
private
def visit_admin_blocked_domains_path
visit admin_blocked_domains_path
assert_text 'Blocked domains'
end
def add_domain_into_blocked_list(value)
click_on 'New blocked domain'
assert_text 'Add domain to blocked list'
fill_in 'Name', with: @domain.name
click_on 'Save'
return assert_text 'Domain added!' if value
return assert_text 'Failed to add domain!'
end
end

View file

@ -0,0 +1,71 @@
require 'test_helper'
require 'application_system_test_case'
class AdminAreaCertificatesIntegrationTest < JavaScriptApplicationSystemTestCase
setup do
WebMock.allow_net_connect!
sign_in users(:admin)
@apiuser = users(:api_bestnames)
@certificate = certificates(:api)
@certificate.update!(csr: "-----BEGIN CERTIFICATE REQUEST-----\nMIICszCCAZsCAQAwbjELMAkGA1UEBhMCRUUxFDASBgNVBAMMC2ZyZXNoYm94LmVl\nMRAwDgYDVQQHDAdUYWxsaW5uMREwDwYDVQQKDAhGcmVzaGJveDERMA8GA1UECAwI\nSGFyanVtYWExETAPBgNVBAsMCEZyZXNoYm94MIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEA1VVESynZoZhIbe8s9zHkELZ/ZDCGiM2Q8IIGb1IOieT5U2mx\nIsVXz85USYsSQY9+4YdEXnupq9fShArT8pstS/VN6BnxdfAiYXc3UWWAuaYAdNGJ\nDr5Jf6uMt1wVnCgoDL7eJq9tWMwARC/viT81o92fgqHFHW0wEolfCmnpik9o0ACD\nFiWZ9IBIevmFqXtq25v9CY2cT9+eZW127WtJmOY/PKJhzh0QaEYHqXTHWOLZWpnp\nHH4elyJ2CrFulOZbHPkPNB9Nf4XQjzk1ffoH6e5IVys2VV5xwcTkF0jY5XTROVxX\nlR2FWqic8Q2pIhSks48+J6o1GtXGnTxv94lSDwIDAQABoAAwDQYJKoZIhvcNAQEL\nBQADggEBAEFcYmQvcAC8773eRTWBJJNoA4kRgoXDMYiiEHih5iJPVSxfidRwYDTF\nsP+ttNTUg3JocFHY75kuM9T2USh+gu/trRF0o4WWa+AbK3JbbdjdT1xOMn7XtfUU\nZ/f1XCS9YdHQFCA6nk4Z+TLWwYsgk7n490AQOiB213fa1UIe83qIfw/3GRqRUZ7U\nwIWEGsHED5WT69GyxjyKHcqGoV7uFnqFN0sQVKVTy/NFRVQvtBUspCbsOirdDRie\nAB2KbGHL+t1QrRF10szwCJDyk5aYlVhxvdI8zn010nrxHkiyQpDFFldDMLJl10BW\n2w9PGO061z+tntdRcKQGuEpnIr9U5Vs=\n-----END CERTIFICATE REQUEST-----\n")
end
def test_show_certificate_info
show_certificate_info
end
def test_destroy_certificate
show_certificate_info
find(:xpath, "//a[text()='Delete']").click
page.driver.browser.switch_to.alert.accept
assert_text 'Record deleted'
end
def test_download_csr
get download_csr_admin_api_user_certificate_path(api_user_id: @apiuser.id, id: @certificate.id)
assert_response :ok
assert_equal 'application/octet-stream', response.headers['Content-Type']
assert_equal "attachment; filename=\"test_bestnames.csr.pem\"; filename*=UTF-8''test_bestnames.csr.pem", response.headers['Content-Disposition']
assert_not_empty response.body
end
def test_download_crt
get download_crt_admin_api_user_certificate_path(api_user_id: @apiuser.id, id: @certificate.id)
assert_response :ok
assert_equal 'application/octet-stream', response.headers['Content-Type']
assert_equal "attachment; filename=\"test_bestnames.crt.pem\"; filename*=UTF-8''test_bestnames.crt.pem", response.headers['Content-Disposition']
assert_not_empty response.body
end
def test_failed_to_revoke_certificate
show_certificate_info
find(:xpath, "//a[text()='Revoke this certificate']").click
assert_text 'Failed to update record'
end
def test_new_api_user
visit new_admin_registrar_api_user_path(registrar_id: registrars(:bestnames).id)
fill_in 'Username', with: 'testapiuser'
fill_in 'Password', with: 'secretpassword'
fill_in 'Identity code', with: '60305062718'
click_on 'Create API user'
assert_text 'API user has been successfully created'
end
private
def show_certificate_info
visit admin_api_user_certificate_path(api_user_id: @apiuser.id, id: @certificate.id)
assert_text 'Certificates'
end
end

View file

@ -0,0 +1,52 @@
# admin_epp_logs_path
require 'test_helper'
require 'application_system_test_case'
class AdminEppLogsIntegrationTest < ApplicationSystemTestCase
setup do
sign_in users(:admin)
end
def test_visit_epp_logs_page
visit admin_epp_logs_path
assert_text 'EPP log'
end
def test_show_epp_log_page
visit admin_epp_logs_path
send_epp_request_hello
visit admin_epp_logs_path
find(:xpath, "//tbody/tr/td/a", match: :first).click
assert_text 'Details'
end
def test_dates_sort
Capybara.exact = true
visit admin_epp_logs_path
send_epp_request_hello
visit admin_epp_logs_path
find(:xpath, "//a[contains(text(), 'Created at')]", match: :first).click
find(:xpath, "//a[contains(text(), 'Created at')]", match: :first).click
epp_log_date = find(:xpath, "//table/tbody/tr/td[6]", match: :first).text(:all)
date_now = Date.today.to_s(:db)
assert_match /#{date_now}/, epp_log_date
end
private
def send_epp_request_hello
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<hello/>
</epp>
XML
get epp_hello_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=non-existent' }
end
end

View file

@ -6,6 +6,27 @@ class AdminAreaInvoicesIntegrationTest < ApplicationIntegrationTest
sign_in users(:admin)
end
def test_create_new_invoice
visit new_admin_invoice_path
assert_text 'Create new invoice'
select 'Best Names', from: 'deposit_registrar_id', match: :first
fill_in 'Amount', with: '1000'
click_on 'Save'
assert_equal page.status_code, 200
end
def test_visit_list_of_invoices_pages
visit admin_invoices_path
assert_text 'Invoices'
end
def test_visit_invoice_page
visit admin_invoices_path(id: @invoice.id)
assert_text "Invoice no. #{@invoice.number}"
end
def test_downloads_invoice
assert_equal 1, @invoice.number

View file

@ -0,0 +1,60 @@
require 'test_helper'
require 'application_system_test_case'
class AdminAreaPendingDeleteIntegrationTest < JavaScriptApplicationSystemTestCase
setup do
WebMock.allow_net_connect!
sign_in users(:admin)
@domain = domains(:shop)
@token = '123456'
@domain.update!(statuses: [DomainStatus::PENDING_DELETE_CONFIRMATION],
registrant_verification_asked_at: Time.zone.now - 1.day,
registrant_verification_token: @token)
end
def test_accept_pending_delete
visit edit_admin_domain_path(id: @domain.id)
click_on 'Accept'
page.driver.browser.switch_to.alert.accept
assert_text 'Pending was successfully applied.'
end
def test_accept_pending_delete_no_success
@domain.update!(statuses: [DomainStatus::PENDING_DELETE_CONFIRMATION],
registrant_verification_asked_at: Time.zone.now - 1.day,
registrant_verification_token: nil)
visit edit_admin_domain_path(id: @domain.id)
click_on 'Accept'
page.driver.browser.switch_to.alert.accept
assert_text 'Not success'
end
def test_reject_panding_delete
visit edit_admin_domain_path(id: @domain.id)
click_on 'Reject'
page.driver.browser.switch_to.alert.accept
assert_text 'Pending was successfully removed.'
end
def test_accept_pending_delete_no_success
@domain.update!(statuses: [DomainStatus::PENDING_DELETE_CONFIRMATION],
registrant_verification_asked_at: Time.zone.now - 1.day,
registrant_verification_token: nil)
visit edit_admin_domain_path(id: @domain.id)
click_on 'Reject'
page.driver.browser.switch_to.alert.accept
assert_text 'Not success'
end
end

View file

@ -0,0 +1,96 @@
require 'test_helper'
require 'application_system_test_case'
class AdminAreaPendingUpdateIntegrationTest < JavaScriptApplicationSystemTestCase
setup do
WebMock.allow_net_connect!
sign_in users(:admin)
@domain = domains(:hospital)
@new_registrant = contacts(:jack)
@user = users(:api_bestnames)
@token = '123456'
@domain.update!(statuses: [DomainStatus::PENDING_UPDATE],
registrant_verification_asked_at: Time.zone.now - 1.day,
registrant_verification_token: @token)
end
def test_accept_pending_update
pending_json = { new_registrant_id: @new_registrant.id,
new_registrant_name: @new_registrant.name,
new_registrant_email: @new_registrant.email,
current_user_id: @user.id }
@domain.update(pending_json: pending_json)
@domain.reload
visit edit_admin_domain_path(id: @domain.id)
click_on 'Accept'
page.driver.browser.switch_to.alert.accept
assert_text 'Pending was successfully applied.'
end
def test_accept_pending_update_no_success
@domain.update!(statuses: [DomainStatus::PENDING_UPDATE],
registrant_verification_asked_at: Time.zone.now - 1.day,
registrant_verification_token: nil)
pending_json = { new_registrant_id: @new_registrant.id,
new_registrant_name: @new_registrant.name,
new_registrant_email: @new_registrant.email,
current_user_id: @user.id,
}
@domain.update(pending_json: pending_json)
@domain.reload
visit edit_admin_domain_path(id: @domain.id)
click_on 'Accept'
page.driver.browser.switch_to.alert.accept
assert_text 'Not success'
end
def test_reject_panding_update
pending_json = { new_registrant_id: @new_registrant.id,
new_registrant_name: @new_registrant.name,
new_registrant_email: @new_registrant.email,
current_user_id: @user.id,
}
@domain.update(pending_json: pending_json)
@domain.reload
visit edit_admin_domain_path(id: @domain.id)
click_on 'Reject'
page.driver.browser.switch_to.alert.accept
assert_text 'Pending was successfully removed.'
end
def test_accept_pending_update_no_success
@domain.update!(statuses: [DomainStatus::PENDING_UPDATE],
registrant_verification_asked_at: Time.zone.now - 1.day,
registrant_verification_token: nil)
pending_json = { new_registrant_id: @new_registrant.id,
new_registrant_name: @new_registrant.name,
new_registrant_email: @new_registrant.email,
current_user_id: @user.id,
}
@domain.update(pending_json: pending_json)
@domain.reload
visit edit_admin_domain_path(id: @domain.id)
click_on 'Reject'
page.driver.browser.switch_to.alert.accept
assert_text 'Not success'
end
end

View file

@ -17,4 +17,4 @@ class AdminAreaRegistrarsIntegrationTest < ActionDispatch::IntegrationTest
assert_equal new_iban, @registrar.iban
end
end
end

View file

@ -0,0 +1,23 @@
require 'test_helper'
require 'application_system_test_case'
class AdminAreaReppLogsIntegrationTest < ApplicationSystemTestCase
setup do
sign_in users(:admin)
end
def test_repp_logs_page
visit admin_repp_logs_path
assert_text 'REPP log'
end
def test_show_repp_log_page
visit admin_repp_logs_path
get repp_v1_contacts_path
visit admin_repp_logs_path
find(:xpath, "//tbody/tr/td/a", match: :first).click
assert_text 'REPP log'
end
end

View file

@ -0,0 +1,39 @@
require 'test_helper'
require 'application_system_test_case'
class AdminAreaReservedDomainsIntegrationTest < JavaScriptApplicationSystemTestCase
setup do
WebMock.allow_net_connect!
@original_default_language = Setting.default_language
sign_in users(:admin)
@reserved_domain = reserved_domains(:one)
end
def test_remove_reserved_domain
visit admin_reserved_domains_path
click_link_or_button 'Delete', match: :first
page.driver.browser.switch_to.alert.accept
assert_text 'Domain deleted!'
end
def test_add_invalid_domain
visit admin_reserved_domains_path
click_on 'New reserved domain'
fill_in "Name", with: "@##@$"
click_on 'Save'
assert_text 'Failed to add domain!'
end
def test_update_reserved_domain
visit admin_reserved_domains_path
click_link_or_button 'Edit Pw', match: :first
fill_in 'Password', with: '12345678'
click_on 'Save'
assert_text 'Domain updated!'
end
end

View file

@ -0,0 +1,94 @@
require 'test_helper'
require 'application_system_test_case'
class AdminAreaWhiteIpsIntegrationTest < JavaScriptApplicationSystemTestCase
setup do
WebMock.allow_net_connect!
sign_in users(:admin)
@registrar = registrars(:bestnames)
@white_ip = white_ips(:one)
end
def test_visit_new_whitelisted_ip_page
visit_new_whitelisted_ip_page
end
def test_create_new_whitelisted_ip
visit_new_whitelisted_ip_page
fill_in 'IPv4', with: "127.0.0.1"
fill_in 'IPv6', with: "::ffff:192.0.2.1"
find(:css, "#white_ip_interfaces_api").set(true)
find(:css, "#white_ip_interfaces_registrar").set(true)
click_on 'Save'
assert_text 'Record created'
end
def test_failed_to_create_new_whitelisted_ip
visit_new_whitelisted_ip_page
fill_in 'IPv4', with: "asdadadad.asd"
click_on 'Save'
assert_text 'Failed to create record'
end
def test_visit_edit_whitelisted_ip_page
visit_edit_whitelisted_ip_page
end
def test_update_whitelisted_ip
visit_info_whitelisted_ip_page
click_on 'Edit'
fill_in 'IPv4', with: "127.0.0.2"
find(:css, "#white_ip_interfaces_api").set(false)
click_on 'Save'
assert_text 'Record updated'
end
def test_failed_to_update_whitelisted_ip
visit_info_whitelisted_ip_page
click_on 'Edit'
fill_in 'IPv4', with: "asdadad#"
click_on 'Save'
assert_text 'Failed to update record'
end
def test_visit_info_whitelisted_ip_page
visit_info_whitelisted_ip_page
end
def test_delete_whitelisted_ip
visit_info_whitelisted_ip_page
click_on 'Delete'
page.driver.browser.switch_to.alert.accept
assert_text 'Record deleted'
end
private
def visit_new_whitelisted_ip_page
visit new_admin_registrar_white_ip_path(registrar_id: @registrar.id)
assert_text 'New whitelisted IP'
end
def visit_edit_whitelisted_ip_page
visit edit_admin_registrar_white_ip_path(registrar_id: @registrar.id, id: @white_ip.id)
assert_text 'Edit white IP'
end
def visit_info_whitelisted_ip_page
visit admin_registrar_white_ip_path(registrar_id: @registrar.id, id: @white_ip.id)
assert_text 'White IP'
end
end

View file

@ -0,0 +1,153 @@
require 'test_helper'
class APIDomainAdminContactsTest < ApplicationIntegrationTest
setup do
@admin_current = domains(:shop).admin_contacts.find_by(code: 'jane-001')
domain = domains(:airport)
domain.admin_contacts << @admin_current
@admin_new = contacts(:william)
@admin_new.update(ident: @admin_current.ident,
ident_type: @admin_current.ident_type,
ident_country_code: @admin_current.ident_country_code)
end
def test_replace_all_admin_contacts_when_ident_data_doesnt_match
@admin_new.update(ident: '777' ,
ident_type: 'priv',
ident_country_code: 'LV')
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: @admin_new.code },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :bad_request
assert_equal ({ code: 2304, message: 'Admin contacts must be identical', data: {} }),
JSON.parse(response.body, symbolize_names: true)
end
def test_replace_all_admin_contacts_of_the_current_registrar
assert @admin_new.identical_to?(@admin_current)
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: @admin_new.code },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_nil domains(:shop).admin_contacts.find_by(code: @admin_current.code)
assert domains(:shop).admin_contacts.find_by(code: @admin_new.code)
assert domains(:airport).admin_contacts.find_by(code: @admin_new.code)
end
def test_skip_discarded_domains
domains(:airport).update!(statuses: [DomainStatus::DELETE_CANDIDATE])
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: @admin_new.code },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert domains(:airport).admin_contacts.find_by(code: @admin_current.code)
end
def test_return_affected_domains_in_alphabetical_order
domain = domains(:airport)
domain.admin_contacts = [@admin_current]
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: @admin_new.code },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :ok
assert_equal ({ code: 1000, message: 'Command completed successfully', data: { affected_domains: %w[airport.test shop.test],
skipped_domains: [] }}),
JSON.parse(response.body, symbolize_names: true)
end
def test_return_skipped_domains_in_alphabetical_order
domains(:shop).update!(statuses: [DomainStatus::DELETE_CANDIDATE])
domains(:airport).update!(statuses: [DomainStatus::DELETE_CANDIDATE])
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: @admin_new.code },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :ok
assert_equal %w[airport.test shop.test], JSON.parse(response.body,
symbolize_names: true)[:data][:skipped_domains]
end
def test_keep_other_admin_contacts_intact
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: @admin_new.code },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert domains(:airport).admin_contacts.find_by(code: 'john-001')
end
def test_keep_tech_contacts_intact
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: @admin_new.code },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert domains(:airport).tech_contacts.find_by(code: 'william-001')
end
def test_restrict_contacts_to_the_current_registrar
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: 'william-002' },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :not_found
assert_equal ({ code: 2303, message: 'Object does not exist' }),
JSON.parse(response.body, symbolize_names: true)
end
def test_non_existent_current_contact
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: 'non-existent',
new_contact_id: @admin_new.code},
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :not_found
assert_equal ({ code: 2303, message: 'Object does not exist' }),
JSON.parse(response.body, symbolize_names: true)
end
def test_non_existent_new_contact
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: 'non-existent' },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :not_found
assert_equal ({code: 2303, message: 'Object does not exist'}),
JSON.parse(response.body, symbolize_names: true)
end
def test_disallow_invalid_new_contact
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: 'invalid' },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :bad_request
assert_equal ({ code: 2304, message: 'New contact must be valid', data: {} }),
JSON.parse(response.body, symbolize_names: true)
end
def test_admin_bulk_changed_when_domain_update_prohibited
domains(:shop).update!(statuses: [DomainStatus::SERVER_UPDATE_PROHIBITED])
domains(:airport).admin_contacts = [@admin_current]
shop_admin_contact = Contact.find_by(code: 'jane-001')
assert domains(:shop).admin_contacts.include?(shop_admin_contact)
patch '/repp/v1/domains/admin_contacts', params: { current_contact_id: @admin_current.code,
new_contact_id: @admin_new.code },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :ok
assert_equal ({ code: 1000,
message: 'Command completed successfully',
data: { affected_domains: ["airport.test"],
skipped_domains: ["shop.test"] }}),
JSON.parse(response.body, symbolize_names: true)
end
private
def http_auth_key
ActionController::HttpAuthentication::Basic.encode_credentials('test_bestnames', 'testtest')
end
end

View file

@ -107,6 +107,24 @@ class APIDomainContactsTest < ApplicationIntegrationTest
JSON.parse(response.body, symbolize_names: true)
end
def test_tech_bulk_changed_when_domain_update_prohibited
domains(:shop).update!(statuses: [DomainStatus::SERVER_UPDATE_PROHIBITED])
shop_tech_contact = Contact.find_by(code: 'william-001')
assert domains(:shop).tech_contacts.include?(shop_tech_contact)
patch '/repp/v1/domains/contacts', params: { current_contact_id: 'william-001',
new_contact_id: 'john-001' },
headers: { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_response :ok
assert_equal ({ code: 1000,
message: 'Command completed successfully',
data: { affected_domains: ["airport.test"],
skipped_domains: ["shop.test"] }}),
JSON.parse(response.body, symbolize_names: true)
end
private
def http_auth_key

View file

@ -2,7 +2,7 @@ require 'test_helper'
class BouncesApiV1CreateTest < ActionDispatch::IntegrationTest
def setup
@api_key = "Basic #{ENV['api_shared_key']}"
@api_key = "Basic #{ENV['rwhois_bounces_api_shared_key']}"
@headers = { "Authorization": "#{@api_key}" }
@json_body = { "data": valid_bounce_request }.as_json
end

View file

@ -0,0 +1,68 @@
require 'test_helper'
class ApiV1ContactRequestTest < ActionDispatch::IntegrationTest
def setup
@api_key = "Basic #{ENV['rwhois_internal_api_shared_key']}"
@headers = { "Authorization": "#{@api_key}" }
@json_create = { "contact_request": valid_contact_request_create }.as_json
@json_update = { "contact_request": valid_contact_request_update }.as_json
@contact_request = contact_requests(:new)
end
def test_authorizes_api_request
post api_v1_contact_requests_path, params: @json_create, headers: @headers
assert_response :created
invalid_headers = { "Authorization": "Basic invalid_api_key" }
post api_v1_contact_requests_path, params: @json_create, headers: invalid_headers
assert_response :unauthorized
end
def test_saves_new_contact_request
request_body = @json_create.dup
random_mail = "#{rand(10000..99999)}@registry.test"
request_body['contact_request']['email'] = random_mail
post api_v1_contact_requests_path, params: request_body, headers: @headers
assert_response :created
contact_request = ContactRequest.last
assert_equal contact_request.email, random_mail
assert ContactRequest::STATUS_NEW, contact_request.status
end
def test_updates_existing_contact_request
request_body = @json_update.dup
put api_v1_contact_request_path(@contact_request.id), params: request_body, headers: @headers
assert_response :ok
@contact_request.reload
assert ContactRequest::STATUS_CONFIRMED, @contact_request.status
end
def test_not_updates_if_status_error
request_body = @json_update.dup
request_body['contact_request']['status'] = 'some_error_status'
put api_v1_contact_request_path(@contact_request.id), params: request_body, headers: @headers
assert_response 400
@contact_request.reload
assert ContactRequest::STATUS_NEW, @contact_request.status
end
def valid_contact_request_create
{
"email": "aaa@bbb.com",
"whois_record_id": "1",
"name": "test"
}.as_json
end
def valid_contact_request_update
{
"status": "#{ContactRequest::STATUS_CONFIRMED}",
}.as_json
end
end

View file

@ -1,5 +1,6 @@
require 'test_helper'
require 'auth_token/auth_token_creator'
require 'json'
CompanyRegisterClientStub = Struct.new(:any_method) do
def representation_rights(citizen_personal_code:, citizen_country_code:)
@ -55,6 +56,42 @@ class RegistrantApiV1ContactListTest < ActionDispatch::IntegrationTest
assert_equal '1234', response_json.first[:ident][:code]
end
def test_out_of_range_limit
get api_v1_registrant_contacts_path + "?limit=300", as: :json, headers: { 'HTTP_AUTHORIZATION' => auth_token }
response_json = JSON.parse(response.body, symbolize_names: true)
text_response = JSON.pretty_generate(response_json[:errors][0][:limit][0])
assert_equal text_response, '"parameter is out of range"'
end
def test_negative_offset
get api_v1_registrant_contacts_path + "?offset=-300", as: :json, headers: { 'HTTP_AUTHORIZATION' => auth_token }
response_json = JSON.parse(response.body, symbolize_names: true)
text_response = JSON.pretty_generate(response_json[:errors][0][:offset][0])
assert_equal text_response, '"parameter is out of range"'
end
def test_show_valid_contact
get api_v1_registrant_contacts_path + "/eb2f2766-b44c-4e14-9f16-32ab1a7cb957", as: :json, headers: { 'HTTP_AUTHORIZATION' => auth_token }
response_json = JSON.parse(response.body, symbolize_names: true)
text_response = response_json[:name]
assert_equal @contact[:name], text_response
end
def test_show_invalid_contact
get api_v1_registrant_contacts_path + "/435", as: :json, headers: { 'HTTP_AUTHORIZATION' => auth_token }
response_json = JSON.parse(response.body, symbolize_names: true)
text_response = response_json[:errors][0][:base][0]
assert_equal text_response, 'Contact not found'
end
private
def delete_direct_contact

View file

@ -4,11 +4,12 @@ require 'auth_token/auth_token_creator'
class RegistrantApiV1ContactUpdateTest < ActionDispatch::IntegrationTest
setup do
@contact = contacts(:john)
@contact_org = contacts(:acme_ltd)
@original_address_processing = Setting.address_processing
@original_fax_enabled_setting = ENV['fax_enabled']
@user = users(:registrant)
end
teardown do
@ -90,6 +91,32 @@ class RegistrantApiV1ContactUpdateTest < ActionDispatch::IntegrationTest
@contact.address
end
def test_update_address_when_enabled_without_address_params
Setting.address_processing = true
patch api_v1_registrant_contact_path(@contact.uuid), params: { address: { } },
as: :json,
headers: { 'HTTP_AUTHORIZATION' => auth_token }
assert_response :bad_request
@contact.reload
assert_equal Contact::Address.new(nil, nil, nil, nil, nil),
@contact.address
end
def test_update_address_when_enabled_without_address_params
Setting.address_processing = true
patch api_v1_registrant_contact_path(@contact.uuid), params: { },
as: :json,
headers: { 'HTTP_AUTHORIZATION' => auth_token }
assert_response :bad_request
@contact.reload
assert_equal Contact::Address.new(nil, nil, nil, nil, nil),
@contact.address
end
def test_address_is_optional_when_enabled
Setting.address_processing = true
@contact.update!(street: 'any', zip: 'any', city: 'any', state: 'any', country_code: 'US')
@ -211,6 +238,21 @@ class RegistrantApiV1ContactUpdateTest < ActionDispatch::IntegrationTest
symbolize_names: true)
end
def test_org_disclosed_attributes
patch api_v1_registrant_contact_path(@contact_org.uuid), params: { disclosed_attributes: ["some_attr"] },
as: :json,
headers: { 'HTTP_AUTHORIZATION' => auth_token }
assert_response :bad_request
err_msg = "Legal person's data is visible by default and cannot be concealed. Please remove this parameter."
response_json = JSON.parse(response.body, symbolize_names: true)
response_msg = response_json[:errors][0][:disclosed_attributes][0]
assert_equal err_msg, response_msg
end
def test_unmanaged_contact_cannot_be_updated
assert_equal 'US-1234', @user.registrant_ident
@contact.update!(ident: '12345')

View file

@ -26,7 +26,7 @@ class EppContactCheckBaseTest < EppTestCase
response_xml = Nokogiri::XML(response.body)
assert_epp_response :completed_successfully
assert_equal 'john-001', response_xml.at_xpath('//contact:id', contact: xml_schema).text
assert_equal "#{@contact.registrar.code}:JOHN-001".upcase, response_xml.at_xpath('//contact:id', contact: xml_schema).text
end
def test_contact_is_available
@ -52,7 +52,8 @@ class EppContactCheckBaseTest < EppTestCase
end
def test_contact_is_unavailable
assert_equal 'john-001', @contact.code
@contact.update_columns(code: "#{@contact.registrar.code}:JOHN-001".upcase)
assert @contact.code, "#{@contact.registrar.code}:JOHN-001".upcase
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
@ -98,9 +99,61 @@ class EppContactCheckBaseTest < EppTestCase
assert_equal 3, response_xml.xpath('//contact:cd', contact: xml_schema).size
end
def test_check_contact_with_prefix
@contact.update_columns(code: "#{@contact.registrar.code}:JOHN-001".upcase)
assert @contact.code, "#{@contact.registrar.code}:JOHN-001".upcase
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<check>
<contact:check xmlns:contact="https://epp.tld.ee/schema/contact-ee-1.1.xsd">
<contact:id>BESTNAMES:JOHN-001</contact:id>
</contact:check>
</check>
</command>
</epp>
XML
post epp_check_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
response_xml = Nokogiri::XML(response.body)
assert_epp_response :completed_successfully
assert_equal "#{@contact.registrar.code}:JOHN-001".upcase, response_xml.at_xpath('//contact:id', contact: xml_schema).text
assert_equal 'in use', response_xml.at_xpath('//contact:reason', contact: xml_schema).text
end
def test_check_contact_without_prefix
@contact.update_columns(code: "#{@contact.registrar.code}:JOHN-001".upcase)
assert @contact.code, "#{@contact.registrar.code}:JOHN-001".upcase
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<check>
<contact:check xmlns:contact="https://epp.tld.ee/schema/contact-ee-1.1.xsd">
<contact:id>JOHN-001</contact:id>
</contact:check>
</check>
</command>
</epp>
XML
post epp_check_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
response_xml = Nokogiri::XML(response.body)
assert_epp_response :completed_successfully
assert_equal "#{@contact.registrar.code}:JOHN-001".upcase, response_xml.at_xpath('//contact:id', contact: xml_schema).text
assert_equal 'in use', response_xml.at_xpath('//contact:reason', contact: xml_schema).text
end
private
def xml_schema
'https://epp.tld.ee/schema/contact-ee-1.1.xsd'
end
end
end

View file

@ -44,6 +44,58 @@ class EppContactInfoBaseTest < EppTestCase
contact: xml_schema).text
end
def test_get_info_about_contact_with_prefix
@contact.update_columns(code: 'TEST:JOHN-001')
assert @contact.code, 'TEST:JOHN-001'
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<info>
<contact:info xmlns:contact="https://epp.tld.ee/schema/contact-ee-1.1.xsd">
<contact:id>TEST:JOHN-001</contact:id>
</contact:info>
</info>
</command>
</epp>
XML
post epp_info_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
response_xml = Nokogiri::XML(response.body)
assert_epp_response :completed_successfully
assert_equal 'TEST:JOHN-001', response_xml.at_xpath('//contact:id', contact: xml_schema).text
assert_equal '+555.555', response_xml.at_xpath('//contact:voice', contact: xml_schema).text
end
def test_get_info_about_contact_without_prefix
@contact.update_columns(code: "#{@contact.registrar.code}:JOHN-001".upcase)
assert @contact.code, "#{@contact.registrar.code}:JOHN-001".upcase
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<info>
<contact:info xmlns:contact="https://epp.tld.ee/schema/contact-ee-1.1.xsd">
<contact:id>JOHN-001</contact:id>
</contact:info>
</info>
</command>
</epp>
XML
post epp_info_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
response_xml = Nokogiri::XML(response.body)
assert_epp_response :completed_successfully
assert_equal "#{@contact.registrar.code}:JOHN-001".upcase, response_xml.at_xpath('//contact:id', contact: xml_schema).text
assert_equal '+555.555', response_xml.at_xpath('//contact:voice', contact: xml_schema).text
end
def test_hides_password_and_name_when_current_registrar_is_not_sponsoring
non_sponsoring_registrar = registrars(:goodnames)
@contact.update!(registrar: non_sponsoring_registrar)

View file

@ -2,6 +2,51 @@ require 'test_helper'
class EppDomainCreateBaseTest < EppTestCase
def test_illegal_chars_in_dns_key
name = "new.#{dns_zones(:one).origin}"
contact = contacts(:john)
registrant = contact.becomes(Registrant)
pub_key = "AwEAAddt2AkLf\n
\n
YGKgiEZB5SmIF8E\n
vrjxNMH6HtxW\rEA4RJ9Ao6LCWheg8"
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<create>
<domain:create xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>#{name}</domain:name>
<domain:registrant>#{registrant.code}</domain:registrant>
</domain:create>
</create>
<extension>
<secDNS:create xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
<secDNS:keyData>
<secDNS:flags>257</secDNS:flags>
<secDNS:protocol>3</secDNS:protocol>
<secDNS:alg>8</secDNS:alg>
<secDNS:pubKey>#{pub_key}</secDNS:pubKey>
</secDNS:keyData>
</secDNS:create>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{'test' * 2000}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
assert_no_difference 'Domain.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
assert_epp_response :parameter_value_syntax_error
end
def test_not_registers_domain_without_legaldoc
now = Time.zone.parse('2010-07-05')
travel_to now
@ -31,6 +76,230 @@ class EppDomainCreateBaseTest < EppTestCase
assert_epp_response :required_parameter_missing
end
def test_create_domain_with_unique_contact
now = Time.zone.parse('2010-07-05')
travel_to now
name = "new.#{dns_zones(:one).origin}"
contact = contacts(:john)
registrant = contact.becomes(Registrant)
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<create>
<domain:create xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>#{name}</domain:name>
<domain:registrant>#{registrant.code}</domain:registrant>
<domain:contact type="admin">#{contacts(:jane).code}</domain:contact>
<domain:contact type="tech">#{contacts(:william).code}</domain:contact>
</domain:create>
</create>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{'test' * 2000}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
assert_difference 'Domain.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
assert_epp_response :completed_successfully
end
def test_create_domain_with_array_of_not_unique_admins_and_techs
now = Time.zone.parse('2010-07-05')
travel_to now
name = "new.#{dns_zones(:one).origin}"
contact = contacts(:john)
registrant = contact.becomes(Registrant)
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<create>
<domain:create xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>#{name}</domain:name>
<domain:registrant>#{registrant.code}</domain:registrant>
<domain:contact type="admin">#{contact.code}</domain:contact>
<domain:contact type="admin">#{contact.code}</domain:contact>
<domain:contact type="tech">#{contact.code}</domain:contact>
<domain:contact type="tech">#{contact.code}</domain:contact>
</domain:create>
</create>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{'test' * 2000}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
assert_no_difference 'Domain.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
assert_epp_response :parameter_value_policy_error
end
def test_create_domain_with_array_of_not_unique_admins
now = Time.zone.parse('2010-07-05')
travel_to now
name = "new.#{dns_zones(:one).origin}"
contact = contacts(:john)
registrant = contact.becomes(Registrant)
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<create>
<domain:create xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>#{name}</domain:name>
<domain:registrant>#{registrant.code}</domain:registrant>
<domain:contact type="admin">#{contact.code}</domain:contact>
<domain:contact type="admin">#{contact.code}</domain:contact>
<domain:contact type="tech">#{contact.code}</domain:contact>
</domain:create>
</create>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{'test' * 2000}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
assert_no_difference 'Domain.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
assert_epp_response :parameter_value_policy_error
end
def test_create_domain_with_array_of_not_unique_techs
now = Time.zone.parse('2010-07-05')
travel_to now
name = "new.#{dns_zones(:one).origin}"
contact = contacts(:john)
registrant = contact.becomes(Registrant)
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<create>
<domain:create xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>#{name}</domain:name>
<domain:registrant>#{registrant.code}</domain:registrant>
<domain:contact type="admin">#{contact.code}</domain:contact>
<domain:contact type="tech">#{contact.code}</domain:contact>
<domain:contact type="tech">#{contact.code}</domain:contact>
</domain:create>
</create>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{'test' * 2000}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
assert_no_difference 'Domain.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
assert_epp_response :parameter_value_policy_error
end
def test_create_domain_with_array_of_not_unique_admin_but_tech_another_one
now = Time.zone.parse('2010-07-05')
travel_to now
name = "new.#{dns_zones(:one).origin}"
contact = contacts(:john)
registrant = contact.becomes(Registrant)
contact_two = contacts(:william)
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<create>
<domain:create xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>#{name}</domain:name>
<domain:registrant>#{registrant.code}</domain:registrant>
<domain:contact type="admin">#{contact.code}</domain:contact>
<domain:contact type="admin">#{contact.code}</domain:contact>
<domain:contact type="tech">#{contact_two.code}</domain:contact>
</domain:create>
</create>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{'test' * 2000}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
assert_no_difference 'Domain.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
assert_epp_response :parameter_value_policy_error
end
def test_create_domain_with_array_of_not_unique_techs_but_admin_another_one
now = Time.zone.parse('2010-07-05')
travel_to now
name = "new.#{dns_zones(:one).origin}"
contact = contacts(:john)
registrant = contact.becomes(Registrant)
contact_two = contacts(:william)
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<create>
<domain:create xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>#{name}</domain:name>
<domain:registrant>#{registrant.code}</domain:registrant>
<domain:contact type="admin">#{contact_two.code}</domain:contact>
<domain:contact type="tech">#{contact.code}</domain:contact>
<domain:contact type="tech">#{contact.code}</domain:contact>
</domain:create>
</create>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{'test' * 2000}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
assert_no_difference 'Domain.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
assert_epp_response :parameter_value_policy_error
end
def test_registers_new_domain_with_required_attributes
now = Time.zone.parse('2010-07-05')
travel_to now

View file

@ -3,6 +3,7 @@ require 'test_helper'
class EppDomainTransferRequestTest < EppTestCase
def setup
@domain = domains(:shop)
@contact = contacts(:jane)
@new_registrar = registrars(:goodnames)
@original_transfer_wait_time = Setting.transfer_wait_time
Setting.transfer_wait_time = 0
@ -12,6 +13,95 @@ class EppDomainTransferRequestTest < EppTestCase
Setting.transfer_wait_time = @original_transfer_wait_time
end
def test_transfer_domain_with_contacts_if_registrant_and_tech_are_shared
@domain.tech_domain_contacts[0].update!(contact_id: @domain.registrant.id)
@domain.tech_domain_contacts[1].delete
@domain.reload
post epp_transfer_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_goodnames' }
assert_epp_response :completed_successfully
@domain.reload
tech = Contact.find_by(id: @domain.tech_domain_contacts[0].contact_id)
assert_equal @domain.contacts.where(original_id: @domain.registrant.original_id).count, 1
assert_equal tech.registrar_id, @domain.registrar.id
end
def test_transfer_domain_with_contacts_if_registrant_and_admin_are_shared
@domain.admin_domain_contacts[0].update!(contact_id: @domain.registrant.id)
@domain.tech_domain_contacts[0].update!(contact_id: @contact.id)
@domain.tech_domain_contacts[1].delete
@domain.reload
post epp_transfer_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_goodnames' }
assert_epp_response :completed_successfully
@domain.reload
admin = Contact.find_by(id: @domain.admin_domain_contacts[0].contact_id)
assert_equal @domain.contacts.where(original_id: @domain.registrant.original_id).count, 1
assert_equal admin.registrar_id, @domain.registrar.id
end
def test_transfer_domain_with_contacts_if_admin_and_tech_are_shared
@domain.admin_domain_contacts[0].update!(contact_id: @contact.id)
@domain.tech_domain_contacts[0].update!(contact_id: @contact.id)
@domain.tech_domain_contacts[1].delete
@domain.reload
post epp_transfer_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_goodnames' }
assert_epp_response :completed_successfully
@domain.reload
admin = Contact.find_by(id: @domain.admin_domain_contacts[0].contact_id)
tech = Contact.find_by(id: @domain.tech_domain_contacts[0].contact_id)
result_hash = @domain.contacts.pluck(:original_id).group_by(&:itself).transform_values(&:count)
assert result_hash[admin.original_id], 2
assert_equal admin.registrar_id, @domain.registrar.id
assert_equal tech.registrar_id, @domain.registrar.id
end
def test_transfer_domain_with_contacts_if_admin_and_tech_and_registrant_are_shared
@domain.tech_domain_contacts[0].update!(contact_id: @domain.registrant.id)
@domain.admin_domain_contacts[0].update!(contact_id: @domain.registrant.id)
@domain.tech_domain_contacts[1].delete
@domain.reload
post epp_transfer_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_goodnames' }
assert_epp_response :completed_successfully
@domain.reload
admin = Contact.find_by(id: @domain.admin_domain_contacts[0].contact_id)
tech = Contact.find_by(id: @domain.tech_domain_contacts[0].contact_id)
assert_equal @domain.contacts.where(original_id: @domain.registrant.original_id).count, 2
result_hash = @domain.contacts.pluck(:original_id).group_by(&:itself).transform_values(&:count)
assert result_hash[@domain.registrant.original_id], 2
assert_equal admin.registrar_id, @domain.registrar.id
assert_equal tech.registrar_id, @domain.registrar.id
end
def test_transfers_domain_at_once
post epp_transfer_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_goodnames' }