Releases: mocktools/ruby-dns-mock
v1.2.0: Feature/Ability to specify MX record priority
Added ability to specify custom priority of MX record if it needed. Now it impossible to define null or backup MX records. Please note, if you haven't specified a priority of MX record, it will be assigned automatically. MX records builder is assigning priority with step 10 from first item of defined MX records array.
require 'dns_mock'
records = {
'example.com' => {
mx: %w[.:0 mx1.domain.com:10 mx2.domain.com:10 mx3.domain.com]
}
}
DnsMock.start_server(records: records, port: 5300)
dig @localhost -p 5300 MX example.com
; <<>> DiG 9.10.6 <<>> @localhost -p 5300 MX example.com
;; ANSWER SECTION:
example.com. 1 IN MX 0 .
example.com. 1 IN MX 10 mx1.domain.com.
example.com. 1 IN MX 10 mx2.domain.com.
example.com. 1 IN MX 40 mx3.domain.com.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#5300(127.0.0.1)
;; WHEN: Wed Feb 03 20:19:51 EET 2021
;; MSG SIZE rcvd: 102
- Updated
DnsMock::Record::Builder::Mx
- Updated readme, changelog
- Updated gem version to
1.2.0
v1.1.0: Feature/RSpec integration
Added DnsMock helper which can simplify integration with RSpec:
# spec/support/config/dns_mock.rb
require 'dns_mock/test_framework/rspec'
RSpec.configure do |config|
config.include DnsMock::TestFramework::RSpec::Helper
end
# your awesome first_a_record_spec.rb
RSpec.describe FirstARecord do
subject(:service) do
described_class.call(
hostname,
dns_gateway_host: 'localhost',
dns_gateway_port: dns_mock_server.port
)
end
let(:hostname) { 'example.com' }
let(:first_a_record) { '1.2.3.4' }
let(:records) { { hostname => { a: [first_a_record] } } }
before { dns_mock_server.assign_mocks(records) }
it { is_expected.to eq(first_a_record) }
end
- Added
DnsMock::TestFramework::RSpec::Interface
, tests - Added
DnsMock::TestFramework::RSpec::Helper
, tests - Added RSpec
DnsMock
config - Updated readme, changelog
- Updated gem version to
1.1.0
v1.0.0: Feature/Configurable record not found behaviour
Added configurable strategy for record not found case. By default it won't raise an exception when DNS record not found in mocked records dictionary:
DnsMock.start_server(port: 5300)
dig @localhost -p 5300 A example.com
; <<>> DiG 9.10.6 <<>> @localhost -p 5300 A example.com
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38632
;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#5300(127.0.0.1)
;; WHEN: Fri Jan 29 08:21:30 EET 2021
;; MSG SIZE rcvd: 40
If you want raise an exception when record not found, just start DnsMock
with exception_if_not_found: true
option:
DnsMock.start_server(exception_if_not_found: true)
- Updated
DnsMock.start_server
- Updated
DnsMock::Server
- Updated
DnsMock::Response::Message
- Updated
DnsMock::Response::Answer
- Updated readme, changelog
- Updated gem version to
1.0.0
v0.2.1: Bugfix/RDNS lookup representation
Fixed RDNS lookup representatin for IP address in PTR record feature.
- Updated
DnsMock::Server::RecordsDictionaryBuilder
- Updated gem version to
0.2.1
v0.2.0: Feature/PTR record support
Added ability to mock PTR records. Please note, you can define host address without RDNS lookup prefix (.in-addr.arpa
). DnsMock
will do it for you.
records = {
'1.1.1.1' => {
ptr: %w[domain_1.com domain_2.com]
}
}
DnsMock.start_server(records: records)
dig @localhost -p 5300 -x 1.1.1.1
; <<>> DiG 9.10.6 <<>> @localhost -p 5300 -x 1.1.1.1
; (2 servers found)
;; ANSWER SECTION:
1.1.1.1.in-addr.arpa. 1 IN PTR domain_1.com.
1.1.1.1.in-addr.arpa. 1 IN PTR domain_2.com.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#5300(127.0.0.1)
;; WHEN: Mon Jan 25 19:58:39 EET 2021
;; MSG SIZE rcvd: 98
- Added PTR record support
- Updated gem version to
0.2.0
v0.1.0: First release
Ruby DnsMock
first release 🚀 Thanks @le0pard for idea & support.