Revision 69afd342
Added by Dmitri Dolguikh almost 8 years ago
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
Fixes #15942 - dns module and providers use updated di config.