Improve tests

#661
This commit is contained in:
Artur Beljajev 2018-02-27 08:18:34 +02:00
parent 03b6f1df91
commit 4960b4400f
5 changed files with 37 additions and 24 deletions

View file

@ -5,7 +5,8 @@ class Nameserver < ActiveRecord::Base
belongs_to :domain, required: true
# rubocop: disable Metrics/LineLength
validates :hostname, presence: true, format: { with: /\A(([a-zA-Z0-9]|[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9][a-zA-ZäöüõšžÄÖÜÕŠŽ0-9\-]*[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\z/ }
validates :hostname, presence: true#, format: { with: /\A(([a-zA-Z0-9]|[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9][a-zA-ZäöüõšžÄÖÜÕŠŽ0-9\-]*[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\z/ }
validates :hostname, format: { with: /\A(([a-zA-Z0-9]|[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9][a-zA-ZäöüõšžÄÖÜÕŠŽ0-9\-]*[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\z/ }, allow_blank: true
validate :val_ipv4
validate :val_ipv6
validate :require_ip, if: :glue_record_required?

View file

@ -1,4 +1,4 @@
ns1:
shop_ns1:
hostname: ns1.bestnames.test
ipv4:
- 192.0.2.1
@ -6,7 +6,7 @@ ns1:
- 2001:db8::1
domain: shop
ns2:
shop_ns2:
hostname: ns2.bestnames.test
ipv4:
- 192.0.2.2

View file

@ -1,24 +1,14 @@
require 'test_helper'
class APINameserversPutTest < ActionDispatch::IntegrationTest
def setup
@registrar = registrars(:bestnames)
end
def test_deletes_old_nameservers
previous_nameserver_ids = @registrar.nameservers.where(hostname: 'ns1.bestnames.test').ids
request_params = { format: :json, data: { type: 'nameserver', id: 'ns1.bestnames.test',
attributes: { hostname: 'ns55.bestnames.test' } } }
put '/repp/v1/registrar/nameservers', request_params, { 'HTTP_AUTHORIZATION' => http_auth_key }
refute @registrar.nameservers(true).where(id: previous_nameserver_ids).exists?
end
def test_creates_new_nameservers
def test_replaces_registrar_nameservers
old_nameserver_ids = [nameservers(:shop_ns1).id,
nameservers(:airport_ns1).id,
nameservers(:metro_ns1).id]
request_params = { format: :json, data: { type: 'nameserver', id: 'ns1.bestnames.test',
attributes: { hostname: 'ns55.bestnames.test' } } }
put '/repp/v1/registrar/nameservers', request_params, { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_equal 2, @registrar.nameservers.where(hostname: 'ns55.bestnames.test').size
assert_empty (old_nameserver_ids & registrars(:bestnames).nameservers(true).ids)
end
def test_saves_all_attributes
@ -33,14 +23,22 @@ class APINameserversPutTest < ActionDispatch::IntegrationTest
assert_equal ['2001:DB8::55'], new_nameserver.ipv6
end
def test_keeps_other_nameserver_intact
request_params = { format: :json, data: { type: 'nameserver', id: 'ns1.bestnames.test',
attributes: { hostname: 'ns55.bestnames.test' } } }
other_nameserver_hash = nameservers(:shop_ns2).attributes
put '/repp/v1/registrar/nameservers', request_params, { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_equal other_nameserver_hash, nameservers(:shop_ns2).reload.attributes
end
def test_keeps_other_registrar_nameservers_intact
request_params = { format: :json, data: { type: 'nameserver', id: 'ns1.bestnames.test',
attributes: { hostname: 'ns55.bestnames.test' } } }
other_registrar_nameserver_ids = registrars(:goodnames).nameservers.ids
assert other_registrar_nameserver_ids.any?
nameserver_hash = nameservers(:metro_ns1).attributes
put '/repp/v1/registrar/nameservers', request_params, { 'HTTP_AUTHORIZATION' => http_auth_key }
assert_equal other_registrar_nameserver_ids, registrars(:goodnames).nameservers(true).ids
assert_equal nameserver_hash, nameservers(:metro_ns1).reload.attributes
end
def test_returns_new_nameserver_record

View file

@ -2,7 +2,7 @@ require 'test_helper'
class NameserverGlueRecordTest < ActiveSupport::TestCase
def setup
@nameserver = nameservers(:ns1)
@nameserver = nameservers(:shop_ns1)
end
def test_invalid_without_ip_if_glue_record_is_required

View file

@ -2,7 +2,7 @@ require 'test_helper'
class NameserverTest < ActiveSupport::TestCase
def setup
@nameserver = nameservers(:ns1)
@nameserver = nameservers(:shop_ns1)
end
def test_valid
@ -19,8 +19,22 @@ class NameserverTest < ActiveSupport::TestCase
assert @nameserver.invalid?
end
def test_hostname_format_validation
@nameserver.hostname = 'foo_bar'
assert @nameserver.invalid?
@nameserver.hostname = 'foo.bar'
assert @nameserver.valid?
@nameserver.hostname = 'äöüõšž.ÄÖÜÕŠŽ.umlauts'
assert @nameserver.valid?
end
def test_hostnames
assert_equal %w[ns1.bestnames.test ns2.bestnames.test], Nameserver.hostnames
assert_equal %w[ns1.bestnames.test
ns2.bestnames.test
ns1.bestnames.test
ns1.bestnames.test], Nameserver.hostnames
end
def test_normalizes_hostname