63 lines
1.9 KiB
Ruby
63 lines
1.9 KiB
Ruby
# -*- coding:binary -*-
|
|
require 'spec_helper'
|
|
|
|
require 'net/dns'
|
|
|
|
RSpec.describe Net::DNS::RR::Classes do
|
|
|
|
subject do
|
|
described_class.new
|
|
end
|
|
|
|
describe '#initialize' do
|
|
subject(:rr_class) do
|
|
described_class.allocate
|
|
end
|
|
|
|
it 'raises when initialized with no args' do
|
|
expect { rr_class.send(:initialize) }.to raise_error(ArgumentError)
|
|
end
|
|
|
|
it 'respects default RR class when initialized with a nil RR class' do
|
|
rr_class.send(:initialize, nil)
|
|
expect(rr_class.to_i).to eql(1)
|
|
expect(rr_class.to_s).to eql('IN')
|
|
end
|
|
|
|
# TODO: figure out why this doesn't work
|
|
skip 'respects configured default RR class' do
|
|
rr_class.send(:default=, 'NONE')
|
|
expect(rr_class.to_i).to eql(254)
|
|
expect(rr_class.to_s).to eql('NONE')
|
|
end
|
|
|
|
it 'initializes with a valid RR class Fixnum argument' do
|
|
rr_class.send(:initialize, 4)
|
|
expect(rr_class.to_i).to eql(4)
|
|
expect(rr_class.to_s).to eql('HS')
|
|
end
|
|
|
|
it 'raises when the supplied RR class Fixnum is invalid' do
|
|
expect { rr_class.send(:initialize, 123456) }.to raise_error(ClassArgumentError)
|
|
expect { rr_class.send(:initialize, -1) }.to raise_error(ClassArgumentError)
|
|
end
|
|
|
|
it 'initializes with a valid RR class String argument' do
|
|
rr_class.send(:initialize, 'CH')
|
|
expect(rr_class.to_i).to eql(3)
|
|
expect(rr_class.to_s).to eql('CH')
|
|
rr_class.send(:initialize, 'CLASS9')
|
|
expect(rr_class.to_i).to eql(9)
|
|
expect(rr_class.to_s).to eql('CLASS9')
|
|
rr_class.send(:initialize, 'CLASS1')
|
|
expect(rr_class.to_i).to eql(1)
|
|
expect(rr_class.to_s).to eql('IN')
|
|
end
|
|
|
|
it 'raises when the supplied RR class String is invalid' do
|
|
expect { rr_class.send(:initialize, 'cats') }.to raise_error(ClassArgumentError)
|
|
expect { rr_class.send(:initialize, 'CLASS123456') }.to raise_error(ClassArgumentError)
|
|
end
|
|
end
|
|
end
|