dns_mock 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc32cd03521879fd373e554a2dbb29ae26ca002586418675fdc066b7ad5eab57
4
- data.tar.gz: f309b21a3e48780dedef123a95bab5267dc3679ec3809def258a189485f5a6c4
3
+ metadata.gz: f5b0d9099a1f5c837df39abb203d6217f0216dd0669acc7a209ce86cb00c2651
4
+ data.tar.gz: db3089761cf77aae5e69af2fdd961f5a26fdaf21abd7383113f3c86512676169
5
5
  SHA512:
6
- metadata.gz: fa16a2db1e2c9b8e903b29241f08d2b7695dfa3b98c9364c7d8ea87b361a67b21e72f898378d64b75500f9bc0ab90d14a33b94443561760ec99a820e02c0d8b4
7
- data.tar.gz: 3f236e1c88970784a9d137994562595b06f3d78c0555aa3279810ae1821792d5b46c50f56e8bb63b3c66c060f9f495e4e09f6ada7ee6ae0588772a2ebb7d1a72
6
+ metadata.gz: d14b6560b60a00c542db1930cbbfde077f75d9a89866543c2477817edb8951e4004df904930980ed2ce91815d7ca01e2d6d82fc25449d45347577dfe7ea464bc
7
+ data.tar.gz: 5a6fc8492af617c15229262a2faf6a4c5349504e40936f4be7954807db96d12f4954d9e667b9334aeb68fa8a2aeb11ae934049db52f8f08434f21010147edecc
data/.reek.yml CHANGED
@@ -21,6 +21,8 @@ detectors:
21
21
  - DnsMock::ServerHelper#start_random_server
22
22
  - DnsMock::ServerHelper#stop_all_running_servers
23
23
  - DnsMock::Server::RecordsDictionaryBuilder#rdns_lookup_prefix
24
+ - DnsMock::ContextGeneratorHelper#random_port_number
25
+ - DnsMock::TestFramework::RSpec::Helper#dns_mock_server
24
26
 
25
27
  ControlParameter:
26
28
  exclude:
data/CHANGELOG.md CHANGED
@@ -2,6 +2,40 @@
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.1.0] - 2021-02-01
6
+
7
+ ### RSpec native support
8
+
9
+ Added DnsMock helper which can simplify integration with RSpec.
10
+
11
+ ```ruby
12
+ # spec/support/config/dns_mock.rb
13
+ require 'dns_mock/test_framework/rspec'
14
+
15
+ RSpec.configure do |config|
16
+ config.include DnsMock::TestFramework::RSpec::Helper
17
+ end
18
+
19
+ # your awesome first_a_record_spec.rb
20
+ RSpec.describe FirstARecord do
21
+ subject(:service) do
22
+ described_class.call(
23
+ hostname,
24
+ dns_gateway_host: 'localhost',
25
+ dns_gateway_port: dns_mock_server.port
26
+ )
27
+ end
28
+
29
+ let(:hostname) { 'example.com' }
30
+ let(:first_a_record) { '1.2.3.4' }
31
+ let(:records) { { hostname => { a: [first_a_record] } } }
32
+
33
+ before { dns_mock_server.assign_mocks(records) }
34
+
35
+ it { is_expected.to eq(first_a_record) }
36
+ end
37
+ ```
38
+
5
39
  ## [1.0.0] - 2021-01-29
6
40
 
7
41
  ### Configurable record not found behaviour
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dns_mock (1.0.0)
4
+ dns_mock (1.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -16,6 +16,7 @@
16
16
  - [Requirements](#requirements)
17
17
  - [Installation](#installation)
18
18
  - [Usage](#usage)
19
+ - [RSpec](#rspec)
19
20
  - [Contributing](#contributing)
20
21
  - [License](#license)
21
22
  - [Code of Conduct](#code-of-conduct)
@@ -110,6 +111,68 @@ DnsMock.running_servers # => [DnsMock::Server instance]
110
111
  DnsMock.stop_running_servers! # => true
111
112
  ```
112
113
 
114
+ ### RSpec
115
+
116
+ Require this either in your Gemfile or in RSpec's support scripts. So either:
117
+
118
+ ```ruby
119
+ # Gemfile
120
+ group :test do
121
+ gem 'rspec'
122
+ gem 'dns_mock', require: 'dns_mock/test_framework/rspec'
123
+ end
124
+ ```
125
+
126
+ or
127
+
128
+ ```ruby
129
+ # spec/support/config/dns_mock.rb
130
+ require 'dns_mock/test_framework/rspec'
131
+ ```
132
+
133
+ #### DnsMock RSpec helper
134
+
135
+ Just add `DnsMock::TestFramework::RSpec::Helper` if you wanna have shortcut for DnsMock server instance into your RSpec.describe blocks:
136
+
137
+ ```ruby
138
+ # spec/support/config/dns_mock.rb
139
+ RSpec.configure do |config|
140
+ config.include DnsMock::TestFramework::RSpec::Helper
141
+ end
142
+ ```
143
+
144
+ ```ruby
145
+ # your awesome first_a_record_spec.rb
146
+ RSpec.describe FirstARecord do
147
+ subject(:service) do
148
+ described_class.call(
149
+ hostname,
150
+ dns_gateway_host: 'localhost',
151
+ dns_gateway_port: dns_mock_server.port
152
+ )
153
+ end
154
+
155
+ let(:hostname) { 'example.com' }
156
+ let(:first_a_record) { '1.2.3.4' }
157
+ let(:records) { { hostname => { a: [first_a_record] } } }
158
+
159
+ before { dns_mock_server.assign_mocks(records) }
160
+
161
+ it { is_expected.to eq(first_a_record) }
162
+ end
163
+ ```
164
+
165
+ #### DnsMock RSpec interface
166
+
167
+ If you won't use `DnsMock::TestFramework::RSpec::Helper` you can use `DnsMock::TestFramework::RSpec::Interface` directly instead:
168
+
169
+ ```ruby
170
+ DnsMock::TestFramework::RSpec::Interface.start_server # creates and runs DnsMock server instance
171
+ DnsMock::TestFramework::RSpec::Interface.stop_server! # stops current DnsMock server instance
172
+ DnsMock::TestFramework::RSpec::Interface.reset_mocks! # resets mocks in current DnsMock server instance
173
+ DnsMock::TestFramework::RSpec::Interface.clear_server! # stops and clears current DnsMock server instance
174
+ ```
175
+
113
176
  ## Contributing
114
177
 
115
178
  Bug reports and pull requests are welcome on GitHub at https://github.com/mocktools/ruby-dns-mock. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. Please check the [open tikets](https://github.com/mocktools/ruby-dns-mock/issues). Be shure to follow Contributor Code of Conduct below and our [Contributing Guidelines](CONTRIBUTING.md).
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec/core'
4
+ require_relative '../../dns_mock'
5
+ require_relative './rspec/interface'
6
+ require_relative './rspec/helper'
7
+
8
+ RSpec.configure do |config|
9
+ config.before(:suite) { DnsMock::TestFramework::RSpec::Interface.start_server }
10
+ config.after(:suite) { DnsMock::TestFramework::RSpec::Interface.stop_server! }
11
+ config.after { DnsMock::TestFramework::RSpec::Interface.reset_mocks! }
12
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './interface'
4
+
5
+ module DnsMock
6
+ module TestFramework
7
+ module RSpec
8
+ module Helper
9
+ def dns_mock_server(**options)
10
+ DnsMock::TestFramework::RSpec::Interface.start_server(**options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DnsMock
4
+ module TestFramework
5
+ module RSpec
6
+ module Interface
7
+ class << self
8
+ def start_server(**options)
9
+ @dns_mock_server ||= DnsMock.start_server(**options) # rubocop:disable Naming/MemoizedInstanceVariableName
10
+ end
11
+
12
+ def stop_server!
13
+ return unless dns_mock_server
14
+
15
+ dns_mock_server.stop!
16
+ end
17
+
18
+ def reset_mocks!
19
+ return unless dns_mock_server
20
+
21
+ dns_mock_server.reset_mocks!
22
+ end
23
+
24
+ def clear_server!
25
+ @dns_mock_server = nil
26
+ end
27
+
28
+ private
29
+
30
+ attr_reader :dns_mock_server
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DnsMock
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dns_mock
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.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-01-29 00:00:00.000000000 Z
11
+ date: 2021-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -298,6 +298,9 @@ files:
298
298
  - lib/dns_mock/server.rb
299
299
  - lib/dns_mock/server/random_available_port.rb
300
300
  - lib/dns_mock/server/records_dictionary_builder.rb
301
+ - lib/dns_mock/test_framework/rspec.rb
302
+ - lib/dns_mock/test_framework/rspec/helper.rb
303
+ - lib/dns_mock/test_framework/rspec/interface.rb
301
304
  - lib/dns_mock/version.rb
302
305
  homepage: https://github.com/mocktools/ruby-dns-mock
303
306
  licenses: