Add nameservers REST API

#661
This commit is contained in:
Artur Beljajev 2018-02-01 01:35:32 +02:00
parent 3ef38768a5
commit a5eaae562a
4 changed files with 62 additions and 2 deletions

View file

@ -58,5 +58,6 @@ module Repp
mount Repp::ContactV1 mount Repp::ContactV1
mount Repp::AccountV1 mount Repp::AccountV1
mount Repp::DomainTransfersV1 mount Repp::DomainTransfersV1
mount Repp::NameserversV1
end end
end end

View file

@ -0,0 +1,30 @@
module Repp
class NameserversV1 < Grape::API
version 'v1', using: :path
resource :nameservers do
put '/' do
params do
requires :data, type: Hash do
requires :type, type: String, allow_blank: false
requires :id, type: String, allow_blank: false
requires :attributes, type: Hash do
requires :hostname, type: String, allow_blank: false
end
end
end
current_user.registrar.nameservers.where(hostname: params[:data][:id]).each do |nameserver|
nameserver.hostname = params[:data][:attributes][:hostname]
nameserver.ipv4 = params[:data][:attributes][:ipv4]
nameserver.ipv6 = params[:data][:attributes][:ipv6]
nameserver.save!
end
status 204
body false
@response = {}
end
end
end
end

View file

@ -3,7 +3,7 @@ ns1:
ipv4: ipv4:
- 192.0.2.1 - 192.0.2.1
ipv6: ipv6:
- 2001:DB8::1 - 2001:db8::1
domain: shop domain: shop
ns2: ns2:
@ -11,5 +11,5 @@ ns2:
ipv4: ipv4:
- 192.0.2.2 - 192.0.2.2
ipv6: ipv6:
- 2001:DB8::2 - 2001:db8::2
domain: shop domain: shop

View file

@ -0,0 +1,29 @@
require 'test_helper'
class APIPutNameserversTest < ActionDispatch::IntegrationTest
def test_changes_nameservers_of_all_domains_of_current_registrar
ns2 = domains(:shop).nameservers.find_by(hostname: 'ns2.bestnames.test')
request_params = { format: :json, data: { type: 'nameservers', id: 'ns2.bestnames.test',
attributes: { hostname: 'ns3.bestnames.test',
ipv4: ['192.0.2.3'],
ipv6: ['2001:DB8::3'] } } }
put '/repp/v1/nameservers', request_params, { 'HTTP_AUTHORIZATION' => http_auth_key }
ns2.reload
assert_equal 'ns3.bestnames.test', ns2.hostname
assert_equal ['192.0.2.3'], ns2.ipv4
assert_equal ['2001:DB8::3'], ns2.ipv6
assert_response 204
assert_empty response.body
end
def test_unauthenticated
put '/repp/v1/nameservers'
assert_response 401
end
private
def http_auth_key
ActionController::HttpAuthentication::Basic.encode_credentials('test_bestnames', 'testtest')
end
end