validates_host 1.1.0 → 1.2.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.
Files changed (38) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +53 -0
  3. data/.travis.yml +26 -17
  4. data/Gemfile +3 -1
  5. data/README.md +1 -1
  6. data/Rakefile +9 -4
  7. data/lib/validates_host.rb +3 -1
  8. data/lib/validates_host/domain_name.rb +5 -2
  9. data/lib/validates_host/domain_name_validator.rb +3 -1
  10. data/lib/validates_host/host_name.rb +4 -1
  11. data/lib/validates_host/host_name_validator.rb +3 -1
  12. data/lib/validates_host/ip.rb +10 -5
  13. data/lib/validates_host/ip_validator.rb +3 -1
  14. data/lib/validates_host/require_a_valid_domain_name_matcher.rb +7 -5
  15. data/lib/validates_host/require_a_valid_host_name_matcher.rb +7 -5
  16. data/lib/validates_host/require_a_valid_ip_matcher.rb +7 -5
  17. data/lib/validates_host/require_a_valid_subnet_matcher.rb +7 -5
  18. data/lib/validates_host/subnet.rb +5 -2
  19. data/lib/validates_host/subnet_validator.rb +3 -1
  20. data/lib/validates_host/version.rb +4 -2
  21. data/spec/fake_app/server.rb +6 -4
  22. data/spec/fake_app/subnet.rb +4 -8
  23. data/spec/shoulda/matchers/active_model/require_a_valid_domain_name_matcher_spec.rb +23 -0
  24. data/spec/shoulda/matchers/active_model/require_a_valid_host_name_matcher_spec.rb +23 -0
  25. data/spec/shoulda/matchers/active_model/require_a_valid_ip_matcher_spec.rb +23 -0
  26. data/spec/shoulda/matchers/active_model/require_a_valid_subnet_matcher_spec.rb +23 -0
  27. data/spec/spec_helper.rb +3 -1
  28. data/spec/validates_host/domain_name_validator_spec.rb +21 -18
  29. data/spec/validates_host/host_name_validator_spec.rb +21 -18
  30. data/spec/validates_host/ip_validator_spec.rb +37 -19
  31. data/spec/validates_host/subnet_validator_spec.rb +21 -18
  32. data/validates_host.gemspec +13 -10
  33. metadata +42 -15
  34. data/.ruby-version +0 -1
  35. data/spec/validates_host/require_a_valid_domain_name_matcher_spec.rb +0 -23
  36. data/spec/validates_host/require_a_valid_host_name_matcher_spec.rb +0 -23
  37. data/spec/validates_host/require_a_valid_ip_matcher_spec.rb +0 -23
  38. data/spec/validates_host/require_a_valid_subnet_matcher_spec.rb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3ccfaaef4bc3d52a9b8fa2ca185639ac9e8eef1b
4
- data.tar.gz: 1a847e877ae09a88eb3ef62434a52fb9cb672f4c
2
+ SHA256:
3
+ metadata.gz: f5b11543c72bb9ea5223f7f216d24f79606ca13e2f9d97967718132ef9589158
4
+ data.tar.gz: 3338ae72f989b7fa89cc546918519b69cd2000ef0c081a14afe465720ce0ae4f
5
5
  SHA512:
6
- metadata.gz: 6911acf25d66107a291d5883753e1fc1e01565fd2312eedc15c97edc6bd627d959b25fc05ae00306241479ee0b94f682b46b0e8ce310e5a9ad9c682a2b9bf889
7
- data.tar.gz: dda6fca0b134fbeda2248a265b627e1b54c6d06944b497089d2ef6593ab7d4e8a51340bc73cfab98e2e67ada6fcc6a3684a8811df60c0a8d3bc4c3e432dde1cd
6
+ metadata.gz: e4146e5334ec9aa078d6f715f225296e73625a10c3508bfa67bbaca3a85092326049873ae7cf8a7d0a5cec4bbbdd5a04c262bc1d7b70e6c100b8101d0263e755
7
+ data.tar.gz: 8d122306cf4753d4e077a0b76c92d5f8da7c9623f17cf1ff3c5f40368c42794f3da1ccb02e2cb66d68e923cd767e367fcfbfc63585bf5082780a7f97454b1530
@@ -0,0 +1,53 @@
1
+ require: rubocop-rspec
2
+
3
+ Layout/EmptyLinesAroundAttributeAccessor:
4
+ Enabled: true
5
+
6
+ Layout/LineLength:
7
+ Max: 150
8
+
9
+ Layout/SpaceAroundMethodCallOperator:
10
+ Enabled: true
11
+
12
+ Lint/DeprecatedOpenSSLConstant:
13
+ Enabled: true
14
+
15
+ Lint/MixedRegexpCaptureTypes:
16
+ Enabled: true
17
+
18
+ Lint/RaiseException:
19
+ Enabled: true
20
+
21
+ Lint/StructNewOverride:
22
+ Enabled: true
23
+
24
+ Metrics/BlockLength:
25
+ Enabled: false
26
+
27
+ Style/Documentation:
28
+ Enabled: false
29
+
30
+ Style/ExponentialNotation:
31
+ Enabled: true
32
+
33
+ Style/HashEachMethods:
34
+ Enabled: true
35
+
36
+ Style/HashTransformKeys:
37
+ Enabled: true
38
+
39
+ Style/HashTransformValues:
40
+ Enabled: true
41
+
42
+ Style/MixinUsage:
43
+ Exclude:
44
+ - 'spec/spec_helper.rb'
45
+
46
+ Style/RedundantRegexpCharacterClass:
47
+ Enabled: true
48
+
49
+ Style/RedundantRegexpEscape:
50
+ Enabled: true
51
+
52
+ Style/SlicingWithRange:
53
+ Enabled: true
@@ -1,22 +1,31 @@
1
- rvm:
2
- - 2.0
3
- - 2.1
4
- - 2.2
5
- - 2.3
6
- - 2.4
7
- gemfile:
8
- - gemfiles/Gemfile.rails3
9
- - gemfiles/Gemfile.rails4
10
- - gemfiles/Gemfile.rails5
11
1
  matrix:
12
- exclude:
13
- - rvm: 2.2
2
+ include:
3
+ - rvm: 2.0
14
4
  gemfile: gemfiles/Gemfile.rails3
15
- - rvm: 2.3
5
+ - rvm: 2.0
6
+ gemfile: gemfiles/Gemfile.rails4
7
+ - rvm: 2.1
16
8
  gemfile: gemfiles/Gemfile.rails3
9
+ - rvm: 2.1
10
+ gemfile: gemfiles/Gemfile.rails4
11
+ - rvm: 2.2
12
+ gemfile: gemfiles/Gemfile.rails4
13
+ - rvm: 2.2
14
+ gemfile: gemfiles/Gemfile.rails5
15
+ - rvm: 2.3
16
+ gemfile: gemfiles/Gemfile.rails4
17
+ - rvm: 2.3
18
+ gemfile: gemfiles/Gemfile.rails5
19
+ - rvm: 2.4
20
+ gemfile: gemfiles/Gemfile.rails4
17
21
  - rvm: 2.4
18
- gemfile: gemfiles/Gemfile.rails3
19
- - rvm: 2.0
20
22
  gemfile: gemfiles/Gemfile.rails5
21
- - rvm: 2.1
22
- gemfile: gemfiles/Gemfile.rails5
23
+ - rvm: 2.5
24
+ gemfile: gemfiles/Gemfile.rails4
25
+ - rvm: 2.5
26
+ gemfile: gemfiles/Gemfile.rails5
27
+ - rvm: 2.6
28
+ gemfile: gemfiles/Gemfile.rails4
29
+ - rvm: 2.6
30
+ gemfile: gemfiles/Gemfile.rails5
31
+ script: rake complete
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in validates_host.gemspec
4
- gemspec
6
+ gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ValidatesHost
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/validates_host.png)](http://badge.fury.io/rb/validates_host) [![Build Status](https://secure.travis-ci.org/plribeiro3000/validates_host.png?branch=master)](http://travis-ci.org/plribeiro3000/validates_host) [![Dependency Status](https://gemnasium.com/plribeiro3000/validates_host.png)](https://gemnasium.com/plribeiro3000/validates_host) [![Coverage Status](https://coveralls.io/repos/plribeiro3000/validates_host/badge.png?branch=master)](https://coveralls.io/r/plribeiro3000/validates_host) [![Code Climate](https://codeclimate.com/github/plribeiro3000/validates_host.png)](https://codeclimate.com/github/plribeiro3000/validates_host)
3
+ [![Gem Version](https://badge.fury.io/rb/validates_host.png)](http://badge.fury.io/rb/validates_host) [![Build Status](https://secure.travis-ci.org/plribeiro3000/validates_host.png?branch=master)](http://travis-ci.org/plribeiro3000/validates_host) [![Coverage Status](https://coveralls.io/repos/plribeiro3000/validates_host/badge.png?branch=master)](https://coveralls.io/r/plribeiro3000/validates_host) [![Code Climate](https://codeclimate.com/github/plribeiro3000/validates_host.png)](https://codeclimate.com/github/plribeiro3000/validates_host)
4
4
 
5
5
  Validates host attributes and test it in a simple way
6
6
 
data/Rakefile CHANGED
@@ -1,7 +1,12 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
3
6
 
4
7
  RSpec::Core::RakeTask.new
8
+ RuboCop::RakeTask.new
5
9
 
6
- desc "Default Task"
7
- task :default => [ :spec ]
10
+ desc 'Default Task'
11
+ task default: [:spec]
12
+ task complete: %i[spec rubocop]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/core_ext/array/wrap'
2
4
  require 'validates_host/host_name_validator'
3
5
  require 'validates_host/domain_name_validator'
@@ -16,4 +18,4 @@ module ValidatesHost
16
18
  autoload :Ip, 'validates_host/ip'
17
19
  autoload :HostName, 'validates_host/host_name'
18
20
  autoload :DomainName, 'validates_host/domain_name'
19
- end
21
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ValidatesHost
2
4
  class DomainName
3
5
  def initialize(domain_name)
@@ -6,7 +8,8 @@ module ValidatesHost
6
8
 
7
9
  def valid?
8
10
  return true if @domain_name.blank?
9
- @domain_name =~ /^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/
11
+
12
+ @domain_name =~ %r{^[a-z0-9]+([\-.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$}
10
13
  end
11
14
  end
12
- end
15
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class DomainNameValidator < ActiveModel::EachValidator
2
4
  def validate_each(record, attribute, value)
3
5
  record.errors.add(attribute, :invalid, options) unless ValidatesHost::DomainName.new(value).valid?
4
6
  end
5
- end
7
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ValidatesHost
2
4
  class HostName
3
5
  def initialize(host_name)
@@ -6,7 +8,8 @@ module ValidatesHost
6
8
 
7
9
  def valid?
8
10
  return true if @host_name.blank?
11
+
9
12
  @host_name =~ /^[a-z][a-z0-9-]+$/
10
13
  end
11
14
  end
12
- end
15
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class HostNameValidator < ActiveModel::EachValidator
2
4
  def validate_each(record, attribute, value)
3
5
  record.errors.add(attribute, :invalid, options) unless ValidatesHost::HostName.new(value).valid?
4
6
  end
5
- end
7
+ end
@@ -1,12 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'resolv'
4
+
1
5
  module ValidatesHost
2
6
  class Ip
3
- def initialize(ip)
4
- @ip = ip
7
+ def initialize(value)
8
+ @value = value
5
9
  end
6
10
 
7
11
  def valid?
8
- return true if @ip.blank?
9
- @ip =~ /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/
12
+ return true if @value.blank?
13
+
14
+ @value =~ Regexp.union(Resolv::IPv4::Regex, Resolv::IPv6::Regex)
10
15
  end
11
16
  end
12
- end
17
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class IpValidator < ActiveModel::EachValidator
2
4
  def validate_each(record, attribute, value)
3
5
  record.errors.add(attribute, :invalid, options) unless ValidatesHost::Ip.new(value).valid?
4
6
  end
5
- end
7
+ end
@@ -1,4 +1,6 @@
1
- require "shoulda-matchers"
1
+ # frozen_string_literal: true
2
+
3
+ require 'shoulda-matchers'
2
4
 
3
5
  module Shoulda
4
6
  module Matchers
@@ -15,19 +17,19 @@ module Shoulda
15
17
  def matches?(subject)
16
18
  super(subject)
17
19
 
18
- disallows_invalid_value and allows_valid_value
20
+ disallows_invalid_value && allows_valid_value
19
21
  end
20
22
 
21
23
  private
22
24
 
23
25
  def disallows_invalid_value
24
- disallows_value_of("example")
26
+ disallows_value_of('example')
25
27
  end
26
28
 
27
29
  def allows_valid_value
28
- allows_value_of("example.com")
30
+ allows_value_of('example.com')
29
31
  end
30
32
  end
31
33
  end
32
34
  end
33
- end
35
+ end
@@ -1,4 +1,6 @@
1
- require "shoulda-matchers"
1
+ # frozen_string_literal: true
2
+
3
+ require 'shoulda-matchers'
2
4
 
3
5
  module Shoulda
4
6
  module Matchers
@@ -15,19 +17,19 @@ module Shoulda
15
17
  def matches?(subject)
16
18
  super(subject)
17
19
 
18
- disallows_invalid_value and allows_valid_value
20
+ disallows_invalid_value && allows_valid_value
19
21
  end
20
22
 
21
23
  private
22
24
 
23
25
  def disallows_invalid_value
24
- disallows_value_of("1bd")
26
+ disallows_value_of('1bd')
25
27
  end
26
28
 
27
29
  def allows_valid_value
28
- allows_value_of("bd01")
30
+ allows_value_of('bd01')
29
31
  end
30
32
  end
31
33
  end
32
34
  end
33
- end
35
+ end
@@ -1,4 +1,6 @@
1
- require "shoulda-matchers"
1
+ # frozen_string_literal: true
2
+
3
+ require 'shoulda-matchers'
2
4
 
3
5
  module Shoulda
4
6
  module Matchers
@@ -15,19 +17,19 @@ module Shoulda
15
17
  def matches?(subject)
16
18
  super(subject)
17
19
 
18
- disallows_invalid_value and allows_valid_value
20
+ disallows_invalid_value && allows_valid_value
19
21
  end
20
22
 
21
23
  private
22
24
 
23
25
  def disallows_invalid_value
24
- disallows_value_of("10.0.0")
26
+ disallows_value_of('10.0.0')
25
27
  end
26
28
 
27
29
  def allows_valid_value
28
- allows_value_of("10.10.10.1")
30
+ allows_value_of('10.10.10.1')
29
31
  end
30
32
  end
31
33
  end
32
34
  end
33
- end
35
+ end
@@ -1,4 +1,6 @@
1
- require "shoulda-matchers"
1
+ # frozen_string_literal: true
2
+
3
+ require 'shoulda-matchers'
2
4
 
3
5
  module Shoulda
4
6
  module Matchers
@@ -15,19 +17,19 @@ module Shoulda
15
17
  def matches?(subject)
16
18
  super(subject)
17
19
 
18
- disallows_invalid_value and allows_valid_value
20
+ disallows_invalid_value && allows_valid_value
19
21
  end
20
22
 
21
23
  private
22
24
 
23
25
  def disallows_invalid_value
24
- disallows_value_of("10.0.0")
26
+ disallows_value_of('10.0.0')
25
27
  end
26
28
 
27
29
  def allows_valid_value
28
- allows_value_of("10.10.10.1/28")
30
+ allows_value_of('10.10.10.1/28')
29
31
  end
30
32
  end
31
33
  end
32
34
  end
33
- end
35
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ValidatesHost
2
4
  class Subnet
3
5
  def initialize(subnet)
@@ -6,7 +8,8 @@ module ValidatesHost
6
8
 
7
9
  def valid?
8
10
  return true if @subnet.blank?
9
- @subnet =~ /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}\/(2[4-9]|30)$/
11
+
12
+ @subnet =~ %r{^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}/(2[4-9]|30)$}
10
13
  end
11
14
  end
12
- end
15
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class SubnetValidator < ActiveModel::EachValidator
2
4
  def validate_each(record, attribute, value)
3
5
  record.errors.add(attribute, :invalid, options) unless ValidatesHost::Subnet.new(value).valid?
4
6
  end
5
- end
7
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ValidatesHost
2
- VERSION = '1.1.0'
3
- end
4
+ VERSION = '1.2.0'
5
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Server
2
4
  include ActiveModel::Validations
3
5
  include ActiveModel::Conversion
@@ -5,13 +7,13 @@ class Server
5
7
 
6
8
  attr_accessor :domain_name, :host_name, :ip
7
9
 
8
- validates :domain_name, :domain_name => true
9
- validates :host_name, :host_name => true
10
- validates :ip, :ip => true
10
+ validates :domain_name, domain_name: true
11
+ validates :host_name, host_name: true
12
+ validates :ip, ip: true
11
13
 
12
14
  def initialize(attributes = {})
13
15
  attributes.each do |name, value|
14
16
  send("#{name}=", value)
15
17
  end
16
18
  end
17
- end
19
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Subnet
2
4
  include ActiveModel::Validations
3
5
  include ActiveModel::Conversion
@@ -5,11 +7,5 @@ class Subnet
5
7
 
6
8
  attr_accessor :id, :value
7
9
 
8
- validates :value, :subnet => true
9
-
10
- def initialize(attributes = {})
11
- attributes.each do |name, value|
12
- send("#{name}=", value)
13
- end
14
- end
15
- end
10
+ validates :value, subnet: true
11
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Shoulda::Matchers::ActiveModel::RequireAValidDomainNameMatcher do
6
+ let(:server) { Server.new }
7
+
8
+ it 'accepts on domain_name' do
9
+ expect(server).to require_a_valid_domain_name(:domain_name)
10
+ end
11
+
12
+ it 'accepts without a specified attribute' do
13
+ expect(server).to require_a_valid_domain_name
14
+ end
15
+
16
+ it 'rejects on host_name' do
17
+ expect(server).not_to require_a_valid_domain_name(:host_name)
18
+ end
19
+
20
+ it 'has a description message' do
21
+ expect(require_a_valid_domain_name.description).to eq('require domain_name to be a valid domain name')
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Shoulda::Matchers::ActiveModel::RequireAValidHostNameMatcher do
6
+ let(:server) { Server.new }
7
+
8
+ it 'accepts on host_name' do
9
+ expect(server).to require_a_valid_host_name(:host_name)
10
+ end
11
+
12
+ it 'accepts without a specified attribute' do
13
+ expect(server).to require_a_valid_host_name
14
+ end
15
+
16
+ it 'rejects on domain_name' do
17
+ expect(server).not_to require_a_valid_host_name(:domain_name)
18
+ end
19
+
20
+ it 'has a description message' do
21
+ expect(require_a_valid_host_name.description).to eq('require host_name to be a valid host name')
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Shoulda::Matchers::ActiveModel::RequireAValidIpMatcher do
6
+ let(:server) { Server.new }
7
+
8
+ it 'accepts on ip' do
9
+ expect(server).to require_a_valid_ip(:ip)
10
+ end
11
+
12
+ it 'accepts without a specified attribute' do
13
+ expect(server).to require_a_valid_ip
14
+ end
15
+
16
+ it 'rejects on domain_name' do
17
+ expect(server).not_to require_a_valid_ip(:domain_name)
18
+ end
19
+
20
+ it 'has a description message' do
21
+ expect(require_a_valid_ip.description).to eq('require ip to be a valid ip')
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Shoulda::Matchers::ActiveModel::RequireAValidSubnetMatcher do
6
+ let(:subnet) { Subnet.new }
7
+
8
+ it 'accepts on value' do
9
+ expect(subnet).to require_a_valid_subnet(:value)
10
+ end
11
+
12
+ it 'accepts without a specified attribute' do
13
+ expect(subnet).to require_a_valid_subnet
14
+ end
15
+
16
+ it 'rejects on id' do
17
+ expect(subnet).not_to require_a_valid_subnet(:id)
18
+ end
19
+
20
+ it 'has a description message' do
21
+ expect(require_a_valid_subnet.description).to eq('require value to be a valid subnet')
22
+ end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec'
2
4
  require 'active_model'
3
5
  require 'coveralls'
@@ -9,4 +11,4 @@ require 'validates_host'
9
11
  require 'fake_app/server'
10
12
  require 'fake_app/subnet'
11
13
 
12
- include Shoulda::Matchers::ActiveModel
14
+ include Shoulda::Matchers::ActiveModel
@@ -1,38 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe DomainNameValidator do
6
+ let(:server) { Server.new }
7
+
4
8
  context 'when domain_name is invalid' do
5
- before :each do
6
- @server = Server.new(:domain_name => 'http://')
9
+ before do
10
+ server.domain_name = 'http://'
11
+ server.valid?
7
12
  end
8
13
 
9
- it 'should set object as invalid' do
10
- expect(@server.valid?).to be_falsey
14
+ it 'sets object as invalid' do
15
+ expect(server).not_to be_valid
11
16
  end
12
17
 
13
- it 'should set an error' do
14
- @server.valid?
15
- expect(@server.errors[:domain_name]).to eq(['is invalid'])
18
+ it 'sets an error' do
19
+ expect(server.errors[:domain_name]).to eq(['is invalid'])
16
20
  end
17
21
  end
18
22
 
19
23
  context 'when domain_name is valid' do
20
- before :each do
21
- @server = Server.new(:domain_name => 'example.com')
24
+ before do
25
+ server.domain_name = 'example.com'
26
+ server.valid?
22
27
  end
23
28
 
24
- it 'should set object as valid' do
25
- expect(@server.valid?).to be_truthy
29
+ it 'sets object as valid' do
30
+ expect(server).to be_valid
26
31
  end
27
32
 
28
- it 'should not set an error on attribute' do
29
- @server.valid?
30
- expect(@server.errors[:domain_name]).to be_blank
33
+ it 'does not set an error on attribute' do
34
+ expect(server.errors[:domain_name]).to be_blank
31
35
  end
32
36
  end
33
37
 
34
- it 'should be valid with a nil value' do
35
- @server = Server.new(:domain_name => nil)
36
- expect(@server.valid?).to be_truthy
38
+ it 'is valid with a nil value' do
39
+ expect(server).to be_valid
37
40
  end
38
- end
41
+ end
@@ -1,38 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe HostNameValidator do
6
+ let(:server) { Server.new }
7
+
4
8
  context 'when host_name is invalid' do
5
- before :each do
6
- @server = Server.new(:host_name => 'http://')
9
+ before do
10
+ server.host_name = 'http://'
11
+ server.valid?
7
12
  end
8
13
 
9
- it 'should set object as invalid' do
10
- expect(@server.valid?).to be_falsey
14
+ it 'sets object as invalid' do
15
+ expect(server).not_to be_valid
11
16
  end
12
17
 
13
- it 'should set an error' do
14
- @server.valid?
15
- expect(@server.errors[:host_name]).to eq(['is invalid'])
18
+ it 'sets an error' do
19
+ expect(server.errors[:host_name]).to eq(['is invalid'])
16
20
  end
17
21
  end
18
22
 
19
23
  context 'when host_name is valid' do
20
- before :each do
21
- @server = Server.new(:host_name => 'bd01')
24
+ before do
25
+ server.host_name = 'bd01'
26
+ server.valid?
22
27
  end
23
28
 
24
- it 'should set object as valid' do
25
- expect(@server.valid?).to be_truthy
29
+ it 'sets object as valid' do
30
+ expect(server).to be_valid
26
31
  end
27
32
 
28
- it 'should not set an error on attribute' do
29
- @server.valid?
30
- expect(@server.errors[:host_name]).to be_blank
33
+ it 'does not set an error on attribute' do
34
+ expect(server.errors[:host_name]).to be_blank
31
35
  end
32
36
  end
33
37
 
34
- it 'should be valid with a nil value' do
35
- @server = Server.new(:host_name => nil)
36
- expect(@server.valid?).to be_truthy
38
+ it 'is valid with a nil value' do
39
+ expect(server).to be_valid
37
40
  end
38
- end
41
+ end
@@ -1,38 +1,56 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe IpValidator do
6
+ let(:server) { Server.new }
7
+
4
8
  context 'when ip is invalid' do
5
- before :each do
6
- @server = Server.new(:ip => '127.0.0')
9
+ before do
10
+ server.ip = '127.0.0'
11
+ server.valid?
12
+ end
13
+
14
+ it 'sets object as invalid' do
15
+ expect(server).not_to be_valid
16
+ end
17
+
18
+ it 'sets an error' do
19
+ expect(server.errors[:ip]).to eq(['is invalid'])
20
+ end
21
+ end
22
+
23
+ context 'when ip is IPV4 valid' do
24
+ before do
25
+ server.ip = '10.10.10.1'
26
+ server.valid?
7
27
  end
8
28
 
9
- it 'should set object as invalid' do
10
- expect(@server.valid?).to be_falsey
29
+ it 'sets object as valid' do
30
+ expect(server).to be_valid
11
31
  end
12
32
 
13
- it 'should set an error' do
14
- @server.valid?
15
- expect(@server.errors[:ip]).to eq(['is invalid'])
33
+ it 'does not set an error on attribute' do
34
+ expect(server.errors[:ip]).to be_blank
16
35
  end
17
36
  end
18
37
 
19
- context 'when ip is valid' do
20
- before :each do
21
- @server = Server.new(:ip => '10.10.10.1')
38
+ context 'when ip is IPV6 valid' do
39
+ before do
40
+ server.ip = 'fd92:fe56:b43a:062e:ffff:ffff:ffff:ffff'
41
+ server.valid?
22
42
  end
23
43
 
24
- it 'should set object as valid' do
25
- expect(@server.valid?).to be_truthy
44
+ it 'sets object as valid' do
45
+ expect(server).to be_valid
26
46
  end
27
47
 
28
- it 'should not set an error on attribute' do
29
- @server.valid?
30
- expect(@server.errors[:ip]).to be_blank
48
+ it 'does not set an error on attribute' do
49
+ expect(server.errors[:ip]).to be_blank
31
50
  end
32
51
  end
33
52
 
34
- it 'should be valid with a nil value' do
35
- @server = Server.new(:ip => nil)
36
- expect(@server.valid?).to be_truthy
53
+ it 'is valid with a nil value' do
54
+ expect(server).to be_valid
37
55
  end
38
- end
56
+ end
@@ -1,38 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe SubnetValidator do
6
+ let(:subnet) { Subnet.new }
7
+
4
8
  context 'when subnet is invalid' do
5
- before :each do
6
- @subnet = Subnet.new(:value => '127.0.0')
9
+ before do
10
+ subnet.value = '127.0.0'
11
+ subnet.valid?
7
12
  end
8
13
 
9
- it 'should set object as invalid' do
10
- expect(@subnet.valid?).to be_falsey
14
+ it 'sets object as invalid' do
15
+ expect(subnet).not_to be_valid
11
16
  end
12
17
 
13
- it 'should set an error' do
14
- @subnet.valid?
15
- expect(@subnet.errors[:value]).to eq(['is invalid'])
18
+ it 'sets an error' do
19
+ expect(subnet.errors[:value]).to eq(['is invalid'])
16
20
  end
17
21
  end
18
22
 
19
23
  context 'when subnet is valid' do
20
- before :each do
21
- @subnet = Subnet.new(:value => '10.10.10.1/28')
24
+ before do
25
+ subnet.value = '10.10.10.1/28'
26
+ subnet.valid?
22
27
  end
23
28
 
24
- it 'should set object as valid' do
25
- expect(@subnet.valid?).to be_truthy
29
+ it 'sets object as valid' do
30
+ expect(subnet).to be_valid
26
31
  end
27
32
 
28
- it 'should not set an error on attribute' do
29
- @subnet.valid?
30
- expect(@subnet.errors[:value]).to be_blank
33
+ it 'does not set an error on attribute' do
34
+ expect(subnet.errors[:value]).to be_blank
31
35
  end
32
36
  end
33
37
 
34
- it 'should be valid with a nil value' do
35
- @subnet = Subnet.new(:value => nil)
36
- expect(@subnet.valid?).to be_truthy
38
+ it 'is valid with a nil value' do
39
+ expect(subnet).to be_valid
37
40
  end
38
- end
41
+ end
@@ -1,24 +1,27 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/validates_host/version', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('lib/validates_host/version', __dir__)
3
4
 
4
5
  Gem::Specification.new do |gem|
5
6
  gem.name = 'validates_host'
6
7
  gem.version = ValidatesHost::VERSION
7
- gem.authors = %q{Paulo Henrique Lopes Ribeiro}
8
- gem.email = %q{plribeiro3000@gmail.com}
9
- gem.summary = %q{Validates Host, Domain and IP and test it with matchers in a simple way.}
8
+ gem.authors = 'Paulo Henrique Lopes Ribeiro'
9
+ gem.email = 'plribeiro3000@gmail.com'
10
+ gem.summary = 'Validates Host, Domain and IP and test it with matchers in a simple way.'
10
11
 
11
- gem.files = `git ls-files`.split($\)
12
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
12
13
  gem.test_files = `git ls-files -- {test,spec,features,examples,gemfiles}/*`.split("\n")
13
- gem.executables = `git ls-files -- bin/*`.split('\n').map{ |f| File.basename(f) }
14
- gem.require_paths = %w(lib)
14
+ gem.executables = `git ls-files -- bin/*`.split('\n').map { |f| File.basename(f) }
15
+ gem.require_paths = %w[lib]
15
16
 
16
17
  gem.license = 'MIT'
17
18
 
19
+ gem.add_development_dependency 'coveralls'
18
20
  gem.add_development_dependency 'rake'
19
21
  gem.add_development_dependency 'rspec'
22
+ gem.add_development_dependency 'rubocop'
23
+ gem.add_development_dependency 'rubocop-rspec'
20
24
  gem.add_development_dependency 'shoulda-matchers'
21
- gem.add_development_dependency 'coveralls'
22
25
 
23
26
  gem.add_dependency 'activemodel', '>= 3.0.0'
24
- end
27
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_host
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Henrique Lopes Ribeiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-08 00:00:00.000000000 Z
11
+ date: 2020-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: coveralls
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +53,7 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: shoulda-matchers
56
+ name: rubocop
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
@@ -53,7 +67,21 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: coveralls
70
+ name: rubocop-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: shoulda-matchers
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - ">="
@@ -88,8 +116,8 @@ extra_rdoc_files: []
88
116
  files:
89
117
  - ".gitignore"
90
118
  - ".rspec"
119
+ - ".rubocop.yml"
91
120
  - ".ruby-gemset"
92
- - ".ruby-version"
93
121
  - ".travis.yml"
94
122
  - Gemfile
95
123
  - LICENSE
@@ -114,14 +142,14 @@ files:
114
142
  - lib/validates_host/version.rb
115
143
  - spec/fake_app/server.rb
116
144
  - spec/fake_app/subnet.rb
145
+ - spec/shoulda/matchers/active_model/require_a_valid_domain_name_matcher_spec.rb
146
+ - spec/shoulda/matchers/active_model/require_a_valid_host_name_matcher_spec.rb
147
+ - spec/shoulda/matchers/active_model/require_a_valid_ip_matcher_spec.rb
148
+ - spec/shoulda/matchers/active_model/require_a_valid_subnet_matcher_spec.rb
117
149
  - spec/spec_helper.rb
118
150
  - spec/validates_host/domain_name_validator_spec.rb
119
151
  - spec/validates_host/host_name_validator_spec.rb
120
152
  - spec/validates_host/ip_validator_spec.rb
121
- - spec/validates_host/require_a_valid_domain_name_matcher_spec.rb
122
- - spec/validates_host/require_a_valid_host_name_matcher_spec.rb
123
- - spec/validates_host/require_a_valid_ip_matcher_spec.rb
124
- - spec/validates_host/require_a_valid_subnet_matcher_spec.rb
125
153
  - spec/validates_host/subnet_validator_spec.rb
126
154
  - validates_host.gemspec
127
155
  homepage:
@@ -143,8 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
171
  - !ruby/object:Gem::Version
144
172
  version: '0'
145
173
  requirements: []
146
- rubyforge_project:
147
- rubygems_version: 2.6.14
174
+ rubygems_version: 3.1.3
148
175
  signing_key:
149
176
  specification_version: 4
150
177
  summary: Validates Host, Domain and IP and test it with matchers in a simple way.
@@ -154,12 +181,12 @@ test_files:
154
181
  - gemfiles/Gemfile.rails5
155
182
  - spec/fake_app/server.rb
156
183
  - spec/fake_app/subnet.rb
184
+ - spec/shoulda/matchers/active_model/require_a_valid_domain_name_matcher_spec.rb
185
+ - spec/shoulda/matchers/active_model/require_a_valid_host_name_matcher_spec.rb
186
+ - spec/shoulda/matchers/active_model/require_a_valid_ip_matcher_spec.rb
187
+ - spec/shoulda/matchers/active_model/require_a_valid_subnet_matcher_spec.rb
157
188
  - spec/spec_helper.rb
158
189
  - spec/validates_host/domain_name_validator_spec.rb
159
190
  - spec/validates_host/host_name_validator_spec.rb
160
191
  - spec/validates_host/ip_validator_spec.rb
161
- - spec/validates_host/require_a_valid_domain_name_matcher_spec.rb
162
- - spec/validates_host/require_a_valid_host_name_matcher_spec.rb
163
- - spec/validates_host/require_a_valid_ip_matcher_spec.rb
164
- - spec/validates_host/require_a_valid_subnet_matcher_spec.rb
165
192
  - spec/validates_host/subnet_validator_spec.rb
@@ -1 +0,0 @@
1
- 2.3.6
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoulda::Matchers::ActiveModel::RequireAValidDomainNameMatcher do
4
- before :each do
5
- @server = Server.new
6
- end
7
-
8
- it 'should accept on domain_name' do
9
- expect(@server).to require_a_valid_domain_name(:domain_name)
10
- end
11
-
12
- it 'should accept without a specified attribute' do
13
- expect(@server).to require_a_valid_domain_name
14
- end
15
-
16
- it 'should reject on host_name' do
17
- expect(@server).not_to require_a_valid_domain_name(:host_name)
18
- end
19
-
20
- it 'should have a description message' do
21
- expect(require_a_valid_domain_name.description).to eq('require domain_name to be a valid domain name')
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoulda::Matchers::ActiveModel::RequireAValidHostNameMatcher do
4
- before :each do
5
- @server = Server.new
6
- end
7
-
8
- it 'should accept on host_name' do
9
- expect(@server).to require_a_valid_host_name(:host_name)
10
- end
11
-
12
- it 'should accept without a specified attribute' do
13
- expect(@server).to require_a_valid_host_name
14
- end
15
-
16
- it 'should reject on domain_name' do
17
- expect(@server).not_to require_a_valid_host_name(:domain_name)
18
- end
19
-
20
- it 'should have a description message' do
21
- expect(require_a_valid_host_name.description).to eq('require host_name to be a valid host name')
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoulda::Matchers::ActiveModel::RequireAValidIpMatcher do
4
- before :each do
5
- @server = Server.new
6
- end
7
-
8
- it 'should accept on ip' do
9
- expect(@server).to require_a_valid_ip(:ip)
10
- end
11
-
12
- it 'should accept without a specified attribute' do
13
- expect(@server).to require_a_valid_ip
14
- end
15
-
16
- it 'should reject on domain_name' do
17
- expect(@server).not_to require_a_valid_ip(:domain_name)
18
- end
19
-
20
- it 'should have a description message' do
21
- expect(require_a_valid_ip.description).to eq('require ip to be a valid ip')
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoulda::Matchers::ActiveModel::RequireAValidSubnetMatcher do
4
- before :each do
5
- @subnet = Subnet.new
6
- end
7
-
8
- it 'should accept on value' do
9
- expect(@subnet).to require_a_valid_subnet(:value)
10
- end
11
-
12
- it 'should accept without a specified attribute' do
13
- expect(@subnet).to require_a_valid_subnet
14
- end
15
-
16
- it 'should reject on id' do
17
- expect(@subnet).not_to require_a_valid_subnet(:id)
18
- end
19
-
20
- it 'should have a description message' do
21
- expect(require_a_valid_subnet.description).to eq('require value to be a valid subnet')
22
- end
23
- end