mirror of
https://github.com/internetee/registry.git
synced 2025-06-05 12:17:30 +02:00
184 lines
5.7 KiB
Ruby
184 lines
5.7 KiB
Ruby
require 'test_helper'
|
|
|
|
class AuctionDouble
|
|
def domain_registrable?(_code)
|
|
true
|
|
end
|
|
end
|
|
|
|
class AuctionDoubleTest < ActiveSupport::TestCase
|
|
def test_implements_the_domain_registrable_interface
|
|
assert_respond_to AuctionDouble.new, :domain_registrable?
|
|
end
|
|
end
|
|
|
|
class DNS::DomainNameTest < ActiveSupport::TestCase
|
|
fixtures 'whois/records'
|
|
|
|
def test_available_when_not_at_auction
|
|
domain_name = DNS::DomainName.new('auction.test')
|
|
auctions(:one).update!(domain: 'auction.test', status: Auction.statuses[:domain_registered])
|
|
|
|
assert domain_name.available?
|
|
assert_not domain_name.unavailable?
|
|
end
|
|
|
|
def test_available_with_correct_code
|
|
domain_name = DNS::DomainName.new('auction.test')
|
|
|
|
Auction.stub(:pending, AuctionDouble.new) do
|
|
assert domain_name.available_with_code?('some')
|
|
end
|
|
end
|
|
|
|
def test_unavailable_when_registered
|
|
domain_name = DNS::DomainName.new('shop.test')
|
|
assert_equal 'shop.test', domains(:shop).name
|
|
|
|
assert domain_name.unavailable?
|
|
assert_equal :registered, domain_name.unavailability_reason
|
|
end
|
|
|
|
def test_unavailable_when_blocked
|
|
domain_name = DNS::DomainName.new('blocked.test')
|
|
assert_equal 'blocked.test', blocked_domains(:one).name
|
|
|
|
assert domain_name.unavailable?
|
|
assert_equal :blocked, domain_name.unavailability_reason
|
|
end
|
|
|
|
def test_unavailable_when_zone_with_the_same_origin_exists
|
|
domain_name = DNS::DomainName.new('test')
|
|
assert_equal 'test', dns_zones(:one).origin
|
|
|
|
assert domain_name.unavailable?
|
|
assert_equal :zone_with_same_origin, domain_name.unavailability_reason
|
|
end
|
|
|
|
def test_unavailable_when_at_auction
|
|
domain_name = DNS::DomainName.new('auction.test')
|
|
auctions(:one).update!(domain: 'auction.test', status: Auction.statuses[:started])
|
|
|
|
assert domain_name.unavailable?
|
|
assert_not domain_name.available?
|
|
assert_equal :at_auction, domain_name.unavailability_reason
|
|
end
|
|
|
|
def test_unavailable_when_awaiting_payment
|
|
domain_name = DNS::DomainName.new('auction.test')
|
|
auctions(:one).update!(domain: 'auction.test', status: Auction.statuses[:awaiting_payment])
|
|
|
|
assert domain_name.unavailable?
|
|
assert_not domain_name.available?
|
|
assert_equal :awaiting_payment, domain_name.unavailability_reason
|
|
end
|
|
|
|
def test_sells_at_auction
|
|
domain_name = DNS::DomainName.new('shop.test')
|
|
assert_not domain_name.at_auction?
|
|
|
|
domain_name.sell_at_auction
|
|
|
|
assert domain_name.at_auction?
|
|
end
|
|
|
|
def test_selling_at_auction_updates_whois
|
|
travel_to Time.zone.parse('2010-07-05 10:00')
|
|
@whois_record = whois_records(:one)
|
|
@whois_record.update!(name: 'new-auction.test', updated_at: '2010-07-04')
|
|
domain_name = DNS::DomainName.new('new-auction.test')
|
|
|
|
domain_name.sell_at_auction
|
|
@whois_record.reload
|
|
|
|
assert_equal Time.zone.parse('2010-07-05 10:00'), @whois_record.updated_at
|
|
end
|
|
|
|
def test_selling_at_auction_creates_whois_record
|
|
travel_to Time.zone.parse('2010-07-05 10:00')
|
|
domain_name = DNS::DomainName.new('new-auction.test')
|
|
|
|
domain_name.sell_at_auction
|
|
|
|
whois_record = Whois::Record.find_by(name: 'new-auction.test')
|
|
assert whois_record
|
|
|
|
assert_equal Time.zone.parse('2010-07-05 10:00'), whois_record.updated_at
|
|
assert_equal Time.zone.parse('2010-07-05 10:00'), whois_record.created_at
|
|
assert_equal ['AtAuction'], whois_record.json['status']
|
|
end
|
|
|
|
def test_at_auction
|
|
domain_name = DNS::DomainName.new('auction.test')
|
|
auctions(:one).update!(domain: 'auction.test', status: Auction.statuses[:started])
|
|
assert domain_name.at_auction?
|
|
end
|
|
|
|
def test_awaiting_payment
|
|
domain_name = DNS::DomainName.new('auction.test')
|
|
auctions(:one).update!(domain: 'auction.test', status: Auction.statuses[:awaiting_payment])
|
|
assert domain_name.awaiting_payment?
|
|
end
|
|
|
|
def test_pending_registration
|
|
domain_name = DNS::DomainName.new('auction.test')
|
|
auctions(:one).update!(domain: 'auction.test', status: Auction.statuses[:payment_received])
|
|
assert domain_name.pending_registration?
|
|
end
|
|
|
|
def test_to_s
|
|
domain_name = DNS::DomainName.new('shop.test')
|
|
assert_equal 'shop.test', domain_name.to_s
|
|
end
|
|
|
|
def test_blocked
|
|
assert_equal 'blocked.test', blocked_domains(:one).name
|
|
assert_equal 'blockedäöüõ.test', blocked_domains(:idn).name
|
|
assert DNS::DomainName.new('blocked.test').blocked?
|
|
assert DNS::DomainName.new('blockedäöüõ.test').blocked?
|
|
assert DNS::DomainName.new(SimpleIDN.to_ascii('blockedäöüõ.test')).blocked?
|
|
assert_not DNS::DomainName.new('nonblocked .test').blocked?
|
|
end
|
|
|
|
def test_reserved
|
|
assert_equal 'reserved.test', reserved_domains(:one).name
|
|
assert DNS::DomainName.new('reserved.test').reserved?
|
|
assert_not DNS::DomainName.new('unreserved.test').reserved?
|
|
end
|
|
|
|
def test_registered_when_domain_exists
|
|
assert Domain.exists?(name: 'shop.test')
|
|
|
|
domain_name = DNS::DomainName.new('shop.test')
|
|
|
|
assert domain_name.registered?
|
|
refute domain_name.not_registered?
|
|
end
|
|
|
|
def test_not_registered_when_domain_does_not_exist
|
|
assert_not Domain.exists?(name: 'not-registered.test')
|
|
|
|
domain_name = DNS::DomainName.new('not-registered.test')
|
|
|
|
assert domain_name.not_registered?
|
|
assert_not domain_name.registered?
|
|
end
|
|
|
|
def test_auctionable_when_not_blocked_or_reserved
|
|
domain_name = DNS::DomainName.new('shop.test')
|
|
assert_not domain_name.blocked?
|
|
assert_not domain_name.reserved?
|
|
|
|
assert domain_name.auctionable?
|
|
end
|
|
|
|
def test_not_auctionable_when_blocked
|
|
assert_equal 'blocked.test', blocked_domains(:one).name
|
|
assert_not DNS::DomainName.new('blocked.test').auctionable?
|
|
end
|
|
|
|
def test_not_auctionable_when_reserved
|
|
assert_equal 'reserved.test', reserved_domains(:one).name
|
|
assert_not DNS::DomainName.new('reserved.test').auctionable?
|
|
end
|
|
end
|