mirror of
https://github.com/internetee/registry.git
synced 2025-05-18 02:09:39 +02:00
parent
490528ca18
commit
e60380c60a
9 changed files with 103 additions and 30 deletions
|
@ -8,10 +8,45 @@ class Registrar
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
params[:request] = true # EPP domain:transfer "op" attribute
|
if params[:batch_file].present?
|
||||||
domain = Depp::Domain.new(current_user: depp_current_user)
|
csv = CSV.read(params[:batch_file].path, headers: true)
|
||||||
@data = domain.transfer(params)
|
domain_transfers = []
|
||||||
render :new unless response_ok?
|
|
||||||
|
csv.each do |row|
|
||||||
|
domain_name = row['Domain']
|
||||||
|
transfer_code = row['Transfer code']
|
||||||
|
domain_transfers << { 'domainName' => domain_name, 'transferCode' => transfer_code }
|
||||||
|
end
|
||||||
|
|
||||||
|
client_cert = File.read(ENV['cert_path'])
|
||||||
|
client_key = File.read(ENV['key_path'])
|
||||||
|
|
||||||
|
uri = URI.parse("#{ENV['repp_url']}domain_transfers")
|
||||||
|
request = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
|
||||||
|
request.body = { data: { domainTransfers: domain_transfers } }.to_json
|
||||||
|
request.basic_auth(current_user.username, current_user.password)
|
||||||
|
|
||||||
|
response = Net::HTTP.start(uri.hostname, uri.port,
|
||||||
|
use_ssl: (uri.scheme == 'https'),
|
||||||
|
verify_mode: OpenSSL::SSL::VERIFY_NONE,
|
||||||
|
cert: OpenSSL::X509::Certificate.new(client_cert),
|
||||||
|
key: OpenSSL::PKey::RSA.new(client_key)) do |http|
|
||||||
|
http.request(request)
|
||||||
|
end
|
||||||
|
|
||||||
|
if response.code == '204'
|
||||||
|
flash[:notice] = t '.transferred'
|
||||||
|
redirect_to registrar_domains_url
|
||||||
|
else
|
||||||
|
@api_errors = JSON.parse(response.body, symbolize_names: true)[:errors]
|
||||||
|
render :new
|
||||||
|
end
|
||||||
|
else
|
||||||
|
params[:request] = true # EPP domain:transfer "op" attribute
|
||||||
|
domain = Depp::Domain.new(current_user: depp_current_user)
|
||||||
|
@data = domain.transfer(params)
|
||||||
|
render :new unless response_ok?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<% if @api_errors %>
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
<ul>
|
||||||
|
<% @api_errors.each do |error| %>
|
||||||
|
<li><%= error[:title] %></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
|
@ -1,10 +1,11 @@
|
||||||
<%= form_tag registrar_domain_transfers_path, multipart: true, class: 'form-horizontal' do %>
|
<%= form_tag registrar_domain_transfers_path, multipart: true, class: 'form-horizontal' do %>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-3 control-label">
|
<div class="col-md-3 control-label">
|
||||||
<%= label_tag 'file' %>
|
<%= label_tag :batch_file %>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-7">
|
<div class="col-md-7">
|
||||||
<%= file_field_tag 'file' %>
|
<%= file_field_tag :batch_file %>
|
||||||
|
<span class="help-block"><%= t '.batch_file_help' %></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
<h1><%= t '.header' %></h1>
|
<h1><%= t '.header' %></h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<%= render 'registrar/domain_transfers/form/api_errors' %>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
|
|
|
@ -8,10 +8,12 @@ en:
|
||||||
|
|
||||||
create:
|
create:
|
||||||
header: Domain transfer
|
header: Domain transfer
|
||||||
|
transferred: Domains have been successfully transferred
|
||||||
|
|
||||||
form:
|
form:
|
||||||
single:
|
single:
|
||||||
transfer_btn: Transfer
|
transfer_btn: Transfer
|
||||||
|
|
||||||
batch:
|
batch:
|
||||||
transfer_btn: Transfer
|
batch_file_help: CSV file with domain list provided by another registrar
|
||||||
|
transfer_btn: Transfer batch
|
||||||
|
|
2
test/fixtures/files/valid_domains_for_transfer.csv
vendored
Normal file
2
test/fixtures/files/valid_domains_for_transfer.csv
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Domain,Transfer code,Registrant name,Registrant code,Date of expiry
|
||||||
|
shop.test,65078d5,whatever,whatever,2010-07-05
|
|
|
@ -1,6 +1,6 @@
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class Repp::DomainTransfersTest < ActionDispatch::IntegrationTest
|
class APIDomainTransfersTest < ActionDispatch::IntegrationTest
|
||||||
def test_transfers_domain
|
def test_transfers_domain
|
||||||
request_params = { format: :json,
|
request_params = { format: :json,
|
||||||
data: { domainTransfers: [{ domainName: 'shop.test', transferCode: '65078d5' }] } }
|
data: { domainTransfers: [{ domainName: 'shop.test', transferCode: '65078d5' }] } }
|
43
test/integration/registrar/domain_transfers_test.rb
Normal file
43
test/integration/registrar/domain_transfers_test.rb
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class RegistrarDomainTransfersTest < ActionDispatch::IntegrationTest
|
||||||
|
def setup
|
||||||
|
WebMock.reset!
|
||||||
|
login_as users(:api_goodnames)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_batch_transfer_succeeds
|
||||||
|
body = { data: { domainTransfers: [{ domainName: 'shop.test', transferCode: '65078d5' }] } }
|
||||||
|
headers = { 'Content-type' => 'application/json' }
|
||||||
|
request_stub = stub_request(:post, /domain_transfers/).with(body: body,
|
||||||
|
headers: headers,
|
||||||
|
basic_auth: ['test_goodnames', 'testtest'])
|
||||||
|
.to_return(status: 204)
|
||||||
|
|
||||||
|
visit registrar_domains_url
|
||||||
|
click_link 'Transfer'
|
||||||
|
|
||||||
|
click_on 'Batch'
|
||||||
|
attach_file 'Batch file', Rails.root.join('test', 'fixtures', 'files', 'valid_domains_for_transfer.csv').to_s
|
||||||
|
click_button 'Transfer batch'
|
||||||
|
|
||||||
|
assert_requested request_stub
|
||||||
|
assert_current_path registrar_domains_path
|
||||||
|
assert_text 'Domains have been successfully transferred'
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_batch_transfer_fails_gracefully
|
||||||
|
body = { errors: [{ title: 'epic fail' }] }.to_json
|
||||||
|
headers = { 'Content-type' => 'application/json' }
|
||||||
|
stub_request(:post, /domain_transfers/).to_return(status: 400, body: body, headers: headers)
|
||||||
|
|
||||||
|
visit registrar_domains_url
|
||||||
|
click_link 'Transfer'
|
||||||
|
|
||||||
|
click_on 'Batch'
|
||||||
|
attach_file 'Batch file', Rails.root.join('test', 'fixtures', 'files', 'valid_domains_for_transfer.csv').to_s
|
||||||
|
click_button 'Transfer batch'
|
||||||
|
|
||||||
|
assert_text 'epic fail'
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,11 +1,8 @@
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class RegistrarDomainsTest < ActionDispatch::IntegrationTest
|
class RegistrarDomainsTest < ActionDispatch::IntegrationTest
|
||||||
def setup
|
|
||||||
login_as users(:api_bestnames)
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_downloads_domain_list_as_csv
|
def test_downloads_domain_list_as_csv
|
||||||
|
login_as users(:api_bestnames)
|
||||||
travel_to Time.zone.parse('2010-07-05 10:30')
|
travel_to Time.zone.parse('2010-07-05 10:30')
|
||||||
|
|
||||||
expected_csv = <<-CSV.strip_heredoc
|
expected_csv = <<-CSV.strip_heredoc
|
||||||
|
@ -20,22 +17,4 @@ class RegistrarDomainsTest < ActionDispatch::IntegrationTest
|
||||||
assert_equal 'attachment; filename="Domains_2010-07-05_10.30.csv"', response_headers['Content-Disposition']
|
assert_equal 'attachment; filename="Domains_2010-07-05_10.30.csv"', response_headers['Content-Disposition']
|
||||||
assert_equal expected_csv, page.body
|
assert_equal expected_csv, page.body
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_transfers_domain
|
|
||||||
travel_to Time.zone.parse('2010-07-05 10:30:00')
|
|
||||||
|
|
||||||
visit registrar_domains_url
|
|
||||||
click_link 'Transfer'
|
|
||||||
fill_in 'Domain name', with: 'shop.test'
|
|
||||||
fill_in 'Transfer code', with: '65078d5'
|
|
||||||
click_button 'Transfer'
|
|
||||||
|
|
||||||
assert_text 'Transfer requested at: 2010-07-05 10:30:00'
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_prefills_domain_transfer_form
|
|
||||||
visit info_registrar_domains_url(domain_name: 'airport.test')
|
|
||||||
click_link 'Transfer'
|
|
||||||
assert_field 'domain_name', with: 'airport.test'
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue