Project

General

Profile

« Previous | Next » 

Revision 69afd342

Added by Dmitri Dolguikh almost 8 years ago

Fixes #15942 - dns module and providers use updated di config.

View differences:

modules/dns/configuration_loader.rb
module ::Proxy::Dns
class ConfigurationLoader
def load_classes
require 'dns_common/dns_common'
require 'dns/dependency_injection'
require 'dns/dns_api'
end
end
end
modules/dns/dependency_injection.rb
module Proxy::Dns
module DependencyInjection
include Proxy::DependencyInjection::Accessors
def container_instance
@container_instance ||= ::Proxy::Plugins.instance.find {|p| p[:name] == :dns }[:di_container]
end
end
end
modules/dns/dns.rb
require 'dns/configuration_loader'
require 'dns/dns_plugin'
modules/dns/dns_api.rb
require 'dns_common/dns_common'
require 'ipaddr'
module Proxy::Dns
class Api < ::Sinatra::Base
extend Proxy::Dns::DependencyInjection::Injectors
extend Proxy::Dns::DependencyInjection
inject_attr :dns_provider, :server
helpers ::Proxy::Helpers
modules/dns/dns_plugin.rb
default_settings :use_provider => 'dns_nsupdate', :dns_ttl => 86_400
plugin :dns, ::Proxy::VERSION
after_activation do
require 'dns_common/dependency_injection/container'
require 'dns_common/dependency_injection/dependencies'
end
load_classes ::Proxy::Dns::ConfigurationLoader
end
end
modules/dns_common/dependency_injection/container.rb
module Proxy::Dns
module DependencyInjection
class Container < Proxy::DependencyInjection::Container; end
module Wiring
include Proxy::DependencyInjection::Wiring
def container_instance
Container.instance
end
end
module Injectors
include Proxy::DependencyInjection::Accessors
def container_instance
Container.instance
end
end
end
end
modules/dns_common/dependency_injection/dependencies.rb
require 'dns_common/dependency_injection/container'
module Proxy::Dns
module DependencyInjection
class Dependencies
extend Proxy::Dns::DependencyInjection::Wiring
extend Proxy::Log
extend Proxy::DependencyInjection::Wiring
def self.container_instance
logger.warn('Proxy::Dns::DependencyInjection::Dependencies class has been deprecated and will be removed in future versions. '\
'Please use ::Proxy::Dns::YourPlugin#load_dependency_injection_wirings instead.')
@container_instance ||= ::Proxy::Plugins.instance.find {|p| p[:name] == :dns }[:di_container]
end
end
end
end
modules/dns_dnscmd/dependencies.rb
require 'dns_common/dependency_injection/dependencies'
class Proxy::Dns::DependencyInjection::Dependencies
dependency :dns_provider, Proxy::Dns::Dnscmd::Record
end
modules/dns_dnscmd/dns_dnscmd.rb
require 'dns_dnscmd/plugin_configuration'
require 'dns_dnscmd/dns_dnscmd_plugin'
modules/dns_dnscmd/dns_dnscmd_main.rb
require 'open3'
require 'dns_common/dns_common'
module Proxy::Dns::Dnscmd
class Record < ::Proxy::Dns::Record
include Proxy::Log
include Proxy::Util
def initialize(a_server = nil, a_ttl = nil)
super(a_server || ::Proxy::Dns::Dnscmd::Plugin.settings.dns_server,
a_ttl || ::Proxy::Dns::Plugin.settings.dns_ttl)
def initialize(a_server, a_ttl)
super(a_server, a_ttl)
end
def create_a_record(fqdn, ip)
modules/dns_dnscmd/dns_dnscmd_plugin.rb
requires :dns, ::Proxy::VERSION
after_activation do
require 'dns_dnscmd/dns_dnscmd_main'
require 'dns_dnscmd/dependencies'
end
load_classes ::Proxy::Dns::Dnscmd::PluginConfiguration
load_dependency_injection_wirings ::Proxy::Dns::Dnscmd::PluginConfiguration
end
end
modules/dns_dnscmd/plugin_configuration.rb
module ::Proxy::Dns::Dnscmd
class PluginConfiguration
def load_classes
require 'dns_common/dns_common'
require 'dns_dnscmd/dns_dnscmd_main'
end
def load_dependency_injection_wirings(container_instance, settings)
container_instance.dependency :dns_provider, lambda {::Proxy::Dns::Dnscmd::Record.new(settings[:dns_server], settings[:dns_ttl]) }
end
end
end
modules/dns_libvirt/dependencies.rb
require 'dns_common/dependency_injection/dependencies'
class Proxy::Dns::DependencyInjection::Dependencies
dependency :dns_provider, Proxy::Dns::Libvirt::Record
end
modules/dns_libvirt/dns_libvirt.rb
require 'dns_libvirt/plugin_configuration'
require 'dns_libvirt/dns_libvirt_plugin'
modules/dns_libvirt/dns_libvirt_main.rb
require 'dns_libvirt/libvirt_dns_network'
require 'rexml/document'
require 'dns_common/dns_common'
module Proxy::Dns::Libvirt
class Record < ::Proxy::Dns::Record
......
attr_reader :libvirt_network, :network
def initialize(options = {})
@network = options[:network] || Proxy::Dns::Libvirt::Plugin.settings.network
@libvirt_network = options[:libvirt_network] || ::Proxy::Dns::Libvirt::LibvirtDNSNetwork.new(
options[:url] || Proxy::Dns::Libvirt::Plugin.settings.url,
@network)
def initialize(network, libvirt_network)
@network = network
@libvirt_network = libvirt_network
super(@network)
end
modules/dns_libvirt/dns_libvirt_plugin.rb
default_settings :url => "qemu:///system", :network => 'default'
after_activation do
require 'dns_libvirt/dns_libvirt_main'
require 'dns_libvirt/dependencies'
end
load_classes ::Proxy::Dns::Libvirt::PluginConfiguration
load_dependency_injection_wirings ::Proxy::Dns::Libvirt::PluginConfiguration
end
end
modules/dns_libvirt/plugin_configuration.rb
module ::Proxy::Dns::Libvirt
class PluginConfiguration
def load_classes
require 'dns_common/dns_common'
require 'dns_libvirt/libvirt_dns_network'
require 'dns_libvirt/dns_libvirt_main'
end
def load_dependency_injection_wirings(container_instance, settings)
container_instance.dependency :libvirt_network, lambda {::Proxy::Dns::Libvirt::LibvirtDNSNetwork.new(settings[:url], settings[:network]) }
container_instance.dependency :dns_provider, lambda {::Proxy::Dns::Libvirt::Record.new(settings[:network], container_instance.get_dependency(:libvirt_network)) }
end
end
end
modules/dns_nsupdate/dns_nsupdate.rb
require 'dns_nsupdate/nsupdate_configuration'
require 'dns_nsupdate/dns_nsupdate_plugin'
modules/dns_nsupdate/dns_nsupdate_gss.rb
require 'dns_nsupdate/nsupdate_gss_configuration'
require 'dns_nsupdate/dns_nsupdate_gss_plugin'
modules/dns_nsupdate/dns_nsupdate_gss_main.rb
include Proxy::Kerberos
attr_reader :tsig_keytab, :tsig_principal
def initialize(a_server = nil, a_ttl = nil)
@tsig_keytab = ::Proxy::Dns::NsupdateGSS::Plugin.settings.dns_tsig_keytab
@tsig_principal = ::Proxy::Dns::NsupdateGSS::Plugin.settings.dns_tsig_principal
super(a_server || ::Proxy::Dns::NsupdateGSS::Plugin.settings.dns_server,
a_ttl || ::Proxy::Dns::Plugin.settings.dns_ttl)
def initialize(a_server, a_ttl, tsig_keytab, tsig_principal)
@tsig_keytab = tsig_keytab
@tsig_principal = tsig_principal
super(a_server, a_ttl, nil)
end
def nsupdate_args
modules/dns_nsupdate/dns_nsupdate_gss_plugin.rb
validate_readable :dns_tsig_keytab
after_activation do
require 'dns_nsupdate/dns_nsupdate_gss_main'
require 'dns_nsupdate/nsupdate_gss_dependencies'
end
load_classes ::Proxy::Dns::NsupdateGSS::PluginConfiguration
load_dependency_injection_wirings ::Proxy::Dns::NsupdateGSS::PluginConfiguration
end
end
modules/dns_nsupdate/dns_nsupdate_main.rb
require 'resolv'
require 'dns_common/dns_common'
module Proxy::Dns::Nsupdate
class Record < ::Proxy::Dns::Record
include Proxy::Log
include Proxy::Util
def initialize(a_server = nil, a_ttl = nil)
super(a_server || ::Proxy::Dns::Nsupdate::Plugin.settings.dns_server,
a_ttl || ::Proxy::Dns::Plugin.settings.dns_ttl)
attr_reader :dns_key
def initialize(a_server, a_ttl, dns_key)
@dns_key = dns_key
super(a_server, a_ttl)
end
def create_a_record(fqdn, ip)
......
end
def nsupdate_args
args = ""
args = "-k #{Proxy::Dns::Nsupdate::Plugin.settings.dns_key} " if Proxy::Dns::Nsupdate::Plugin.settings.dns_key
args
dns_key.nil? ? '' : "-k #{dns_key} "
end
def nsupdate_connect
modules/dns_nsupdate/dns_nsupdate_plugin.rb
validate_readable :dns_key
after_activation do
require 'dns_nsupdate/dns_nsupdate_main'
require 'dns_nsupdate/nsupdate_dependencies'
end
load_classes ::Proxy::Dns::Nsupdate::PluginConfiguration
load_dependency_injection_wirings ::Proxy::Dns::Nsupdate::PluginConfiguration
end
end
modules/dns_nsupdate/nsupdate_configuration.rb
module ::Proxy::Dns::Nsupdate
class PluginConfiguration
def load_classes
require 'dns_common/dns_common'
require 'dns_nsupdate/dns_nsupdate_main'
end
def load_dependency_injection_wirings(container_instance, settings)
container_instance.dependency :dns_provider, lambda {::Proxy::Dns::Nsupdate::Record.new(settings[:dns_server], settings[:dns_ttl], settings[:dns_key]) }
end
end
end
modules/dns_nsupdate/nsupdate_dependencies.rb
require 'dns_common/dependency_injection/dependencies'
class Proxy::Dns::DependencyInjection::Dependencies
dependency :dns_provider, Proxy::Dns::Nsupdate::Record
end
modules/dns_nsupdate/nsupdate_gss_configuration.rb
module ::Proxy::Dns::NsupdateGSS
class PluginConfiguration
def load_classes
require 'dns_common/dns_common'
require 'dns_nsupdate/dns_nsupdate_gss_main'
end
def load_dependency_injection_wirings(container_instance, settings)
container_instance.dependency :dns_provider,
lambda { ::Proxy::Dns::NsupdateGSS::Record.new(settings[:dns_server], settings[:dns_ttl], settings[:dns_tsig_keytab], settings[:dns_tsig_principal]) }
end
end
end
modules/dns_nsupdate/nsupdate_gss_dependencies.rb
require 'dns_common/dependency_injection/dependencies'
class Proxy::Dns::DependencyInjection::Dependencies
dependency :dns_provider, Proxy::Dns::NsupdateGSS::Record
end
test/dns/dns_api_test.rb
require 'test_helper'
require 'dns_common/dependency_injection/container'
require 'dns/dns_api'
ENV['RACK_ENV'] = 'test'
class DnsApiTest < Test::Unit::TestCase
class DnsApiTestProvider
attr_reader :fqdn, :ip, :type, :target
def create_a_record(fqdn, ip)
@fqdn = fqdn; @ip = ip; @type = 'A'
end
def create_aaaa_record(fqdn, ip)
@fqdn = fqdn; @ip = ip; @type = 'AAAA'
end
def create_ptr_record(fqdn, ip)
@fqdn = fqdn; @ip = ip; @type = 'PTR'
end
def create_cname_record(fqdn, target)
@fqdn = fqdn; @target = target; @type = 'CNAME'
end
def remove_a_record(fqdn)
@fqdn = fqdn; @type = 'A'
end
def remove_aaaa_record(fqdn)
@fqdn = fqdn; @type = 'AAAA'
end
def remove_ptr_record(ip)
@ip = ip; @type = 'PTR'
end
def remove_cname_record(fqdn)
@fqdn = fqdn; @type = 'CNAME'
class DnsApiTestProvider
attr_reader :fqdn, :ip, :type, :target
def create_a_record(fqdn, ip)
@fqdn = fqdn; @ip = ip; @type = 'A'
end
def create_aaaa_record(fqdn, ip)
@fqdn = fqdn; @ip = ip; @type = 'AAAA'
end
def create_ptr_record(fqdn, ip)
@fqdn = fqdn; @ip = ip; @type = 'PTR'
end
def create_cname_record(fqdn, target)
@fqdn = fqdn; @target = target; @type = 'CNAME'
end
def remove_a_record(fqdn)
@fqdn = fqdn; @type = 'A'
end
def remove_aaaa_record(fqdn)
@fqdn = fqdn; @type = 'AAAA'
end
def remove_ptr_record(ip)
@ip = ip; @type = 'PTR'
end
def remove_cname_record(fqdn)
@fqdn = fqdn; @type = 'CNAME'
end
end
module Proxy::Dns
module DependencyInjection
include Proxy::DependencyInjection::Accessors
def container_instance
Proxy::DependencyInjection::Container.new do |c|
c.dependency :dns_provider, DnsApiTestProvider
end
end
end
end
require 'dns/dns_api'
class DnsApiTest < Test::Unit::TestCase
include Rack::Test::Methods
def app
app = Proxy::Dns::Api.new
@server = DnsApiTestProvider.new
app.helpers.server = @server
app
@app = Proxy::Dns::Api.new
@server = @app.helpers.server
@app
end
def test_create_a_record
test/dns_dnscmd/dnscmd_config_test.rb
require 'test_helper'
require 'dns_dnscmd/plugin_configuration'
require 'dns_dnscmd/dns_dnscmd_plugin'
class DnsCmdConfigTest < Test::Unit::TestCase
def test_default_config
def test_default_configuration
::Proxy::Dns::Dnscmd::Plugin.load_test_settings({})
assert_equal 'localhost', ::Proxy::Dns::Dnscmd::Plugin.settings.dns_server
end
end
class DnsCmdWiringTest < Test::Unit::TestCase
def setup
@container = ::Proxy::DependencyInjection::Container.new
@config = ::Proxy::Dns::Dnscmd::PluginConfiguration.new
end
def test_dns_provider_wiring
@config.load_dependency_injection_wirings(@container, :dns_server => 'dnscmd_test', :dns_ttl => 999)
provider = @container.get_dependency(:dns_provider)
assert_equal 'dnscmd_test', provider.server
assert_equal 999, provider.ttl
end
end
test/dns_dnscmd/dnscmd_test.rb
"TrustAnchors"])
end
def test_dnscmd_provider_initialization
Proxy::Dns::Dnscmd::Plugin.load_test_settings(:dns_server => 'a_server')
Proxy::Dns::Plugin.load_test_settings(:dns_ttl => 999)
server = Proxy::Dns::Dnscmd::Record.new
assert_equal "a_server", server.server
assert_equal 999, server.ttl
end
def test_create_a_record_with_longest_zone_match
Proxy::Dns::Dnscmd::Record.any_instance.expects(:a_record_conflicts).with('host.foo.bar.domain.local', '192.168.33.33').returns(-1)
Proxy::Dns::Dnscmd::Record.any_instance.expects(:execute).with('/RecordAdd bar.domain.local host.foo.bar.domain.local. A 192.168.33.33', anything).returns(true)
......
end
def test_dns_zone_matches_sole_available_zone
assert_equal('sole.domain', Proxy::Dns::Dnscmd::Record.new.match_zone('host.foo.bar.sole.domain', ["sole.domain"]))
assert_equal('sole.domain', Proxy::Dns::Dnscmd::Record.new('server', 999).match_zone('host.foo.bar.sole.domain', ["sole.domain"]))
end
def test_dns_non_authoritative_zone_raises_exception
......
"f.e.e.d.8.b.d.0.1.0.0.2.ip6.arpa",
"bar.domain.local",
"domain.local",
"TrustAnchors"], Proxy::Dns::Dnscmd::Record.new.enum_zones
"TrustAnchors"], Proxy::Dns::Dnscmd::Record.new('server', 999).enum_zones
end
end
test/dns_libvirt/dns_libvirt_configuration_test.rb
require 'test_helper'
require 'dns_libvirt/plugin_configuration'
require 'dns_libvirt/dns_libvirt_main'
class DnsLibvirtConfigTest < Test::Unit::TestCase
def test_default_settings
::Proxy::Dns::Libvirt::Plugin.load_test_settings({})
assert_equal 'default', Proxy::Dns::Libvirt::Plugin.settings.network
end
end
class DnsLibvirtWiringTest < Test::Unit::TestCase
def setup
@container = ::Proxy::DependencyInjection::Container.new
@config = ::Proxy::Dns::Libvirt::PluginConfiguration.new
end
def test_libvirt_network_wiring
@config.load_dependency_injection_wirings(@container, :url => 'test:///default', :network => 'test_network')
network = @container.get_dependency(:libvirt_network)
assert_equal 'test:///default', network.url
assert_equal 'test_network', network.network
end
def test_dns_provider_wiring
@config.load_dependency_injection_wirings(@container, :url => 'test:///default', :network => 'test_network')
provider = @container.get_dependency(:dns_provider)
assert !provider.libvirt_network.nil?
assert_equal 'test_network', provider.network
end
end
test/dns_libvirt/dns_libvirt_provider_test.rb
require 'test_helper'
require 'dns_libvirt/plugin_configuration'
require 'dns_libvirt/dns_libvirt_plugin'
require 'dns_libvirt/dns_libvirt_main'
......
XMLFIXTURE
@libvirt_network = mock()
@libvirt_network.stubs(:dump_xml).returns(fixture)
@subject = Proxy::Dns::Libvirt::Record.new(
:libvirt_network => @libvirt_network
)
end
def test_default_settings
::Proxy::Dns::Libvirt::Plugin.load_test_settings({})
assert_equal 'default', Proxy::Dns::Libvirt::Plugin.settings.network
end
def test_provider_initialization
::Proxy::Dns::Libvirt::Plugin.load_test_settings(:network => 'some_network')
assert_equal "some_network", Proxy::Dns::Libvirt::Record.new(:libvirt_network => @libvirt_network).network
end
def test_libvirt_network_class
assert_equal ::Proxy::Dns::Libvirt::LibvirtDNSNetwork, ::Proxy::Dns::Libvirt::Record.new.libvirt_network.class
@subject = Proxy::Dns::Libvirt::Record.new('default', @libvirt_network)
end
def test_add_a_record
test/dns_nsupdate/dns_nsupdate_config_test.rb
require 'test_helper'
require 'dns/dns'
require 'dns_nsupdate/dns_nsupdate'
require 'dns_nsupdate/dns_nsupdate_gss'
......
Proxy::Dns::NsupdateGSS::Plugin.load_test_settings({})
assert_equal "localhost", Proxy::Dns::NsupdateGSS::Plugin.settings.dns_server
assert_nil Proxy::Dns::NsupdateGSS::Plugin.settings.dns_key
assert_equal '/usr/share/foreman-proxy/dns.keytab', Proxy::Dns::NsupdateGSS::Plugin.settings.dns_tsig_keytab
assert_equal 'DNS/host.example.com@EXAMPLE.COM', Proxy::Dns::NsupdateGSS::Plugin.settings.dns_tsig_principal
end
end
require 'dns_nsupdate/nsupdate_configuration'
class DnsNsupdateWiringTest < Test::Unit::TestCase
def setup
@container = ::Proxy::DependencyInjection::Container.new
@config = ::Proxy::Dns::Nsupdate::PluginConfiguration.new
end
def test_dns_provider_wiring
@config.load_dependency_injection_wirings(@container, :dns_server => 'dnscmd_test', :dns_ttl => 999, :dns_key => 'dns_key')
provider = @container.get_dependency(:dns_provider)
assert_equal 'dnscmd_test', provider.server
assert_equal 999, provider.ttl
assert_equal 'dns_key', provider.dns_key
end
end
class DnsNsupdateGSSWiringTest < Test::Unit::TestCase
def setup
@container = ::Proxy::DependencyInjection::Container.new
@config = ::Proxy::Dns::NsupdateGSS::PluginConfiguration.new
end
def test_dns_provider_wiring
@config.load_dependency_injection_wirings(@container, :dns_server => 'dnscmd_test', :dns_ttl => 999,
:dns_tsig_keytab => 'keytab', :dns_tsig_principal => 'principal')
provider = @container.get_dependency(:dns_provider)
assert_equal 'dnscmd_test', provider.server
assert_equal 999, provider.ttl
assert_equal 'keytab', provider.tsig_keytab
assert_equal 'principal', provider.tsig_principal
end
end
test/dns_nsupdate/dns_nsupdate_test.rb
require 'dns_nsupdate/dns_nsupdate_gss_main'
class DnsNsupdateTest < Test::Unit::TestCase
def test_nsupdate_provider_initialization
Proxy::Dns::Nsupdate::Plugin.load_test_settings(:dns_server => 'a_server')
Proxy::Dns::Plugin.load_test_settings(:dns_ttl => 999)
server = Proxy::Dns::Nsupdate::Record.new
assert_equal "a_server", server.server
assert_equal 999, server.ttl
end
def test_nsupdate_gss_provider_initialization
Proxy::Dns::Plugin.load_test_settings(:dns_ttl => 999)
Proxy::Dns::NsupdateGSS::Plugin.load_test_settings(:dns_server => 'a_server', :dns_tsig_principal => "test@test.com",
:dns_tsig_keytab => "keytab")
server = Proxy::Dns::NsupdateGSS::Record.new
assert_equal "a_server", server.server
assert_equal 999, server.ttl
assert_equal 'test@test.com', server.tsig_principal
assert_equal 'keytab', server.tsig_keytab
end
def test_create_ptr_record
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate_connect).returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate).with('update add 33.33.168.192.in-addr.arpa. 100 PTR some.host').returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate_disconnect).returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:ptr_record_conflicts).with('some.host', '192.168.33.33').returns(-1)
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100).create_ptr_record('some.host', '33.33.168.192.in-addr.arpa')
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_ptr_record('some.host', '33.33.168.192.in-addr.arpa')
end
def test_overwrite_ptr_record
Proxy::Dns::Nsupdate::Record.any_instance.expects(:ptr_record_conflicts).with('some.host', '192.168.33.33').returns(0)
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100).create_ptr_record('some.host', '33.33.168.192.in-addr.arpa')
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_ptr_record('some.host', '33.33.168.192.in-addr.arpa')
end
def test_create_duplicate_ptr_record_fails
Proxy::Dns::Nsupdate::Record.any_instance.expects(:ptr_record_conflicts).with('some.host', '192.168.33.33').returns(1)
assert_raise Proxy::Dns::Collision do
Proxy::Dns::Nsupdate::Record.new(nil, 100).create_ptr_record('some.host', '33.33.168.192.in-addr.arpa')
Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_ptr_record('some.host', '33.33.168.192.in-addr.arpa')
end
end
......
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate_disconnect).returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:a_record_conflicts).with('some.host', '192.168.33.33').returns(-1)
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100).create_a_record('some.host', '192.168.33.33')
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_a_record('some.host', '192.168.33.33')
end
def test_overwrite_address_record
Proxy::Dns::Nsupdate::Record.any_instance.expects(:a_record_conflicts).with('some.host', '192.168.33.33').returns(0)
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100).create_a_record('some.host', '192.168.33.33')
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_a_record('some.host', '192.168.33.33')
end
def test_create_duplicate_address_record_fails
Proxy::Dns::Nsupdate::Record.any_instance.expects(:a_record_conflicts).with('some.host', '192.168.33.33').returns(1)
assert_raise Proxy::Dns::Collision do
Proxy::Dns::Nsupdate::Record.new(nil, 100).create_a_record('some.host', '192.168.33.33')
Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_a_record('some.host', '192.168.33.33')
end
end
def test_remove_cname_record_fails
assert_raise Proxy::Dns::Error do
Proxy::Dns::Nsupdate::Record.new(nil, 100).remove_cname_record('some.host')
Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).remove_cname_record('some.host')
end
end
......
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate_disconnect).returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:aaaa_record_conflicts).with('some.host', '2001:db8::1').returns(-1)
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100).create_aaaa_record('some.host', '2001:db8::1')
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_aaaa_record('some.host', '2001:db8::1')
end
def test_overwrite_aaaa_record
Proxy::Dns::Nsupdate::Record.any_instance.expects(:aaaa_record_conflicts).with('some.host', '2001:db8::1').returns(0)
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100).create_aaaa_record('some.host', '2001:db8::1')
assert_nil Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_aaaa_record('some.host', '2001:db8::1')
end
def test_create_duplicate_aaaa_record_fails
Proxy::Dns::Nsupdate::Record.any_instance.expects(:aaaa_record_conflicts).with('some.host', '2001:db8::1').returns(1)
assert_raise Proxy::Dns::Collision do
Proxy::Dns::Nsupdate::Record.new(nil, 100).create_aaaa_record('some.host', '2001:db8::1')
Proxy::Dns::Nsupdate::Record.new(nil, 100, nil).create_aaaa_record('some.host', '2001:db8::1')
end
end
......
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate_disconnect).returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:dns_find).with('33.33.168.192.in-addr.arpa').returns(true)
assert_nil Proxy::Dns::Nsupdate::Record.new.remove_ptr_record('33.33.168.192.in-addr.arpa')
assert_nil Proxy::Dns::Nsupdate::Record.new('a_server', 999, nil).remove_ptr_record('33.33.168.192.in-addr.arpa')
end
def test_remove_ptr_v6_record
......
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate_disconnect).returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:dns_find).with('1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa').returns(true)
assert_nil Proxy::Dns::Nsupdate::Record.new.remove_ptr_record('1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa')
assert_nil Proxy::Dns::Nsupdate::Record.new('a_server', 999, nil).remove_ptr_record('1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa')
end
def test_remove_address_record
......
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate_disconnect).returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:dns_find).with('some.host').returns(true)
assert_nil Proxy::Dns::Nsupdate::Record.new.remove_a_record('some.host')
assert_nil Proxy::Dns::Nsupdate::Record.new('a_server', 999, nil).remove_a_record('some.host')
end
def test_remove_address_record_raises_exception_if_host_does_not_exist
......
Proxy::Dns::Nsupdate::Record.any_instance.stubs(:nsupdate_connect).returns(true)
assert_raise Proxy::Dns::NotFound do
Proxy::Dns::Nsupdate::Record.new.remove_a_record('not_existing.example.com')
Proxy::Dns::Nsupdate::Record.new('a_server', 999, nil).remove_a_record('not_existing.example.com')
end
end
......
Proxy::Dns::Nsupdate::Record.any_instance.expects(:nsupdate_disconnect).returns(true)
Proxy::Dns::Nsupdate::Record.any_instance.expects(:dns_find).with('some.host').returns(true)
assert_nil Proxy::Dns::Nsupdate::Record.new.remove_aaaa_record('some.host')
assert_nil Proxy::Dns::Nsupdate::Record.new('a_server', 999, nil).remove_aaaa_record('some.host')
end
def test_remove_aaaa_record_raises_exception_if_host_does_not_exist
......
Proxy::Dns::Nsupdate::Record.any_instance.stubs(:nsupdate_connect).returns(true)
assert_raise Proxy::Dns::NotFound do
Proxy::Dns::Nsupdate::Record.new.remove_aaaa_record('not_existing.example.com')
Proxy::Dns::Nsupdate::Record.new('a_server', 999, nil).remove_aaaa_record('not_existing.example.com')
end
end
......
Proxy::Dns::Nsupdate::Record.any_instance.expects(:dns_find).with('33.33.168.192.in-addr.arpa').returns(false)
assert_raise Proxy::Dns::NotFound do
Proxy::Dns::Nsupdate::Record.new.remove_ptr_record('33.33.168.192.in-addr.arpa')
Proxy::Dns::Nsupdate::Record.new('a_server', 999, nil).remove_ptr_record('33.33.168.192.in-addr.arpa')
end
end
def test_uses_dns_key_if_defined
Proxy::Dns::Nsupdate::Plugin.load_test_settings(:dns_key => '/path/to/key')
assert_equal "-k /path/to/key ", Proxy::Dns::Nsupdate::Record.new.nsupdate_args
assert_equal "-k /path/to/key ", Proxy::Dns::Nsupdate::Record.new('a_server', 999, '/path/to/key').nsupdate_args
end
end

Also available in: Unified diff