dns_mock 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb90f7f7c21ba2fff7de8259e0ac994a0781c212d7de77c05eebbe209b2f7f4c
4
- data.tar.gz: e6ac11bad8d86f035063f2b6ca09c681a66988a647c7051a2a80de5b3f0d0ff9
3
+ metadata.gz: 030004dfb97793bf507c84fbd56965bd5af1aa3c9652db58c20d40ec1467936f
4
+ data.tar.gz: b4b0d01e9750ac32c4f1577542a668393abb8780615930263765acbb810854a2
5
5
  SHA512:
6
- metadata.gz: a50714bf62ee1976954cd4cd351399b29d67d240a89e4da379e8da4a5b33c12f323bbed706e5233f23d9edafa609fce52a0f6f3454aab414254368a5069a552f
7
- data.tar.gz: 1d2ad40b18259ba6132215bb486dd2d8e9c0e7cf1df195b1538589c0d8fbc034f2436f3d062fed9823e61df54c50c4c958340f9b8e4a04093044ce6bc708ded9
6
+ metadata.gz: 9e3a43b5a4519bca6e4909d8632081cac6699f57a5090223d97bbf95b32be684f8cb1437cf0ce64080a3476d787a874eb028e2416566d041dfba8211cb41ba60
7
+ data.tar.gz: 259b19d489e11ed66e4b9aa4e5aa55f88913edeb66ed5e767c378940c00bcc934dde3842eeaf5b2ee88456c69e221fd4d9d91ef28ac2fc6a2bfada0f05188e48
data/.reek.yml CHANGED
@@ -17,17 +17,23 @@ detectors:
17
17
  - DnsMock::ContextGeneratorHelper#random_ip_v4_address
18
18
  - DnsMock::ContextGeneratorHelper#random_ip_v6_address
19
19
  - DnsMock::ContextGeneratorHelper#random_txt_record_context
20
+ - DnsMock::ContextGeneratorHelper#to_punycode_hostname
20
21
  - DnsMock::RecordsDictionaryHelper#create_records_dictionary_by_records
21
22
  - DnsMock::ServerHelper#start_random_server
22
23
  - DnsMock::ServerHelper#stop_all_running_servers
23
- - DnsMock::Server::RecordsDictionaryBuilder#rdns_lookup_prefix
24
24
  - DnsMock::ContextGeneratorHelper#random_port_number
25
25
  - DnsMock::TestFramework::RSpec::Helper#dns_mock_server
26
+ - DnsMock::ContextGeneratorHelper#to_rdns_hostaddress
27
+
28
+ DuplicateMethodCall:
29
+ exclude:
30
+ - DnsMock::ContextGeneratorHelper#create_records
26
31
 
27
32
  ControlParameter:
28
33
  exclude:
29
34
  - DnsMock::Error::Helper#raise_unless
30
35
  - DnsMock::Server#initialize
36
+ - DnsMock::ContextGeneratorHelper#to_punycode_hostname
31
37
 
32
38
  MissingSafeMethod:
33
39
  exclude:
data/CHANGELOG.md CHANGED
@@ -2,6 +2,65 @@
2
2
 
3
3
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## [1.4.0] - 2021-07-13
6
+
7
+ ### Added
8
+
9
+ - Added ability to use internationalized hostnames. All hostnames in UTF-8 will be represented as [Punycode](https://en.wikipedia.org/wiki/Punycode)
10
+ - Added `simpleidn` as runtime dependency
11
+ - Added `DnsMock::Representer::Punycode`, tests
12
+
13
+ ```ruby
14
+ records = {
15
+ 'mañana.com' => {
16
+ mx: %w[másletras.mañana.com]
17
+ }
18
+ }
19
+
20
+ DnsMock.start_server(port: 5300, records: records)
21
+ ```
22
+
23
+ ```bash
24
+ dig @localhost -p 5300 MX xn--maana-pta.com
25
+ ```
26
+
27
+ ```
28
+ ; <<>> DiG 9.10.6 <<>> @localhost -p 5300 MX xn--maana-pta.com
29
+ ; (2 servers found)
30
+ ;; global options: +cmd
31
+ ;; Got answer:
32
+ ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4612
33
+ ;; flags: rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
34
+ ;; WARNING: recursion requested but not available
35
+
36
+ ;; OPT PSEUDOSECTION:
37
+ ; EDNS: version: 0, flags:; udp: 4096
38
+ ;; QUESTION SECTION:
39
+ ;xn--maana-pta.com. IN MX
40
+
41
+ ;; ANSWER SECTION:
42
+ xn--maana-pta.com. 1 IN MX 10 xn--msletras-8ya.xn--maana-pta.com.
43
+
44
+ ;; Query time: 0 msec
45
+ ;; SERVER: 127.0.0.1#5300(127.0.0.1)
46
+ ;; WHEN: Tue Jul 13 15:38:47 EEST 2021
47
+ ;; MSG SIZE rcvd: 79
48
+ ```
49
+
50
+ ### Changed
51
+
52
+ - Refactored `DnsMock::Representer::RdnsLookup`, tests
53
+ - Updated `DnsMock::Record::Factory::Base`
54
+ - Updated `DnsMock::Server::RecordsDictionaryBuilder`, tests
55
+ - Updated `DnsMock::Record::Factory::Cname`, tests
56
+ - Updated `DnsMock::Record::Factory::Mx`, tests
57
+ - Updated `DnsMock::Record::Factory::Ns`, tests
58
+ - Updated `DnsMock::Record::Factory::Ptr`, tests
59
+ - Updated `DnsMock::Record::Factory::Soa`, tests
60
+ - Updated `DnsMock::ContextGeneratorHelper`, tests
61
+ - Updated reek config
62
+ - Updated gem documentation, version
63
+
5
64
  ## [1.3.1] - 2021-07-07
6
65
 
7
66
  ### Changed
@@ -12,11 +71,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
12
71
 
13
72
  ## [1.3.0] - 2021-06-14
14
73
 
15
- Detecting random available port via OS features. Thanks [@ioquatix](https://github.com/ioquatix) for [suggestion](https://github.com/mocktools/ruby-dns-mock/issues/42) 🚀
74
+ ### Added
75
+
76
+ - Detecting random available port via OS features. Thanks [@ioquatix](https://github.com/ioquatix) for [suggestion](https://github.com/mocktools/ruby-dns-mock/issues/42) 🚀
16
77
 
17
78
  ### Removed
18
79
 
19
- - Removed `DnsMock::Server::RandomAvailablePort`
80
+ - Removed `DnsMock::Server::RandomAvailablePort`, tests
20
81
 
21
82
  ### Changed
22
83
 
@@ -61,9 +122,11 @@ Detecting random available port via OS features. Thanks [@ioquatix](https://gith
61
122
 
62
123
  ## [1.2.0] - 2021-02-04
63
124
 
64
- ### Ability to specify MX record priority
125
+ ### Added
126
+
127
+ - Ability to specify custom priority of MX record if it needed
65
128
 
66
- 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.
129
+ 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.
67
130
 
68
131
  ```ruby
69
132
  records = {
@@ -96,9 +159,9 @@ example.com. 1 IN MX 40 mx3.domain.com.
96
159
 
97
160
  ## [1.1.0] - 2021-02-01
98
161
 
99
- ### RSpec native support
162
+ ### Added
100
163
 
101
- Added DnsMock helper which can simplify integration with RSpec.
164
+ - RSpec native support. DnsMock helper help you to simplify integration with RSpec
102
165
 
103
166
  ```ruby
104
167
  # spec/support/config/dns_mock.rb
@@ -130,9 +193,11 @@ end
130
193
 
131
194
  ## [1.0.0] - 2021-01-29
132
195
 
133
- ### Configurable record not found behaviour
196
+ ### Added
134
197
 
135
- 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:
198
+ - Configurable strategy for record not found case
199
+
200
+ By default it won't raise an exception when DNS record not found in mocked records dictionary:
136
201
 
137
202
  ```ruby
138
203
  DnsMock.start_server(port: 5300)
@@ -178,13 +243,15 @@ DnsMock.start_server(exception_if_not_found: true)
178
243
 
179
244
  ### Fixed
180
245
 
181
- Fixed RDNS lookup representatin for IP address in PTR record feature.
246
+ - RDNS lookup representatin for IP address in PTR record feature.
182
247
 
183
248
  ## [0.2.0] - 2021-01-26
184
249
 
185
- ### PTR record support
250
+ ### Added
251
+
252
+ - PTR record support. Ability to mock PTR records
186
253
 
187
- 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.
254
+ Please note, you can define host address without RDNS lookup prefix (`.in-addr.arpa`). `DnsMock` will do it for you.
188
255
 
189
256
  ```ruby
190
257
  records = {
@@ -216,6 +283,6 @@ dig @localhost -p 5300 -x 1.2.3.4
216
283
 
217
284
  ## [0.1.0] - 2021-01-19
218
285
 
219
- ### First release
286
+ ### Added
220
287
 
221
- Implemented first version of `DnsMock`. Thanks [@le0pard](https://github.com/le0pard) for idea & support 🚀
288
+ - First release of `DnsMock`. Thanks [@le0pard](https://github.com/le0pard) for idea & support 🚀
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dns_mock (1.3.1)
4
+ dns_mock (1.4.0)
5
+ simpleidn (~> 0.2.1)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -35,7 +36,7 @@ GEM
35
36
  iniparse (~> 1.4)
36
37
  rexml (~> 3.2)
37
38
  parallel (1.20.1)
38
- parser (3.0.1.1)
39
+ parser (3.0.2.0)
39
40
  ast (~> 2.4.1)
40
41
  pry (0.13.1)
41
42
  coderay (~> 1.1)
@@ -45,7 +46,7 @@ GEM
45
46
  pry (~> 0.13.0)
46
47
  psych (3.3.2)
47
48
  rainbow (3.0.0)
48
- rake (13.0.4)
49
+ rake (13.0.6)
49
50
  reek (6.0.4)
50
51
  kwalify (~> 0.7.0)
51
52
  parser (~> 3.0.0)
@@ -108,14 +109,14 @@ PLATFORMS
108
109
  x86_64-darwin-20
109
110
 
110
111
  DEPENDENCIES
111
- bundler (~> 2.2, >= 2.2.22)
112
+ bundler (~> 2.2, >= 2.2.23)
112
113
  bundler-audit (~> 0.8.0)
113
114
  dns_mock!
114
115
  faker (~> 2.18)
115
116
  fasterer (~> 0.9.0)
116
117
  overcommit (~> 0.58.0)
117
118
  pry-byebug (~> 3.9)
118
- rake (~> 13.0, >= 13.0.4)
119
+ rake (~> 13.0, >= 13.0.6)
119
120
  reek (~> 6.0, >= 6.0.4)
120
121
  rspec (~> 3.10)
121
122
  rspec-dns (~> 0.1.8)
@@ -125,4 +126,4 @@ DEPENDENCIES
125
126
  simplecov (~> 0.17.1)
126
127
 
127
128
  BUNDLED WITH
128
- 2.2.22
129
+ 2.2.23
data/README.md CHANGED
@@ -29,10 +29,11 @@
29
29
  ## Features
30
30
 
31
31
  - Ability to mimic any DNS records (`A`, `AAAA`, `CNAME`, `MX`, `NS`, `PTR`, `SOA` and `TXT`)
32
- - Zero runtime dependencies
32
+ - Automatically converts hostnames to RDNS/[Punycode](https://en.wikipedia.org/wiki/Punycode) representation
33
33
  - Lightweight UDP DNS mock server with dynamic/manual port assignment
34
34
  - Test framework agnostic (it's PORO, so you can use it outside of `RSpec`, `Test::Unit` or `MiniTest`)
35
35
  - Simple and intuitive DSL
36
+ - Only one runtime dependency
36
37
 
37
38
  ## Requirements
38
39
 
@@ -67,7 +68,7 @@ records = {
67
68
  ns: %w[ns1.domain.com ns2.domain.com],
68
69
  mx: %w[mx1.domain.com mx2.domain.com:50], # you can specify host(s) or host(s) with priority, use '.:0' for definition null MX record
69
70
  txt: %w[txt_record_1 txt_record_2],
70
- cname: 'some.domain.com',
71
+ cname: 'mañana.com', # you can specify hostname in UTF-8. It will be converted to xn--maana-pta.com automatically
71
72
  soa: [
72
73
  {
73
74
  mname: 'dns1.domain.com',
@@ -85,7 +86,7 @@ records = {
85
86
  }
86
87
  }
87
88
 
88
- # Main DnsMock interface
89
+ # Public DnsMock interface
89
90
  # records:Hash, port:Integer, exception_if_not_found:Boolean
90
91
  # are optional params. By default creates dns mock server with
91
92
  # empty records. A free port for server will be randomly assigned
@@ -136,7 +137,7 @@ require 'dns_mock/test_framework/rspec'
136
137
 
137
138
  #### DnsMock RSpec helper
138
139
 
139
- Just add `DnsMock::TestFramework::RSpec::Helper` if you wanna use shortcut `dns_mock_server` for DnsMock server instance into your `RSpec.describe` blocks:
140
+ Just add `DnsMock::TestFramework::RSpec::Helper` if you wanna use shortcut `dns_mock_server` for DnsMock server instance inside of your `RSpec.describe` blocks:
140
141
 
141
142
  ```ruby
142
143
  # spec/support/config/dns_mock.rb
data/dns_mock.gemspec CHANGED
@@ -31,13 +31,15 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
- spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.22'
34
+ spec.add_runtime_dependency 'simpleidn', '~> 0.2.1'
35
+
36
+ spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.23'
35
37
  spec.add_development_dependency 'bundler-audit', '~> 0.8.0'
36
38
  spec.add_development_dependency 'faker', '~> 2.18'
37
39
  spec.add_development_dependency 'fasterer', '~> 0.9.0'
38
40
  spec.add_development_dependency 'overcommit', '~> 0.58.0'
39
41
  spec.add_development_dependency 'pry-byebug', '~> 3.9'
40
- spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.4'
42
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
41
43
  spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.4'
42
44
  spec.add_development_dependency 'rspec', '~> 3.10'
43
45
  spec.add_development_dependency 'rspec-dns', '~> 0.1.8'
data/lib/dns_mock/core.rb CHANGED
@@ -18,6 +18,11 @@ module DnsMock
18
18
  require_relative '../dns_mock/error/helper'
19
19
  end
20
20
 
21
+ module Representer
22
+ require_relative '../dns_mock/representer/punycode'
23
+ require_relative '../dns_mock/representer/rdns_lookup'
24
+ end
25
+
21
26
  module Record
22
27
  module Factory
23
28
  require_relative '../dns_mock/record/factory/base'
@@ -23,8 +23,13 @@ module DnsMock
23
23
  end
24
24
  end
25
25
 
26
- def initialize(dns_name = ::Resolv::DNS::Name, record_data:)
26
+ def initialize(
27
+ dns_name = ::Resolv::DNS::Name,
28
+ punycode_representer = DnsMock::Representer::Punycode,
29
+ record_data:
30
+ )
27
31
  @dns_name = dns_name
32
+ @punycode_representer = punycode_representer
28
33
  @record_data = record_data
29
34
  end
30
35
 
@@ -38,7 +43,7 @@ module DnsMock
38
43
 
39
44
  private
40
45
 
41
- attr_reader :dns_name, :record_data
46
+ attr_reader :dns_name, :punycode_representer, :record_data
42
47
 
43
48
  def record_type
44
49
  self.class.name.split('::').last.upcase
@@ -46,7 +51,7 @@ module DnsMock
46
51
 
47
52
  def create_dns_name(hostname)
48
53
  raise ::ArgumentError, "cannot interpret as DNS name: #{hostname}" unless hostname.is_a?(::String)
49
- dns_name.create("#{hostname}.")
54
+ dns_name.create("#{punycode_representer.call(hostname)}.")
50
55
  end
51
56
  end
52
57
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DnsMock
4
+ module Representer
5
+ Punycode = ::Class.new do
6
+ require 'simpleidn'
7
+
8
+ def self.call(hostname)
9
+ return hostname if hostname.ascii_only?
10
+
11
+ SimpleIDN.to_ascii(hostname)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DnsMock
4
+ module Representer
5
+ class RdnsLookup
6
+ IP_OCTET_GROUPS = /(\d+).(\d+).(\d+).(\d+)/.freeze
7
+ RDNS_LOOKUP_REPRESENTATION = '\4.\3.\2.\1.in-addr.arpa'
8
+
9
+ def self.call(host_address)
10
+ host_address.gsub(
11
+ DnsMock::Representer::RdnsLookup::IP_OCTET_GROUPS,
12
+ DnsMock::Representer::RdnsLookup::RDNS_LOOKUP_REPRESENTATION
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -6,8 +6,6 @@ module DnsMock
6
6
  include DnsMock::Error::Helper
7
7
 
8
8
  IP_ADDRESS_PATTERN = /\A((1\d|[1-9]|2[0-4])?\d|25[0-5])(\.\g<1>){3}\z/.freeze
9
- IP_OCTET_GROUPS = /(\d+).(\d+).(\d+).(\d+)/.freeze
10
- RDNS_LOOKUP_REPRESENTATION = '\4.\3.\2.\1.in-addr.arpa'
11
9
  TYPE_MAPPER = DnsMock::AVAILABLE_DNS_RECORD_TYPES.zip(
12
10
  [
13
11
  [DnsMock::Record::Builder::A, DnsMock::Record::Factory::A, ::Array],
@@ -27,7 +25,12 @@ module DnsMock
27
25
 
28
26
  attr_reader :records
29
27
 
30
- def initialize
28
+ def initialize(
29
+ punycode_representer = DnsMock::Representer::Punycode,
30
+ rdns_lookup_representer = DnsMock::Representer::RdnsLookup
31
+ )
32
+ @punycode_representer = punycode_representer
33
+ @rdns_lookup_representer = rdns_lookup_representer
31
34
  @records = {}
32
35
  end
33
36
 
@@ -35,7 +38,7 @@ module DnsMock
35
38
  raise_unless(DnsMock::Error::ArgumentType.new(records_to_build.class), records_to_build.is_a?(::Hash))
36
39
  records_to_build.each do |hostname, dns_records|
37
40
  raise_unless(DnsMock::Error::RecordHostType.new(hostname, hostname.class), hostname.is_a?(::String))
38
- records[rdns_lookup_prefix(hostname)] = dns_records.each_with_object({}) do |(record_type, records_data), records_instances_by_type|
41
+ records[representer(hostname)] = dns_records.each_with_object({}) do |(record_type, records_data), records_instances_by_type|
39
42
  records_instances_by_type[record_type] = build_records_instances_by_type(record_type, records_data)
40
43
  end
41
44
  end
@@ -45,13 +48,12 @@ module DnsMock
45
48
 
46
49
  private
47
50
 
48
- def rdns_lookup_prefix(hostname)
49
- return hostname unless hostname[DnsMock::Server::RecordsDictionaryBuilder::IP_ADDRESS_PATTERN]
51
+ attr_reader :punycode_representer, :rdns_lookup_representer
50
52
 
51
- hostname.gsub(
52
- DnsMock::Server::RecordsDictionaryBuilder::IP_OCTET_GROUPS,
53
- DnsMock::Server::RecordsDictionaryBuilder::RDNS_LOOKUP_REPRESENTATION
54
- )
53
+ def representer(hostname)
54
+ return rdns_lookup_representer.call(hostname) if hostname[DnsMock::Server::RecordsDictionaryBuilder::IP_ADDRESS_PATTERN]
55
+
56
+ punycode_representer.call(hostname)
55
57
  end
56
58
 
57
59
  def build_records_instances_by_type(record_type, records_to_build)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DnsMock
4
- VERSION = '1.3.1'
4
+ VERSION = '1.4.0'
5
5
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dns_mock
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladislav Trotsenko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-07 00:00:00.000000000 Z
11
+ date: 2021-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: simpleidn
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -19,7 +33,7 @@ dependencies:
19
33
  version: '2.2'
20
34
  - - ">="
21
35
  - !ruby/object:Gem::Version
22
- version: 2.2.22
36
+ version: 2.2.23
23
37
  type: :development
24
38
  prerelease: false
25
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +43,7 @@ dependencies:
29
43
  version: '2.2'
30
44
  - - ">="
31
45
  - !ruby/object:Gem::Version
32
- version: 2.2.22
46
+ version: 2.2.23
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: bundler-audit
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +123,7 @@ dependencies:
109
123
  version: '13.0'
110
124
  - - ">="
111
125
  - !ruby/object:Gem::Version
112
- version: 13.0.4
126
+ version: 13.0.6
113
127
  type: :development
114
128
  prerelease: false
115
129
  version_requirements: !ruby/object:Gem::Requirement
@@ -119,7 +133,7 @@ dependencies:
119
133
  version: '13.0'
120
134
  - - ">="
121
135
  - !ruby/object:Gem::Version
122
- version: 13.0.4
136
+ version: 13.0.6
123
137
  - !ruby/object:Gem::Dependency
124
138
  name: reek
125
139
  requirement: !ruby/object:Gem::Requirement
@@ -299,6 +313,8 @@ files:
299
313
  - lib/dns_mock/record/factory/ptr.rb
300
314
  - lib/dns_mock/record/factory/soa.rb
301
315
  - lib/dns_mock/record/factory/txt.rb
316
+ - lib/dns_mock/representer/punycode.rb
317
+ - lib/dns_mock/representer/rdns_lookup.rb
302
318
  - lib/dns_mock/response/answer.rb
303
319
  - lib/dns_mock/response/message.rb
304
320
  - lib/dns_mock/server.rb