mirror of
https://github.com/internetee/registry.git
synced 2025-06-07 21:25:39 +02:00
163 lines
5.9 KiB
Ruby
163 lines
5.9 KiB
Ruby
require 'test_helper'
|
|
require 'auth_token/auth_token_creator'
|
|
|
|
class RegistrantApiDomainsTest < ApplicationIntegrationTest
|
|
def setup
|
|
super
|
|
|
|
@domain = domains(:airport)
|
|
@registrant = @domain.registrant
|
|
@user = users(:registrant)
|
|
domains(:metro).tech_domain_contacts.update(contact_id: @registrant.id)
|
|
@auth_headers = { 'HTTP_AUTHORIZATION' => auth_token }
|
|
end
|
|
|
|
def test_get_domain_details_by_uuid
|
|
get '/api/v1/registrant/domains/5edda1a5-3548-41ee-8b65-6d60daf85a37', headers: @auth_headers
|
|
assert_equal(200, response.status)
|
|
|
|
domain = JSON.parse(response.body, symbolize_names: true)
|
|
|
|
assert_equal('hospital.test', domain[:name])
|
|
assert_equal('5edda1a5-3548-41ee-8b65-6d60daf85a37', domain[:id])
|
|
assert_equal({:name=>"John",
|
|
:id=>"eb2f2766-b44c-4e14-9f16-32ab1a7cb957",
|
|
:ident=>"1234", :ident_type=>"priv",
|
|
:ident_country_code=>"US",
|
|
:phone=>"+555.555",
|
|
:email=>"john@inbox.test",
|
|
:org=>false},
|
|
domain[:registrant])
|
|
assert_equal([{name: 'John',
|
|
id: 'eb2f2766-b44c-4e14-9f16-32ab1a7cb957',
|
|
email: 'john@inbox.test'}],
|
|
domain[:admin_contacts])
|
|
assert_equal([{name: 'John',
|
|
id: 'eb2f2766-b44c-4e14-9f16-32ab1a7cb957',
|
|
email: 'john@inbox.test'}],
|
|
domain[:tech_contacts])
|
|
assert_equal({ name: 'Good Names', website: nil }, domain[:registrar])
|
|
|
|
assert_equal([], domain[:nameservers])
|
|
assert_equal([], domain[:dnssec_keys])
|
|
assert(domain.has_key?(:dnssec_changed_at))
|
|
|
|
assert(domain.has_key?(:locked_by_registrant_at))
|
|
end
|
|
|
|
def test_get_non_existent_domain_details_by_uuid
|
|
get '/api/v1/registrant/domains/random-uuid', headers: @auth_headers
|
|
assert_equal(404, response.status)
|
|
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
assert_equal({ errors: [base: ['Domain not found']] }, response_json)
|
|
end
|
|
|
|
def test_root_returns_domain_list
|
|
get '/api/v1/registrant/domains', headers: @auth_headers
|
|
assert_equal(200, response.status)
|
|
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
array_of_domain_names = response_json[:domains].map { |x| x[:name] }
|
|
assert(array_of_domain_names.include?('hospital.test'))
|
|
|
|
array_of_domain_registrars = response_json[:domains].map { |x| x[:registrar] }
|
|
assert(array_of_domain_registrars.include?({name: 'Good Names', website: nil}))
|
|
end
|
|
|
|
def test_return_domain_list_with_registrants_and_admins
|
|
domains(:hospital).admin_domain_contacts.update(contact_id: contacts(:william).id)
|
|
domains(:hospital).update(registrant: contacts(:william).becomes(Registrant))
|
|
|
|
get '/api/v1/registrant/domains', headers: @auth_headers, params: { 'offset' => 0 }
|
|
assert_equal(200, response.status)
|
|
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
response_json[:domains].each do |x|
|
|
if x[:registrant][:org] == false
|
|
x[:tech_contacts].each do |s|
|
|
assert_not s[:name].include?(@registrant.name)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_return_domain_list_with_registrants_and_admins_tech
|
|
get '/api/v1/registrant/domains', headers: @auth_headers, params: { 'offset' => 0, 'tech' => true }
|
|
assert_equal(200, response.status)
|
|
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
response_json[:domains].each do |x|
|
|
if x[:name] == 'metro.test'
|
|
x[:tech_contacts].each do |s|
|
|
assert s[:name].include?(@registrant.name)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_domains_total_if_an_incomplete_list_is_returned
|
|
get '/api/v1/registrant/domains', headers: @auth_headers, params: { 'offset' => 0 }
|
|
assert_equal(200, response.status)
|
|
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
assert_equal response_json[:domains].length, response_json[:count]
|
|
assert_equal response_json[:total], 5
|
|
end
|
|
|
|
def test_root_accepts_limit_and_offset_parameters
|
|
get '/api/v1/registrant/domains', params: { 'limit' => 2, 'offset' => 0 },
|
|
headers: @auth_headers
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
|
|
assert_equal(200, response.status)
|
|
assert_equal(2, response_json[:domains].count)
|
|
|
|
get '/api/v1/registrant/domains', headers: @auth_headers
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
|
|
assert_equal(4, response_json[:domains].count)
|
|
end
|
|
|
|
def test_root_does_not_accept_limit_higher_than_200
|
|
get '/api/v1/registrant/domains', params: { 'limit' => 400, 'offset' => 0 },
|
|
headers: @auth_headers
|
|
|
|
assert_equal(400, response.status)
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
assert_equal({ errors: [{ limit: ['parameter is out of range'] }] }, response_json)
|
|
end
|
|
|
|
def test_root_does_not_accept_offset_lower_than_0
|
|
get '/api/v1/registrant/domains', params: { 'limit' => 200, 'offset' => "-10" },
|
|
headers: @auth_headers
|
|
|
|
assert_equal(400, response.status)
|
|
response_json = JSON.parse(response.body, symbolize_names: true)
|
|
assert_equal({ errors: [{ offset: ['parameter is out of range'] }] }, response_json)
|
|
end
|
|
|
|
def test_root_returns_401_without_authorization
|
|
get '/api/v1/registrant/domains'
|
|
assert_equal(401, response.status)
|
|
json_body = JSON.parse(response.body, symbolize_names: true)
|
|
|
|
assert_equal({ errors: [base: ['Not authorized']] }, json_body)
|
|
end
|
|
|
|
def test_details_returns_401_without_authorization
|
|
get '/api/v1/registrant/domains/5edda1a5-3548-41ee-8b65-6d60daf85a37'
|
|
assert_equal(401, response.status)
|
|
json_body = JSON.parse(response.body, symbolize_names: true)
|
|
|
|
assert_equal({ errors: [base: ['Not authorized']] }, json_body)
|
|
end
|
|
|
|
private
|
|
|
|
def auth_token
|
|
token_creator = AuthTokenCreator.create_with_defaults(@user)
|
|
hash = token_creator.token_in_hash
|
|
"Bearer #{hash[:access_token]}"
|
|
end
|
|
end
|