smart_proxy_dns_infoblox 0.0.3 → 0.0.4
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 +4 -4
- data/config/dns_infoblox.yml.example +8 -0
- data/lib/smart_proxy_dns_infoblox.rb +8 -2
- data/lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb +39 -38
- data/lib/smart_proxy_dns_infoblox/dns_infoblox_plugin.rb +5 -14
- data/lib/smart_proxy_dns_infoblox/dns_infoblox_version.rb +1 -1
- data/lib/smart_proxy_dns_infoblox/plugin_configuration.rb +25 -0
- data/test/configuration_test.rb +28 -0
- data/test/infoblox_test.rb +115 -0
- metadata +10 -64
- data/config/dns_infoblox.yml +0 -8
- data/lib/smart_proxy_dns_infoblox/dns_infoblox_dependencies.rb +0 -5
- data/test/dns_infoblox_record_test.rb +0 -95
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f067a373f17dd6adba9aea33e3084c5e005d3b26
|
4
|
+
data.tar.gz: 6e19878e4ac1cd475a30da5a23632cf35e245ab6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f67055c0fb692c6380c6bcda4b1f56c046d9b39c5c526f80622256b9e31a937efa3c5485b14f9589890e85a2d8322e8f9a52df0d0c09aefd623cba28f0cc410
|
7
|
+
data.tar.gz: 422837060375ce89e38fbedbf5f98ea48c515c21e2c961fb70d57a30391ea659bd9add9e3ab21eae78824dd0f189556ad08a974a4230241c716ee60edbf21efb
|
@@ -1,3 +1,9 @@
|
|
1
|
-
|
1
|
+
module Proxy
|
2
|
+
module Dns
|
3
|
+
module Infoblox; end
|
4
|
+
end
|
5
|
+
end
|
2
6
|
|
3
|
-
|
7
|
+
require 'smart_proxy_dns_infoblox/plugin_configuration'
|
8
|
+
require 'smart_proxy_dns_infoblox/dns_infoblox_version'
|
9
|
+
require 'smart_proxy_dns_infoblox/dns_infoblox_plugin'
|
@@ -1,57 +1,58 @@
|
|
1
|
-
require 'dns/dns'
|
2
|
-
require 'dns_common/dns_common'
|
3
|
-
require 'infoblox'
|
4
1
|
module Proxy::Dns::Infoblox
|
5
2
|
class Record < ::Proxy::Dns::Record
|
6
|
-
|
7
|
-
include Proxy::Util
|
3
|
+
attr_reader :connection
|
8
4
|
|
9
|
-
|
10
|
-
|
11
|
-
def initialize
|
5
|
+
def initialize(host, connection, ttl)
|
12
6
|
ENV['WAPI_VERSION']='2.0'
|
13
|
-
@
|
14
|
-
|
15
|
-
@infoblox_host = ::Proxy::Dns::Infoblox::Plugin.settings.infoblox_host
|
16
|
-
@conn = ::Infoblox::Connection.new(username: @infoblox_user ,password: @infoblox_pw, host: @infoblox_host)
|
17
|
-
super('localhost', ::Proxy::Dns::Plugin.settings.dns_ttl)
|
7
|
+
@connection = connection
|
8
|
+
super(host, ttl)
|
18
9
|
end
|
19
10
|
|
20
|
-
# Calls to these methods are guaranteed to have non-nil parameters
|
21
11
|
def create_a_record(fqdn, ip)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
12
|
+
case a_record_conflicts(fqdn, ip) #returns -1, 0, 1
|
13
|
+
when 1
|
14
|
+
raise(Proxy::Dns::Collision, "'#{fqdn} 'is already in use")
|
15
|
+
when 0 then
|
16
|
+
return nil
|
17
|
+
else
|
18
|
+
do_create(Infoblox::Arecord, :connection => connection, :name => fqdn, :ipv4addr => ip)
|
19
|
+
end
|
26
20
|
end
|
27
21
|
|
28
|
-
def create_ptr_record(fqdn,
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
22
|
+
def create_ptr_record(fqdn, ptr)
|
23
|
+
case ptr_record_conflicts(fqdn, ptr_to_ip(ptr)) #returns -1, 0, 1
|
24
|
+
when 1
|
25
|
+
raise(Proxy::Dns::Collision, "'#{fqdn} 'is already in use")
|
26
|
+
when 0 then
|
27
|
+
return nil
|
28
|
+
else
|
29
|
+
do_create(Infoblox::Ptr, :connection => connection, :ptrdname => fqdn, :ipv4addr => ptr_to_ip(ptr))
|
30
|
+
end
|
35
31
|
# FIXME: add a reverse 'PTR' record with ip, fqdn
|
36
|
-
# Raise an error if the IP is already in DNS but with a different FQDN:
|
37
|
-
# raise(Proxy::Dns::Collision, "#{ip} is already used by #{fqdn_in_use}")
|
38
32
|
end
|
39
33
|
|
40
34
|
def remove_a_record(fqdn)
|
41
|
-
|
42
|
-
a_record.delete || raise(Proxy::Dns::NotFound.new("Cannot find DNS entry for #{fqdn}"))
|
35
|
+
do_delete(Infoblox::Arecord.find(connection, :name => fqdn, :_max_results => 1).first, fqdn)
|
43
36
|
end
|
44
37
|
|
45
|
-
def remove_ptr_record(
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
38
|
+
def remove_ptr_record(ptr)
|
39
|
+
ptr_record = Infoblox::Ptr.find(connection, :ipv4addr => ptr_to_ip(ptr), :_max_results => 1).first
|
40
|
+
unless ptr_record.nil?
|
41
|
+
ptr_record.ipv6addr = nil
|
42
|
+
ptr_record.view = nil
|
43
|
+
end
|
44
|
+
|
45
|
+
do_delete(ptr_record, ptr)
|
52
46
|
# FIXME: remove the reverse 'PTR' record with ip
|
53
|
-
|
54
|
-
|
47
|
+
end
|
48
|
+
|
49
|
+
def do_create(clazz, params)
|
50
|
+
clazz.new(params).post
|
51
|
+
end
|
52
|
+
|
53
|
+
def do_delete(record, id)
|
54
|
+
raise Proxy::Dns::NotFound, "Cannot find DNS entry for #{id}" if record.nil?
|
55
|
+
record.delete || (raise Proxy::Dns::NotFound, "Cannot find DNS entry for #{id}")
|
55
56
|
end
|
56
57
|
end
|
57
58
|
end
|
@@ -1,21 +1,12 @@
|
|
1
|
-
require 'smart_proxy_dns_infoblox/dns_infoblox_version'
|
2
|
-
|
3
1
|
module Proxy::Dns::Infoblox
|
4
2
|
class Plugin < ::Proxy::Provider
|
5
|
-
plugin :dns_infoblox, ::Proxy::Dns::Infoblox::VERSION
|
6
|
-
|
7
|
-
# Settings listed under default_settings are required.
|
8
|
-
# An exception will be raised if they are initialized with nil values.
|
9
|
-
# Settings not listed under default_settings are considered optional and by default have nil value.
|
10
|
-
default_settings :infoblox_user => 'infoblox', :infoblox_pw => 'infoblox', :infoblox_host => 'infoblox.my.domain'
|
3
|
+
plugin :dns_infoblox, ::Proxy::Dns::Infoblox::VERSION
|
11
4
|
|
12
|
-
|
5
|
+
default_settings :username => 'infoblox', :password => 'infoblox', :dns_server => 'infoblox.my.domain'
|
13
6
|
|
14
|
-
|
7
|
+
requires :dns, '>= 1.12'
|
15
8
|
|
16
|
-
|
17
|
-
|
18
|
-
require 'smart_proxy_dns_infoblox/dns_infoblox_dependencies'
|
19
|
-
end
|
9
|
+
load_classes ::Proxy::Dns::Infoblox::PluginConfiguration
|
10
|
+
load_dependency_injection_wirings ::Proxy::Dns::Infoblox::PluginConfiguration
|
20
11
|
end
|
21
12
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Proxy::Dns::Infoblox
|
2
|
+
class PluginConfiguration
|
3
|
+
def load_classes
|
4
|
+
require 'infoblox'
|
5
|
+
require 'dns_common/dns_common'
|
6
|
+
require 'smart_proxy_dns_infoblox/dns_infoblox_main'
|
7
|
+
end
|
8
|
+
|
9
|
+
def load_dependency_injection_wirings(container_instance, settings)
|
10
|
+
container_instance.dependency :connection,
|
11
|
+
(lambda do
|
12
|
+
::Infoblox.wapi_version = '2.0'
|
13
|
+
::Infoblox::Connection.new(:username => settings[:username],
|
14
|
+
:password => settings[:password],
|
15
|
+
:host => settings[:dns_server],
|
16
|
+
:ssl_opts => {:verify => false})
|
17
|
+
end)
|
18
|
+
container_instance.dependency :dns_provider,
|
19
|
+
lambda {::Proxy::Dns::Infoblox::Record.new(
|
20
|
+
settings[:dns_server],
|
21
|
+
container_instance.get_dependency(:connection),
|
22
|
+
settings[:dns_ttl]) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'infoblox'
|
3
|
+
require 'smart_proxy_dns_infoblox/plugin_configuration'
|
4
|
+
|
5
|
+
class InfobloxProviderWiringTest < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@container = ::Proxy::DependencyInjection::Container.new
|
8
|
+
@config = ::Proxy::Dns::Infoblox::PluginConfiguration.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_connection_wiring
|
12
|
+
@config.load_dependency_injection_wirings(@container, :username => 'user', :password => 'password', :dns_server => 'a_host')
|
13
|
+
connection = @container.get_dependency(:connection)
|
14
|
+
|
15
|
+
assert_equal 'user', connection.username
|
16
|
+
assert_equal 'password', connection.password
|
17
|
+
assert_equal 'https://a_host', connection.host
|
18
|
+
assert_equal({:verify => false}, connection.ssl_opts)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_dns_provider_wiring
|
22
|
+
@config.load_dependency_injection_wirings(@container, :username => 'user', :password => 'password', :dns_server => 'a_host')
|
23
|
+
provider = @container.get_dependency(:dns_provider)
|
24
|
+
|
25
|
+
assert !provider.connection.nil?
|
26
|
+
assert_equal 'a_host', provider.server
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'dns_common/dns_common'
|
3
|
+
require 'infoblox'
|
4
|
+
require 'smart_proxy_dns_infoblox/dns_infoblox_main'
|
5
|
+
|
6
|
+
|
7
|
+
class InfobloxTest < Test::Unit::TestCase
|
8
|
+
class DummyRecord
|
9
|
+
attr_accessor :ipv6addr, :view
|
10
|
+
end
|
11
|
+
|
12
|
+
def setup
|
13
|
+
@connection = Object.new
|
14
|
+
@record = DummyRecord.new
|
15
|
+
@provider = Proxy::Dns::Infoblox::Record.new('a_host', @connection, 999)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_create_a
|
19
|
+
fqdn = 'test.example.com'
|
20
|
+
ip = '10.1.1.1'
|
21
|
+
|
22
|
+
@provider.expects(:a_record_conflicts).with(fqdn, ip).returns(-1)
|
23
|
+
@provider.expects(:do_create).with(Infoblox::Arecord, :connection => @connection, :name => fqdn, :ipv4addr => ip)
|
24
|
+
|
25
|
+
@provider.create_a_record(fqdn, ip)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_create_a_conflicting_record
|
29
|
+
fqdn = 'test.example.com'
|
30
|
+
ip = '10.1.1.1'
|
31
|
+
|
32
|
+
@provider.expects(:a_record_conflicts).with(fqdn, ip).returns(1)
|
33
|
+
assert_raises(Proxy::Dns::Collision) { @provider.create_a_record(fqdn, ip) }
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_create_a_already_exists
|
37
|
+
fqdn = 'test.example.com'
|
38
|
+
ip = '10.1.1.1'
|
39
|
+
|
40
|
+
@provider.expects(:a_record_conflicts).with(fqdn, ip).returns(0)
|
41
|
+
assert_nil @provider.create_a_record(fqdn, ip)
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_create_ptr
|
45
|
+
fqdn = 'test.example.com'
|
46
|
+
ptr = '1.1.1.10.in-addr.arpa'
|
47
|
+
ip = '10.1.1.1'
|
48
|
+
|
49
|
+
@provider.expects(:ptr_record_conflicts).with(fqdn, ip).returns(-1)
|
50
|
+
@provider.expects(:do_create).with(Infoblox::Ptr, :connection => @connection, :ptrdname => fqdn, :ipv4addr => ip)
|
51
|
+
|
52
|
+
@provider.create_ptr_record(fqdn, ptr)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_create_ptr_conflicting_record
|
56
|
+
fqdn = 'test.example.com'
|
57
|
+
ptr = '1.1.1.10.in-addr.arpa'
|
58
|
+
ip = '10.1.1.1'
|
59
|
+
|
60
|
+
@provider.expects(:ptr_record_conflicts).with(fqdn, ip).returns(1)
|
61
|
+
assert_raises(Proxy::Dns::Collision) { @provider.create_ptr_record(fqdn, ptr) }
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_create_ptr_already_exists
|
65
|
+
fqdn = 'test.example.com'
|
66
|
+
ptr = '1.1.1.10.in-addr.arpa'
|
67
|
+
ip = '10.1.1.1'
|
68
|
+
|
69
|
+
@provider.expects(:ptr_record_conflicts).with(fqdn, ip).returns(0)
|
70
|
+
assert_nil @provider.create_ptr_record(fqdn, ptr)
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_remove_a
|
74
|
+
fqdn = 'test.example.com'
|
75
|
+
Infoblox::Arecord.expects(:find).with(@connection, :name => fqdn, :_max_results => 1).returns([@record])
|
76
|
+
@record.expects(:delete).returns(true)
|
77
|
+
@provider.remove_a_record(fqdn)
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_remove_a_not_found
|
81
|
+
fqdn = 'test.example.com'
|
82
|
+
Infoblox::Arecord.expects(:find).with(@connection, :name => fqdn, :_max_results => 1).returns([])
|
83
|
+
assert_raises(Proxy::Dns::NotFound) { @provider.remove_a_record(fqdn) }
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_remove_a_returns_with_a_non_200_status
|
87
|
+
fqdn = 'test.example.com'
|
88
|
+
Infoblox::Arecord.expects(:find).with(@connection, :name => fqdn, :_max_results => 1).returns([@record])
|
89
|
+
@record.expects(:delete).returns(false)
|
90
|
+
assert_raises(Proxy::Dns::NotFound) { @provider.remove_a_record(fqdn) }
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_remove_ptr
|
94
|
+
ptr = '1.1.1.10.in-addr.arpa'
|
95
|
+
ip = '10.1.1.1'
|
96
|
+
Infoblox::Ptr.expects(:find).with(@connection, :ipv4addr => ip, :_max_results => 1).returns([@record])
|
97
|
+
@record.expects(:delete).returns(true)
|
98
|
+
@provider.remove_ptr_record(ptr)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_remove_ptr_not_found
|
102
|
+
ptr = '1.1.1.10.in-addr.arpa'
|
103
|
+
ip = '10.1.1.1'
|
104
|
+
Infoblox::Ptr.expects(:find).with(@connection, :ipv4addr => ip, :_max_results => 1).returns([])
|
105
|
+
assert_raises(Proxy::Dns::NotFound) { @provider.remove_ptr_record(ptr) }
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_remove_ptr_returns_with_a_non_200_status
|
109
|
+
ptr = '1.1.1.10.in-addr.arpa'
|
110
|
+
ip = '10.1.1.1'
|
111
|
+
Infoblox::Ptr.expects(:find).with(@connection, :ipv4addr => ip, :_max_results => 1).returns([@record])
|
112
|
+
@record.expects(:delete).returns(false)
|
113
|
+
assert_raises(Proxy::Dns::NotFound) { @provider.remove_ptr_record(ptr) }
|
114
|
+
end
|
115
|
+
end
|
metadata
CHANGED
@@ -1,71 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_proxy_dns_infoblox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Nicholson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: infoblox
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: mocha
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: test-unit
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
11
|
+
date: 2016-09-08 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
69
13
|
description: Infoblox DNS provider plugin for Foreman's smart proxy
|
70
14
|
email:
|
71
15
|
- matthew.a.nicholson@gmail.com
|
@@ -76,13 +20,14 @@ files:
|
|
76
20
|
- LICENSE
|
77
21
|
- README.md
|
78
22
|
- bundler.d/dns_infoblox.rb
|
79
|
-
- config/dns_infoblox.yml
|
23
|
+
- config/dns_infoblox.yml.example
|
80
24
|
- lib/smart_proxy_dns_infoblox.rb
|
81
|
-
- lib/smart_proxy_dns_infoblox/dns_infoblox_dependencies.rb
|
82
25
|
- lib/smart_proxy_dns_infoblox/dns_infoblox_main.rb
|
83
26
|
- lib/smart_proxy_dns_infoblox/dns_infoblox_plugin.rb
|
84
27
|
- lib/smart_proxy_dns_infoblox/dns_infoblox_version.rb
|
85
|
-
-
|
28
|
+
- lib/smart_proxy_dns_infoblox/plugin_configuration.rb
|
29
|
+
- test/configuration_test.rb
|
30
|
+
- test/infoblox_test.rb
|
86
31
|
- test/test_helper.rb
|
87
32
|
homepage: https://github.com/sjoeboo/smart_proxy_dns_infoblox
|
88
33
|
licenses:
|
@@ -104,10 +49,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
49
|
version: '0'
|
105
50
|
requirements: []
|
106
51
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
52
|
+
rubygems_version: 2.2.2
|
108
53
|
signing_key:
|
109
54
|
specification_version: 4
|
110
55
|
summary: Infoblox DNS provider plugin for Foreman's smart proxy
|
111
56
|
test_files:
|
112
|
-
- test/
|
57
|
+
- test/configuration_test.rb
|
58
|
+
- test/infoblox_test.rb
|
113
59
|
- test/test_helper.rb
|
data/config/dns_infoblox.yml
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'dns/dns_plugin'
|
3
|
-
require 'smart_proxy_dns_infoblox/dns_infoblox_plugin'
|
4
|
-
require 'smart_proxy_dns_infoblox/dns_infoblox_main'
|
5
|
-
|
6
|
-
|
7
|
-
class DnsInfobloxRecordTest < Test::Unit::TestCase
|
8
|
-
|
9
|
-
def test_default_settings
|
10
|
-
Proxy::Dns::Infoblox::Plugin.load_test_settings({})
|
11
|
-
assert_equal "default_value", Proxy::Dns::Nsupdate::Plugin.settings.required_setting
|
12
|
-
assert_equal "/must/exist", Proxy::Dns::Nsupdate::Plugin.settings.required_path
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_initialized_correctly
|
16
|
-
Proxy::Dns::Infoblox::Plugin.load_test_settings(:example_setting => 'a_value',
|
17
|
-
:required_setting => 'required_setting',
|
18
|
-
:optional_path => '/some/path',
|
19
|
-
:required_path => '/required/path')
|
20
|
-
|
21
|
-
assert_equal 'a_value', klass.new.example_setting
|
22
|
-
assert_equal 'required_value', klass.new.required_setting
|
23
|
-
assert_equal '/some/path', klass.new.optional_path
|
24
|
-
assert_equal '/required/path', klass.new.required_path
|
25
|
-
end
|
26
|
-
|
27
|
-
# Test that a missing :example_setting throws an error
|
28
|
-
# Test A record creation
|
29
|
-
def test_create_a
|
30
|
-
# Use mocha to expect any calls to backend services to prevent creating real records
|
31
|
-
# MyService.expects(:create).with(:ip => '10.1.1.1', :name => 'test.example.com').returns(true)
|
32
|
-
|
33
|
-
assert klass.new.create_a_record('test.example.com', '10.1.1.1')
|
34
|
-
end
|
35
|
-
|
36
|
-
# Test A record creation fails if the record exists
|
37
|
-
def test_create_a_conflict
|
38
|
-
# Use mocha to expect any calls to backend services to prevent creating real records
|
39
|
-
# MyService.expects(:create).with(:ip => '10.1.1.1', :name => 'test.example.com').returns(false)
|
40
|
-
|
41
|
-
assert_raise(Proxy::Dns::Collision) { klass.new.create_a_record('test.example.com', '10.1.1.1') }
|
42
|
-
end
|
43
|
-
|
44
|
-
# Test PTR record creation
|
45
|
-
def test_create_ptr
|
46
|
-
# Use mocha to expect any calls to backend services to prevent creating real records
|
47
|
-
# MyService.expects(:create_reverse).with(:ip => '10.1.1.1', :name => 'test.example.com').returns(true)
|
48
|
-
|
49
|
-
assert klass.new.create_ptr_record('test.example.com', '10.1.1.1')
|
50
|
-
end
|
51
|
-
|
52
|
-
# Test PTR record creation fails if the record exists
|
53
|
-
def test_create_ptr_conflict
|
54
|
-
# Use mocha to expect any calls to backend services to prevent creating real records
|
55
|
-
# MyService.expects(:create_reverse).with(:ip => '10.1.1.1', :name => 'test.example.com').returns(false)
|
56
|
-
|
57
|
-
assert_raise(Proxy::Dns::Collision) { klass.new.create_ptr_record('test.example.com', '10.1.1.1') }
|
58
|
-
end
|
59
|
-
|
60
|
-
# Test A record removal
|
61
|
-
def test_remove_a
|
62
|
-
# Use mocha to expect any calls to backend services to prevent deleting real records
|
63
|
-
# MyService.expects(:delete).with(:name => 'test.example.com').returns(true)
|
64
|
-
|
65
|
-
assert klass.new.remove_a_record('test.example.com')
|
66
|
-
end
|
67
|
-
|
68
|
-
# Test A record removal fails if the record doesn't exist
|
69
|
-
def test_remove_a_not_found
|
70
|
-
# Use mocha to expect any calls to backend services to prevent deleting real records
|
71
|
-
# MyService.expects(:delete).with(:name => 'test.example.com').returns(false)
|
72
|
-
|
73
|
-
assert_raise(Proxy::Dns::NotFound) { assert klass.new.remove_a_record('test.example.com') }
|
74
|
-
end
|
75
|
-
|
76
|
-
# Test PTR record removal
|
77
|
-
def test_remove_ptr
|
78
|
-
# Use mocha to expect any calls to backend services to prevent deleting real records
|
79
|
-
# MyService.expects(:delete).with(:ip => '10.1.1.1').returns(true)
|
80
|
-
|
81
|
-
assert klass.new.remove_ptr_record('1.1.1.10.in-addr.arpa')
|
82
|
-
end
|
83
|
-
|
84
|
-
# Test PTR record removal fails if the record doesn't exist
|
85
|
-
def test_remove_ptr_not_found
|
86
|
-
# Use mocha to expect any calls to backend services to prevent deleting real records
|
87
|
-
# MyService.expects(:delete).with(:ip => '10.1.1.1').returns(false)
|
88
|
-
|
89
|
-
assert_raise(Proxy::Dns::NotFound) { assert klass.new.remove_ptr_record('1.1.1.10.in-addr.arpa') }
|
90
|
-
end
|
91
|
-
|
92
|
-
def klass
|
93
|
-
Proxy::Dns::Infoblox::Record
|
94
|
-
end
|
95
|
-
end
|