The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Updated gem development dependencies
- Updated gem version
- Updated gem development dependencies
- Updated
circleci
/rubocop
configs - Updated gem version
- Updated gem development dependencies
- Updated
rubocop
/codeclimate
configs - Updated gem version
- Updated gem runtime/development dependencies
- Updated gem version
- Updated gem runtime/development dependencies
- Updated gem version
- Updated gem development dependencies
- Updated gem version
- Added ability to interact with DNS message question/answer context. Thanks @mroach for feature suggestion and PR
- Updated gem documentation
- Updated gem version
- Added and tested Ruby 3.3.x support
- Updated gemspecs
- Updated gem version
- Updated gemspecs
- Updated gem version
- Updated gem documentation
- Added ability to mock SRV records. Thanks @Siphonay for feature suggestion
- Updated gem version
- Updated gem documentation
- Updated gemspec
- Updated gemspecs
- Updated gem version
- Updated license
- Updated gemspecs
- Updated gem version
- Added and tested Ruby 3.2.x support
- Added
changeloglint
- Updated
CircleCI
config - Updated
lefthook
/codeclimate
/simplecov
/pry
configs - Updated gem deploy flow (tagging new release on master merge commit)
- Updated gem version, license
- Added
cspell
linter - Added
markdownlint
linter - Added
shellcheck
linter - Added
yamllint
linter
- Fixed typos in project's codebase
- Fixed new project's linter issues
- Updated
CircleCI
config - Updated
lefthook
linters aggregator config - Updated releasing script, gemspecs
- Updated gem version
- Updated releasing script, gemspecs, linter configs
- Updated gem version
- Fixed releasing script (publisher git details)
- Added new bunch of project linters
- Added auto deploy to RubyGems
- Added auto creating release notes on GitHub
- Updated gemspecs
- Updated
codeclimate
/circleci
configs - Updated gem development dependencies
- Updated gem version
- Removed
overcommit
dependency
- Updated gemspecs
- Updated
codeclimate
/circleci
configs - Updated gem development dependencies
- Updated gem version
- Updated gemspecs
- Updated
rubocop
/codeclimate
/circleci
configs - Updated gem development dependencies
- Updated gem version
- Updated gemspecs
- Updated
codeclimate
/circleci
configs - Updated gem development dependencies
- Updated gem version
- Development environment guide
- Updated gemspecs
- Updated
codeclimate
/circleci
configs - Updated gem development dependencies
- Updated gem version
- Updated native Ruby test environment from 2.5 to 3.1
- Updated
codeclimate
/circleci
configs - Updated gem development dependencies
- Updated gem docs, version
- Added Ruby 3.1.x compatibility
- Updated
rubocop
/codeclimate
/circleci
configs - Updated gem development dependencies
- Updated gem docs, version
- Updated gem development dependencies
- Updated gem version
- Updated gem development dependencies
- Updated gem version
- Updated gem development dependencies
- Updated gem version
- Updated gem development dependencies
- Updated gem version
faker
toffaker
development dependency
- Added ability to use internationalized host names. All host names in UTF-8 will be represented as Punycode
- Added
simpleidn
as runtime dependency - Added
DnsMock::Representer::Punycode
, tests
records = {
'mañana.com' => {
mx: %w[másletras.mañana.com]
}
}
DnsMock.start_server(port: 5300, records: records)
dig @localhost -p 5300 MX xn--maana-pta.com
; <<>> DiG 9.10.6 <<>> @localhost -p 5300 MX xn--maana-pta.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4612
;; flags: rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xn--maana-pta.com. IN MX
;; ANSWER SECTION:
xn--maana-pta.com. 1 IN MX 10 xn--msletras-8ya.xn--maana-pta.com.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#5300(127.0.0.1)
;; WHEN: Tue Jul 13 15:38:47 EEST 2021
;; MSG SIZE rcvd: 79
- Refactored
DnsMock::Representer::RdnsLookup
, tests - Updated
DnsMock::Record::Factory::Base
- Updated
DnsMock::Server::RecordsDictionaryBuilder
, tests - Updated
DnsMock::Record::Factory::Cname
, tests - Updated
DnsMock::Record::Factory::Mx
, tests - Updated
DnsMock::Record::Factory::Ns
, tests - Updated
DnsMock::Record::Factory::Ptr
, tests - Updated
DnsMock::Record::Factory::Soa
, tests - Updated
DnsMock::ContextGeneratorHelper
, tests - Updated reek config
- Updated gem documentation, version
- Updated gem development dependencies
- Updated
rubocop
/codeclimate
config - Updated gem documentation, version
- Detecting random available port via OS features. Thanks @ioquatix for suggestion 🚀
- Removed
DnsMock::Server::RandomAvailablePort
, tests
- Updated
DnsMock::Server
class - Updated tests helpers/tests
- Updated gem development dependencies
- Test coverage issues
- Updated gem development dependencies
- Updated
circleci
config
- Updated gem development dependencies
- Updated
circleci
config
- Updated gem development dependencies
- Updated
rubocop
/codeclimate
config - Updated
circleci
config
- Updated gem development dependencies
- Updated
rubocop
/codeclimate
config - Updated gem documentation
- Updated tests
- Ability to specify custom priority of MX record if it needed
Now is possible 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.
records = {
'example.com' => {
mx: %w[.:0 mx1.domain.com:10 mx2.domain.com:10 mx3.domain.com] # .:0 - null MX record
}
}
DnsMock.start_server(records: records)
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
- RSpec native support. DnsMock helper help you to 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
- 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 gem version, readme
- RDNS lookup representation for IP address in PTR record feature.
- PTR record support. 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.2.3.4' => {
ptr: %w[domain_1.com domain_2.com]
}
}
DnsMock.start_server(records: records)
dig @localhost -p 5300 -x 1.2.3.4
; <<>> DiG 9.10.6 <<>> @localhost -p 5300 -x 1.1.1.1
; (2 servers found)
;; ANSWER SECTION:
4.3.2.1.in-addr.arpa. 1 IN PTR domain_1.com.
4.3.2.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
- First release of
DnsMock
. Thanks @le0pard for idea & support 🚀