diff options
| author | Luke Kanies <luke@madstop.com> | 2007-10-15 19:36:32 -0500 |
|---|---|---|
| committer | Luke Kanies <luke@madstop.com> | 2007-10-15 19:36:32 -0500 |
| commit | a815f7888b021a46332c23450795f057533d0093 (patch) | |
| tree | a2f8081e47750c7782db9c3751ec4091f3f7424f /spec | |
| parent | 694f98b4d9e7172cec58d407bc5aeae7861e1a06 (diff) | |
| download | puppet-a815f7888b021a46332c23450795f057533d0093.tar.gz puppet-a815f7888b021a46332c23450795f057533d0093.tar.xz puppet-a815f7888b021a46332c23450795f057533d0093.zip | |
Reorganizing the file structure for indirection terminus types.
Previously, for example, the configuration terminus that was a
subclass of 'code' would have been stored at
lib/puppet/indirector/code/configuration and would have had
to have been named 'configuration'. Now, the subclass
can be named however the author prefers, and it must be stored
at lib/puppet/indirector/configuration/<name>.rb, where <name>
is the name you've chosen for the terminus type. The name only
matters insomuch as it is used to load the file from disk and
find the appropriate class when asked.
The additional restriction is that the class constant for the terminus
type must have its name as the last word, and the indirection must
be the second to last word. Thus, in our example, we can choose
any class constant that ends with Configuration::Code; given that
there's only one Configuration class at this point, it makes the
most sense to define the class as Puppet::Node::Configuration::Code.
This is somewhat awkward, because of the class's location on disk,
but the only other real option is to autogenerate a
Puppet::Indirector::Configuration class constant, which is, I think,
uglier.
Diffstat (limited to 'spec')
27 files changed, 210 insertions, 207 deletions
diff --git a/spec/unit/indirector/file/checksum.rb b/spec/unit/indirector/checksum/file.rb index 539bb973c..82319fa40 100755 --- a/spec/unit/indirector/file/checksum.rb +++ b/spec/unit/indirector/checksum/file.rb @@ -5,12 +5,12 @@ require File.dirname(__FILE__) + '/../../../spec_helper' -require 'puppet/indirector/file/checksum' +require 'puppet/indirector/checksum/file' module FileChecksumTesting def setup Puppet.settings.stubs(:use) - @store = Puppet::Indirector::File::Checksum.new + @store = Puppet::Checksum::File.new @value = "70924d6fa4b2d745185fa4660703a5c0" @sum = stub 'sum', :name => @value @@ -23,24 +23,24 @@ module FileChecksumTesting end end -describe Puppet::Indirector::File::Checksum do +describe Puppet::Checksum::File do it "should be a subclass of the File terminus class" do - Puppet::Indirector::File::Checksum.superclass.should equal(Puppet::Indirector::File) + Puppet::Checksum::File.superclass.should equal(Puppet::Indirector::File) end it "should have documentation" do - Puppet::Indirector::File::Checksum.doc.should be_instance_of(String) + Puppet::Checksum::File.doc.should be_instance_of(String) end end -describe Puppet::Indirector::File::Checksum, " when initializing" do +describe Puppet::Checksum::File, " when initializing" do it "should use the filebucket settings section" do Puppet.settings.expects(:use).with(:filebucket) - Puppet::Indirector::File::Checksum.new + Puppet::Checksum::File.new end end -describe Puppet::Indirector::File::Checksum, " when determining file paths" do +describe Puppet::Checksum::File, " when determining file paths" do include FileChecksumTesting # I was previously passing the object in. @@ -71,7 +71,7 @@ describe Puppet::Indirector::File::Checksum, " when determining file paths" do end end -describe Puppet::Indirector::File::Checksum, " when retrieving files" do +describe Puppet::Checksum::File, " when retrieving files" do include FileChecksumTesting # The smallest test that will use the calculated path @@ -103,7 +103,7 @@ describe Puppet::Indirector::File::Checksum, " when retrieving files" do end end -describe Puppet::Indirector::File::Checksum, " when saving files" do +describe Puppet::Checksum::File, " when saving files" do include FileChecksumTesting # LAK:FIXME I don't know how to include in the spec the fact that we're @@ -129,7 +129,7 @@ describe Puppet::Indirector::File::Checksum, " when saving files" do end end -describe Puppet::Indirector::File::Checksum, " when deleting files" do +describe Puppet::Checksum::File, " when deleting files" do include FileChecksumTesting it "should remove the file at the calculated path" do diff --git a/spec/unit/indirector/code.rb b/spec/unit/indirector/code.rb index f34dcf402..3eb7540ef 100755 --- a/spec/unit/indirector/code.rb +++ b/spec/unit/indirector/code.rb @@ -12,7 +12,7 @@ describe Puppet::Indirector::Code do @code_class = Class.new(Puppet::Indirector::Code) do def self.to_s - "Testing" + "Mystuff::Testing" end end diff --git a/spec/unit/indirector/code/configuration.rb b/spec/unit/indirector/configuration/compiler.rb index b2a23ac19..cb9dc7162 100755 --- a/spec/unit/indirector/code/configuration.rb +++ b/spec/unit/indirector/configuration/compiler.rb @@ -5,9 +5,9 @@ require File.dirname(__FILE__) + '/../../../spec_helper' -require 'puppet/indirector/code/configuration' +require 'puppet/indirector/configuration/compiler' -describe Puppet::Indirector::Code::Configuration do +describe Puppet::Node::Configuration::Compiler do before do Puppet.expects(:version).returns(1) Facter.expects(:value).with('fqdn').returns("my.server.com") @@ -15,11 +15,11 @@ describe Puppet::Indirector::Code::Configuration do end it "should gather data about itself" do - Puppet::Indirector::Code::Configuration.new + Puppet::Node::Configuration::Compiler.new end it "should cache the server metadata and reuse it" do - compiler = Puppet::Indirector::Code::Configuration.new + compiler = Puppet::Node::Configuration::Compiler.new node1 = stub 'node1', :merge => nil node2 = stub 'node2', :merge => nil compiler.stubs(:compile) @@ -31,16 +31,16 @@ describe Puppet::Indirector::Code::Configuration do end it "should provide a method for determining if the configuration is networked" do - compiler = Puppet::Indirector::Code::Configuration.new + compiler = Puppet::Node::Configuration::Compiler.new compiler.should respond_to(:networked?) end end -describe Puppet::Indirector::Code::Configuration, " when creating the interpreter" do +describe Puppet::Node::Configuration::Compiler, " when creating the interpreter" do before do # This gets pretty annoying on a plane where we have no IP address Facter.stubs(:value).returns("whatever") - @compiler = Puppet::Indirector::Code::Configuration.new + @compiler = Puppet::Node::Configuration::Compiler.new end it "should not create the interpreter until it is asked for the first time" do @@ -57,10 +57,10 @@ describe Puppet::Indirector::Code::Configuration, " when creating the interprete end end -describe Puppet::Indirector::Code::Configuration, " when finding nodes" do +describe Puppet::Node::Configuration::Compiler, " when finding nodes" do before do Facter.stubs(:value).returns("whatever") - @compiler = Puppet::Indirector::Code::Configuration.new + @compiler = Puppet::Node::Configuration::Compiler.new @name = "me" @node = mock 'node' @compiler.stubs(:compile) @@ -79,13 +79,13 @@ describe Puppet::Indirector::Code::Configuration, " when finding nodes" do end end -describe Puppet::Indirector::Code::Configuration, " after finding nodes" do +describe Puppet::Node::Configuration::Compiler, " after finding nodes" do before do Puppet.expects(:version).returns(1) Puppet.settings.stubs(:value).with(:node_name).returns("cert") Facter.expects(:value).with('fqdn').returns("my.server.com") Facter.expects(:value).with('ipaddress').returns("my.ip.address") - @compiler = Puppet::Indirector::Code::Configuration.new + @compiler = Puppet::Node::Configuration::Compiler.new @name = "me" @node = mock 'node' @compiler.stubs(:compile) @@ -115,10 +115,10 @@ describe Puppet::Indirector::Code::Configuration, " after finding nodes" do end end -describe Puppet::Indirector::Code::Configuration, " when creating configurations" do +describe Puppet::Node::Configuration::Compiler, " when creating configurations" do before do Facter.stubs(:value).returns("whatever") - @compiler = Puppet::Indirector::Code::Configuration.new + @compiler = Puppet::Node::Configuration::Compiler.new @name = "me" @node = Puppet::Node.new @name, :environment => "yay" @node.stubs(:merge) @@ -155,11 +155,11 @@ describe Puppet::Indirector::Code::Configuration, " when creating configurations end end -describe Puppet::Indirector::Code::Configuration, " when determining a client's available configuration version" do +describe Puppet::Node::Configuration::Compiler, " when determining a client's available configuration version" do before do Puppet::Node::Facts.stubs(:find).returns(nil) Facter.stubs(:value).returns("whatever") - @configuration = Puppet::Indirector::Code::Configuration.new + @configuration = Puppet::Node::Configuration::Compiler.new @name = "johnny" end diff --git a/spec/unit/indirector/configuration/yaml.rb b/spec/unit/indirector/configuration/yaml.rb new file mode 100755 index 000000000..b9f3f40d1 --- /dev/null +++ b/spec/unit/indirector/configuration/yaml.rb @@ -0,0 +1,25 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../../spec_helper' + +require 'puppet/node/configuration' +require 'puppet/indirector/configuration/yaml' + +describe Puppet::Node::Configuration::Yaml do + it "should be a subclass of the Yaml terminus" do + Puppet::Node::Configuration::Yaml.superclass.should equal(Puppet::Indirector::Yaml) + end + + it "should have documentation" do + Puppet::Node::Configuration::Yaml.doc.should_not be_nil + end + + it "should be registered with the configuration store indirection" do + indirection = Puppet::Indirector::Indirection.instance(:configuration) + Puppet::Node::Configuration::Yaml.indirection.should equal(indirection) + end + + it "should have its name set to :yaml" do + Puppet::Node::Configuration::Yaml.name.should == :yaml + end +end diff --git a/spec/unit/indirector/exec.rb b/spec/unit/indirector/exec.rb index 42fbe0955..3baf06629 100755 --- a/spec/unit/indirector/exec.rb +++ b/spec/unit/indirector/exec.rb @@ -6,11 +6,11 @@ require 'puppet/indirector/exec' describe Puppet::Indirector::Exec do before do - @indirection = mock 'indirection' + @indirection = stub 'indirection', :name => :testing Puppet::Indirector::Indirection.expects(:instance).with(:testing).returns(@indirection) @exec_class = Class.new(Puppet::Indirector::Exec) do def self.to_s - "Testing" + "Testing::Mytype" end attr_accessor :command diff --git a/spec/unit/indirector/code/facts.rb b/spec/unit/indirector/facts/facter.rb index 9b645617f..e8ea721d3 100755 --- a/spec/unit/indirector/code/facts.rb +++ b/spec/unit/indirector/facts/facter.rb @@ -5,37 +5,37 @@ require File.dirname(__FILE__) + '/../../../spec_helper' -require 'puppet/indirector/code/facts' +require 'puppet/indirector/facts/facter' -describe Puppet::Indirector::Code::Facts do +describe Puppet::Node::Facts::Facter do it "should be a subclass of the Code terminus" do - Puppet::Indirector::Code::Facts.superclass.should equal(Puppet::Indirector::Code) + Puppet::Node::Facts::Facter.superclass.should equal(Puppet::Indirector::Code) end it "should have documentation" do - Puppet::Indirector::Code::Facts.doc.should_not be_nil + Puppet::Node::Facts::Facter.doc.should_not be_nil end it "should be registered with the configuration store indirection" do indirection = Puppet::Indirector::Indirection.instance(:facts) - Puppet::Indirector::Code::Facts.indirection.should equal(indirection) + Puppet::Node::Facts::Facter.indirection.should equal(indirection) end - it "should have its name set to :facts" do - Puppet::Indirector::Code::Facts.name.should == :facts + it "should have its name set to :facter" do + Puppet::Node::Facts::Facter.name.should == :facter end end module TestingCodeFacts def setup - @facter = Puppet::Indirector::Code::Facts.new + @facter = Puppet::Node::Facts::Facter.new Facter.stubs(:to_hash).returns({}) @name = "me" @facts = @facter.find(@name) end end -describe Puppet::Indirector::Code::Facts, " when finding facts" do +describe Puppet::Node::Facts::Facter, " when finding facts" do include TestingCodeFacts it "should return a Facts instance" do @@ -53,7 +53,7 @@ describe Puppet::Indirector::Code::Facts, " when finding facts" do end end -describe Puppet::Indirector::Code::Facts, " when saving facts" do +describe Puppet::Node::Facts::Facter, " when saving facts" do include TestingCodeFacts it "should fail" do @@ -61,7 +61,7 @@ describe Puppet::Indirector::Code::Facts, " when saving facts" do end end -describe Puppet::Indirector::Code::Facts, " when destroying facts" do +describe Puppet::Node::Facts::Facter, " when destroying facts" do include TestingCodeFacts it "should fail" do diff --git a/spec/unit/indirector/yaml/facts.rb b/spec/unit/indirector/facts/yaml.rb index f1256cfa4..8b49fa3b5 100755 --- a/spec/unit/indirector/yaml/facts.rb +++ b/spec/unit/indirector/facts/yaml.rb @@ -3,24 +3,24 @@ require File.dirname(__FILE__) + '/../../../spec_helper' require 'puppet/node/facts' -require 'puppet/indirector/yaml/facts' +require 'puppet/indirector/facts/yaml' -describe Puppet::Indirector::Yaml::Facts do +describe Puppet::Node::Facts::Yaml do it "should be a subclass of the Yaml terminus" do - Puppet::Indirector::Yaml::Facts.superclass.should equal(Puppet::Indirector::Yaml) + Puppet::Node::Facts::Yaml.superclass.should equal(Puppet::Indirector::Yaml) end it "should have documentation" do - Puppet::Indirector::Yaml::Facts.doc.should_not be_nil + Puppet::Node::Facts::Yaml.doc.should_not be_nil end it "should be registered with the facts indirection" do indirection = Puppet::Indirector::Indirection.instance(:facts) - Puppet::Indirector::Yaml::Facts.indirection.should equal(indirection) + Puppet::Node::Facts::Yaml.indirection.should equal(indirection) end it "should have its name set to :facts" do - Puppet::Indirector::Yaml::Facts.name.should == :facts + Puppet::Node::Facts::Yaml.name.should == :yaml end end diff --git a/spec/unit/indirector/file.rb b/spec/unit/indirector/file.rb index cc86f9fa9..216c9bfe1 100755 --- a/spec/unit/indirector/file.rb +++ b/spec/unit/indirector/file.rb @@ -12,7 +12,7 @@ module FileTerminusTesting @file_class = Class.new(Puppet::Indirector::File) do def self.to_s - "Testing" + "Testing::Mytype" end end diff --git a/spec/unit/indirector/indirection.rb b/spec/unit/indirector/indirection.rb index 25152d123..455b5dc67 100755 --- a/spec/unit/indirector/indirection.rb +++ b/spec/unit/indirector/indirection.rb @@ -137,17 +137,17 @@ describe Puppet::Indirector::Indirection, " when specifying terminus types" do end it "should fail when the specified terminus class cannot be found" do - Puppet::Indirector::Terminus.expects(:terminus_class).with(:foo, :test).returns(nil) + Puppet::Indirector::Terminus.expects(:terminus_class).with(:test, :foo).returns(nil) proc { @indirection.terminus_class = :foo }.should raise_error(ArgumentError) end it "should select the specified terminus class if a terminus class name is provided" do - Puppet::Indirector::Terminus.expects(:terminus_class).with(:foo, :test).returns(@terminus_class) + Puppet::Indirector::Terminus.expects(:terminus_class).with(:test, :foo).returns(@terminus_class) @indirection.terminus(:foo).should equal(@terminus) end it "should use the configured terminus class if no terminus name is specified" do - Puppet::Indirector::Terminus.stubs(:terminus_class).with(:foo, :test).returns(@terminus_class) + Puppet::Indirector::Terminus.stubs(:terminus_class).with(:test, :foo).returns(@terminus_class) @indirection.terminus_class = :foo @indirection.terminus().should equal(@terminus) end @@ -162,7 +162,7 @@ describe Puppet::Indirector::Indirection, " when managing terminus instances" do @indirection = Puppet::Indirector::Indirection.new(mock('model'), :test) @terminus = mock 'terminus' @terminus_class = mock 'terminus class' - Puppet::Indirector::Terminus.stubs(:terminus_class).with(:foo, :test).returns(@terminus_class) + Puppet::Indirector::Terminus.stubs(:terminus_class).with(:test, :foo).returns(@terminus_class) end it "should create an instance of the chosen terminus class" do @@ -203,7 +203,7 @@ describe Puppet::Indirector::Indirection, " when deciding whether to cache" do @terminus = mock 'terminus' @terminus_class = mock 'terminus class' @terminus_class.stubs(:new).returns(@terminus) - Puppet::Indirector::Terminus.stubs(:terminus_class).with(:foo, :test).returns(@terminus_class) + Puppet::Indirector::Terminus.stubs(:terminus_class).with(:test, :foo).returns(@terminus_class) @indirection.terminus_class = :foo end @@ -224,7 +224,7 @@ describe Puppet::Indirector::Indirection, " when deciding whether to cache" do end it "should fail to set the cache class when the specified cache class cannot be found" do - Puppet::Indirector::Terminus.expects(:terminus_class).with(:foo, :test).returns(nil) + Puppet::Indirector::Terminus.expects(:terminus_class).with(:test, :foo).returns(nil) proc { @indirection.cache_class = :foo }.should raise_error(ArgumentError) end @@ -242,8 +242,8 @@ module IndirectionCaching @terminus_class.stubs(:new).returns(@terminus) @cache = mock 'cache' @cache_class = mock 'cache_class' - Puppet::Indirector::Terminus.stubs(:terminus_class).with(:cache_terminus, :test).returns(@cache_class) - Puppet::Indirector::Terminus.stubs(:terminus_class).with(:test_terminus, :test).returns(@terminus_class) + Puppet::Indirector::Terminus.stubs(:terminus_class).with(:test, :cache_terminus).returns(@cache_class) + Puppet::Indirector::Terminus.stubs(:terminus_class).with(:test, :test_terminus).returns(@terminus_class) @indirection = Puppet::Indirector::Indirection.new(mock('model'), :test) @indirection.terminus_class = :test_terminus end diff --git a/spec/unit/indirector/indirector.rb b/spec/unit/indirector/indirector.rb index 1f63da30d..64c7bdfca 100755 --- a/spec/unit/indirector/indirector.rb +++ b/spec/unit/indirector/indirector.rb @@ -46,7 +46,7 @@ describe Puppet::Indirector, "when registering an indirection" do it "should allow specification of a default terminus" do klass = mock 'terminus class' - Puppet::Indirector::Terminus.stubs(:terminus_class).with(:foo, :first).returns(klass) + Puppet::Indirector::Terminus.stubs(:terminus_class).with(:first, :foo).returns(klass) @indirection = @thingie.indirects :first, :terminus_class => :foo @indirection.terminus_class.should == :foo end diff --git a/spec/unit/indirector/ldap.rb b/spec/unit/indirector/ldap.rb index fe9408986..6712ccb4f 100755 --- a/spec/unit/indirector/ldap.rb +++ b/spec/unit/indirector/ldap.rb @@ -6,11 +6,11 @@ require 'puppet/indirector/ldap' describe Puppet::Indirector::Ldap, " when searching ldap" do before do - @indirection = mock 'indirection' + @indirection = stub 'indirection', :name => :testing Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection) @ldap_class = Class.new(Puppet::Indirector::Ldap) do def self.to_s - "Testing" + "Testing::Mytype" end end diff --git a/spec/unit/indirector/memory.rb b/spec/unit/indirector/memory.rb index ac6f055ce..c0fca6bd9 100755 --- a/spec/unit/indirector/memory.rb +++ b/spec/unit/indirector/memory.rb @@ -42,7 +42,7 @@ describe Puppet::Indirector::Memory do @memory_class = Class.new(Puppet::Indirector::Memory) do def self.to_s - "Testing" + "Mystuff::Testing" end end diff --git a/spec/unit/indirector/exec/node.rb b/spec/unit/indirector/node/exec.rb index 47f4ce7a5..744a32b0a 100755 --- a/spec/unit/indirector/exec/node.rb +++ b/spec/unit/indirector/node/exec.rb @@ -2,13 +2,13 @@ require File.dirname(__FILE__) + '/../../../spec_helper' -require 'puppet/indirector/exec/node' +require 'puppet/indirector/node/exec' -describe Puppet::Indirector::Exec::Node, " when constructing the command to run" do +describe Puppet::Node::Exec, " when constructing the command to run" do before do @indirection = mock 'indirection' Puppet.settings.stubs(:value).with(:external_nodes).returns("/echo") - @searcher = Puppet::Indirector::Exec::Node.new + @searcher = Puppet::Node::Exec.new end it "should use the external_node script as the command" do @@ -22,11 +22,11 @@ describe Puppet::Indirector::Exec::Node, " when constructing the command to run" end end -describe Puppet::Indirector::Exec::Node, " when handling the results of the command" do +describe Puppet::Node::Exec, " when handling the results of the command" do before do @indirection = mock 'indirection' Puppet.settings.stubs(:value).with(:external_nodes).returns("/echo") - @searcher = Puppet::Indirector::Exec::Node.new + @searcher = Puppet::Node::Exec.new @node = stub 'node', :fact_merge => nil @name = "yay" Puppet::Node.expects(:new).with(@name).returns(@node) diff --git a/spec/unit/indirector/ldap/node.rb b/spec/unit/indirector/node/ldap.rb index 6667efdd5..8c6888357 100755 --- a/spec/unit/indirector/ldap/node.rb +++ b/spec/unit/indirector/node/ldap.rb @@ -2,11 +2,11 @@ require File.dirname(__FILE__) + '/../../../spec_helper' -require 'puppet/indirector/ldap/node' +require 'puppet/indirector/node/ldap' module LdapNodeSearching def setup - @searcher = Puppet::Indirector::Ldap::Node.new + @searcher = Puppet::Node::Ldap.new @entries = {} entries = @entries @@ -26,7 +26,7 @@ module LdapNodeSearching end end -describe Puppet::Indirector::Ldap::Node, " when searching for nodes" do +describe Puppet::Node::Ldap, " when searching for nodes" do include LdapNodeSearching it "should return nil if no results are found in ldap" do @@ -82,7 +82,7 @@ describe Puppet::Indirector::Ldap::Node, " when searching for nodes" do end end -describe Puppet::Indirector::Ldap::Node, " when a parent node is specified" do +describe Puppet::Node::Ldap, " when a parent node is specified" do include LdapNodeSearching before do @@ -169,9 +169,9 @@ describe Puppet::Indirector::Ldap::Node, " when a parent node is specified" do end end -describe Puppet::Indirector::Ldap::Node, " when developing the search query" do +describe Puppet::Node::Ldap, " when developing the search query" do before do - @searcher = Puppet::Indirector::Ldap::Node.new + @searcher = Puppet::Node::Ldap.new end it "should return the value of the :ldapclassattrs split on commas as the class attributes" do @@ -208,9 +208,9 @@ describe Puppet::Indirector::Ldap::Node, " when developing the search query" do end end -describe Puppet::Indirector::Ldap::Node, " when deciding attributes to search for" do +describe Puppet::Node::Ldap, " when deciding attributes to search for" do before do - @searcher = Puppet::Indirector::Ldap::Node.new + @searcher = Puppet::Node::Ldap.new end it "should use 'nil' if the :ldapattrs setting is 'all'" do diff --git a/spec/unit/indirector/memory/node.rb b/spec/unit/indirector/node/memory.rb index cba4af53a..f57cae818 100755 --- a/spec/unit/indirector/memory/node.rb +++ b/spec/unit/indirector/node/memory.rb @@ -2,16 +2,16 @@ require File.dirname(__FILE__) + '/../../../spec_helper' -require 'puppet/indirector/memory/node' +require 'puppet/indirector/node/memory' # All of our behaviour is described here, so we always have to # include it. require 'unit/indirector/memory' -describe Puppet::Indirector::Memory::Node do +describe Puppet::Node::Memory do before do @name = "me" - @searcher = Puppet::Indirector::Memory::Node.new + @searcher = Puppet::Node::Memory.new @instance = stub 'instance', :name => @name end diff --git a/spec/unit/indirector/null/node.rb b/spec/unit/indirector/node/null.rb index c589e5820..8125e59a1 100755 --- a/spec/unit/indirector/null/node.rb +++ b/spec/unit/indirector/node/null.rb @@ -2,11 +2,11 @@ require File.dirname(__FILE__) + '/../../../spec_helper' -require 'puppet/indirector/null/node' +require 'puppet/indirector/node/null' -describe Puppet::Indirector::Null::Node do +describe Puppet::Node::Null do before do - @searcher = Puppet::Indirector::Null::Node.new + @searcher = Puppet::Node::Null.new end it "should call node_merge() on the returned node" do diff --git a/spec/unit/indirector/node/rest.rb b/spec/unit/indirector/node/rest.rb new file mode 100755 index 000000000..33cfda426 --- /dev/null +++ b/spec/unit/indirector/node/rest.rb @@ -0,0 +1,13 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../../spec_helper' + +require 'puppet/indirector/node/rest' + +describe Puppet::Node::REST do + before do + @searcher = Puppet::Node::REST.new + end + + +end diff --git a/spec/unit/indirector/yaml/node.rb b/spec/unit/indirector/node/yaml.rb index a14171b05..2e6c14c71 100755 --- a/spec/unit/indirector/yaml/node.rb +++ b/spec/unit/indirector/node/yaml.rb @@ -3,23 +3,23 @@ require File.dirname(__FILE__) + '/../../../spec_helper' require 'puppet/node' -require 'puppet/indirector/yaml/node' +require 'puppet/indirector/node/yaml' -describe Puppet::Indirector::Yaml::Node do +describe Puppet::Node::Yaml do it "should be a subclass of the Yaml terminus" do - Puppet::Indirector::Yaml::Node.superclass.should equal(Puppet::Indirector::Yaml) + Puppet::Node::Yaml.superclass.should equal(Puppet::Indirector::Yaml) end it "should have documentation" do - Puppet::Indirector::Yaml::Node.doc.should_not be_nil + Puppet::Node::Yaml.doc.should_not be_nil end it "should be registered with the configuration store indirection" do indirection = Puppet::Indirector::Indirection.instance(:node) - Puppet::Indirector::Yaml::Node.indirection.should equal(indirection) + Puppet::Node::Yaml.indirection.should equal(indirection) end it "should have its name set to :node" do - Puppet::Indirector::Yaml::Node.name.should == :node + Puppet::Node::Yaml.name.should == :yaml end end diff --git a/spec/unit/indirector/null.rb b/spec/unit/indirector/null.rb index 9e1dcb07c..fe3a382dc 100755 --- a/spec/unit/indirector/null.rb +++ b/spec/unit/indirector/null.rb @@ -12,7 +12,7 @@ describe Puppet::Indirector::Null do @null_class = Class.new(Puppet::Indirector::Null) do def self.to_s - "Testing" + "Mystuff::Testing" end end diff --git a/spec/unit/indirector/code/report.rb b/spec/unit/indirector/report/processor.rb index a27eaa297..587f512ee 100755 --- a/spec/unit/indirector/code/report.rb +++ b/spec/unit/indirector/report/processor.rb @@ -5,19 +5,19 @@ require File.dirname(__FILE__) + '/../../../spec_helper' -require 'puppet/indirector/code/report' +require 'puppet/indirector/report/processor' -describe Puppet::Indirector::Code::Report do +describe Puppet::Transaction::Report::Processor do it "should provide a method for saving reports" do - Puppet::Indirector::Code::Report.new.should respond_to(:save) + Puppet::Transaction::Report::Processor.new.should respond_to(:save) end end -describe Puppet::Indirector::Code::Report, " when saving a report" do +describe Puppet::Transaction::Report::Processor, " when saving a report" do before do Puppet.settings.stubs(:use) - @reporter = Puppet::Indirector::Code::Report.new + @reporter = Puppet::Transaction::Report::Processor.new end it "should not process the report if reports are set to 'none'" do @@ -33,11 +33,11 @@ describe Puppet::Indirector::Code::Report, " when saving a report" do end end -describe Puppet::Indirector::Code::Report, " when processing a report" do +describe Puppet::Transaction::Report::Processor, " when processing a report" do before do Puppet.settings.stubs(:value).with(:reports).returns("one") Puppet.settings.stubs(:use) - @reporter = Puppet::Indirector::Code::Report.new + @reporter = Puppet::Transaction::Report::Processor.new @report_type = mock 'one' @dup_report = mock 'dupe report' diff --git a/spec/unit/indirector/rest/node.rb b/spec/unit/indirector/rest/node.rb deleted file mode 100755 index c78556ada..000000000 --- a/spec/unit/indirector/rest/node.rb +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env ruby - -require File.dirname(__FILE__) + '/../../../spec_helper' - -require 'puppet/indirector/rest/node' - -describe Puppet::Indirector::REST::Node do - before do - @searcher = Puppet::Indirector::REST::Node.new - end - - -end diff --git a/spec/unit/indirector/terminus.rb b/spec/unit/indirector/terminus.rb index 3361bfeeb..99193dbc3 100755 --- a/spec/unit/indirector/terminus.rb +++ b/spec/unit/indirector/terminus.rb @@ -3,65 +3,70 @@ require File.dirname(__FILE__) + '/../../spec_helper' require 'puppet/defaults' require 'puppet/indirector' +require 'puppet/indirector/file' -describe Puppet::Indirector::Terminus do - before do +module TerminusInstanceTesting + def setup Puppet::Indirector::Terminus.stubs(:register_terminus_class) - @indirection = stub 'indirection', :name => :my_stuff, :register_terminus_type => nil Puppet::Indirector::Indirection.stubs(:instance).with(:my_stuff).returns(@indirection) @abstract_terminus = Class.new(Puppet::Indirector::Terminus) do def self.to_s - "Abstract" + "Testing::Abstract" end end - @terminus = Class.new(@abstract_terminus) do + @terminus_class = Class.new(@abstract_terminus) do def self.to_s - "Terminus::Type::MyStuff" + "MyStuff::TermType" end end + @terminus = @terminus_class.new end +end + +describe Puppet::Indirector::Terminus do + include TerminusInstanceTesting it "should provide a method for setting terminus class documentation" do - @terminus.should respond_to(:desc) + @terminus_class.should respond_to(:desc) end it "should support a class-level name attribute" do - @terminus.should respond_to(:name) + @terminus_class.should respond_to(:name) end it "should support a class-level indirection attribute" do - @terminus.should respond_to(:indirection) + @terminus_class.should respond_to(:indirection) end it "should support a class-level terminus-type attribute" do - @terminus.should respond_to(:terminus_type) + @terminus_class.should respond_to(:terminus_type) end it "should support a class-level model attribute" do - @terminus.should respond_to(:model) + @terminus_class.should respond_to(:model) end it "should accept indirection instances as its indirection" do indirection = stub 'indirection', :is_a? => true, :register_terminus_type => nil - proc { @terminus.indirection = indirection }.should_not raise_error - @terminus.indirection.should equal(indirection) + proc { @terminus_class.indirection = indirection }.should_not raise_error + @terminus_class.indirection.should equal(indirection) end it "should look up indirection instances when only a name has been provided" do indirection = mock 'indirection' Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns(indirection) - @terminus.indirection = :myind - @terminus.indirection.should equal(indirection) + @terminus_class.indirection = :myind + @terminus_class.indirection.should equal(indirection) end it "should fail when provided a name that does not resolve to an indirection" do Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns(nil) - proc { @terminus.indirection = :myind }.should raise_error(ArgumentError) + proc { @terminus_class.indirection = :myind }.should raise_error(ArgumentError) # It shouldn't overwrite our existing one (or, more normally, it shouldn't set # anything). - @terminus.indirection.should equal(@indirection) + @terminus_class.indirection.should equal(@indirection) end end @@ -75,9 +80,9 @@ describe Puppet::Indirector::Terminus, " when managing terminus classes" do end it "should provide a method for returning terminus classes by name and type" do - terminus = stub 'terminus_type', :terminus_type => :abstract, :name => :whatever + terminus = stub 'terminus_type', :name => :abstract, :indirection_name => :whatever Puppet::Indirector::Terminus.register_terminus_class(terminus) - Puppet::Indirector::Terminus.terminus_class(:abstract, :whatever).should equal(terminus) + Puppet::Indirector::Terminus.terminus_class(:whatever, :abstract).should equal(terminus) end it "should set up autoloading for any terminus class types requested" do @@ -88,6 +93,7 @@ describe Puppet::Indirector::Terminus, " when managing terminus classes" do it "should load terminus classes that are not found" do # Set up instance loading; it would normally happen automatically Puppet::Indirector::Terminus.instance_load :test1, "puppet/indirector/test1" + Puppet::Indirector::Terminus.instance_loader(:test1).expects(:load).with(:yay) Puppet::Indirector::Terminus.terminus_class(:test1, :yay) end @@ -103,7 +109,7 @@ describe Puppet::Indirector::Terminus, " when managing terminus classes" do proc { @terminus = Class.new(@abstract_terminus) do def self.to_s - "MyIndirection" + "MyIndirection::TestType" end end }.should raise_error(ArgumentError) @@ -111,9 +117,9 @@ describe Puppet::Indirector::Terminus, " when managing terminus classes" do it "should register the terminus class with the terminus base class" do Puppet::Indirector::Terminus.expects(:register_terminus_class).with do |type| - type.terminus_type == :abstract and type.name == :my_indirection + type.indirection_name == :my_indirection and type.name == :test_terminus end - @indirection = stub 'indirection', :name => :myind, :register_terminus_type => nil + @indirection = stub 'indirection', :name => :my_indirection, :register_terminus_type => nil Puppet::Indirector::Indirection.expects(:instance).with(:my_indirection).returns(@indirection) @abstract_terminus = Class.new(Puppet::Indirector::Terminus) do @@ -124,21 +130,55 @@ describe Puppet::Indirector::Terminus, " when managing terminus classes" do @terminus = Class.new(@abstract_terminus) do def self.to_s - "MyIndirection" + "MyIndirection::TestTerminus" end end end end -describe Puppet::Indirector::Terminus, " when converting class constants to indirection names" do - it "should convert camel case to lower case with underscores as word separators" do - subclass = mock 'subclass' - subclass.stubs(:to_s).returns("OneTwo") - subclass.stubs(:mark_as_abstract_terminus) +describe Puppet::Indirector::Terminus, " when parsing class constants for indirection and terminus names" do + before do + @subclass = mock 'subclass' + @subclass.stubs(:to_s).returns("TestInd::OneTwo") + @subclass.stubs(:mark_as_abstract_terminus) + Puppet::Indirector::Terminus.stubs(:register_terminus_class) + end + + it "should fail when anonymous classes are used" do + proc { Puppet::Indirector::Terminus.inherited(Class.new) }.should raise_error(Puppet::DevError) + end + + it "should use the last term in the constant for the terminus class name" do + @subclass.expects(:name=).with(:one_two) + @subclass.stubs(:indirection=) + Puppet::Indirector::Terminus.inherited(@subclass) + end + + it "should convert the terminus name to a downcased symbol" do + @subclass.expects(:name=).with(:one_two) + @subclass.stubs(:indirection=) + Puppet::Indirector::Terminus.inherited(@subclass) + end + + it "should use the second to last term in the constant for the indirection name" do + @subclass.expects(:indirection=).with(:test_ind) + @subclass.stubs(:name=) + @subclass.stubs(:terminus_type=) + Puppet::Indirector::File.inherited(@subclass) + end + + it "should convert the indirection name to a downcased symbol" do + @subclass.expects(:indirection=).with(:test_ind) + @subclass.stubs(:name=) + @subclass.stubs(:terminus_type=) + Puppet::Indirector::File.inherited(@subclass) + end - subclass.expects(:name=).with(:one_two) + it "should convert camel case to lower case with underscores as word separators" do + @subclass.expects(:name=).with(:one_two) + @subclass.stubs(:indirection=) - Puppet::Indirector::Terminus.inherited(subclass) + Puppet::Indirector::Terminus.inherited(@subclass) end end @@ -166,24 +206,7 @@ describe Puppet::Indirector::Terminus, " when creating terminus class types" do end describe Puppet::Indirector::Terminus, " when creating terminus classes" do - before do - Puppet::Indirector::Terminus.stubs(:register_terminus_class) - - @indirection = stub 'indirection', :name => :myind, :register_terminus_type => nil - Puppet::Indirector::Indirection.expects(:instance).with(:my_indirection).returns(@indirection) - - @abstract_terminus = Class.new(Puppet::Indirector::Terminus) do - def self.to_s - "Abstract" - end - end - @terminus = Class.new(@abstract_terminus) do - def self.to_s - "MyIndirection" - end - end - end - + include TerminusInstanceTesting it "should associate the subclass with an indirection based on the subclass constant" do @terminus.indirection.should equal(@indirection) end @@ -193,7 +216,7 @@ describe Puppet::Indirector::Terminus, " when creating terminus classes" do end it "should set the subclass's name to the indirection name" do - @terminus.name.should == :my_indirection + @terminus.name.should == :term_type end it "should set the subclass's model to the indirection model" do @@ -202,31 +225,11 @@ describe Puppet::Indirector::Terminus, " when creating terminus classes" do end end -module TerminusInstanceTesting - def setup - Puppet::Indirector::Terminus.stubs(:register_terminus_class) - @indirection = stub 'indirection', :name => :myyaml, :register_terminus_type => nil - Puppet::Indirector::Indirection.stubs(:instance).with(:my_stuff).returns(@indirection) - @abstract_terminus = Class.new(Puppet::Indirector::Terminus) do - def self.to_s - "Abstract" - end - end - @terminus_class = Class.new(@abstract_terminus) do - def self.to_s - "MyStuff" - end - end - @terminus_class.name = :test - @terminus = @terminus_class.new - end -end - describe Puppet::Indirector::Terminus, " when a terminus instance" do include TerminusInstanceTesting it "should return the class's name as its name" do - @terminus.name.should == :test + @terminus.name.should == :term_type end it "should return the class's indirection as its indirection" do diff --git a/spec/unit/indirector/yaml.rb b/spec/unit/indirector/yaml.rb index 453b703a1..f217a31b5 100755 --- a/spec/unit/indirector/yaml.rb +++ b/spec/unit/indirector/yaml.rb @@ -10,7 +10,7 @@ module YamlTesting Puppet::Indirector::Indirection.stubs(:instance).with(:my_yaml).returns(@indirection) @store_class = Class.new(Puppet::Indirector::Yaml) do def self.to_s - "MyYaml" + "MyYaml::MyType" end end @store = @store_class.new diff --git a/spec/unit/indirector/yaml/configuration.rb b/spec/unit/indirector/yaml/configuration.rb deleted file mode 100755 index 3f0bc6f30..000000000 --- a/spec/unit/indirector/yaml/configuration.rb +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env ruby - -require File.dirname(__FILE__) + '/../../../spec_helper' - -require 'puppet/node/configuration' -require 'puppet/indirector/yaml/configuration' - -describe Puppet::Indirector::Yaml::Configuration do - it "should be a subclass of the Yaml terminus" do - Puppet::Indirector::Yaml::Configuration.superclass.should equal(Puppet::Indirector::Yaml) - end - - it "should have documentation" do - Puppet::Indirector::Yaml::Configuration.doc.should_not be_nil - end - - it "should be registered with the configuration store indirection" do - indirection = Puppet::Indirector::Indirection.instance(:configuration) - Puppet::Indirector::Yaml::Configuration.indirection.should equal(indirection) - end - - it "should have its name set to :configuration" do - Puppet::Indirector::Yaml::Configuration.name.should == :configuration - end -end diff --git a/spec/unit/node/configuration.rb b/spec/unit/node/configuration.rb index 62d8e343d..5f807b9b6 100755 --- a/spec/unit/node/configuration.rb +++ b/spec/unit/node/configuration.rb @@ -651,8 +651,8 @@ describe Puppet::Node::Configuration, " when indirecting" do Puppet::Node::Configuration.find(:myconfig) end - it "should default to the code terminus" do - Puppet::Node::Configuration.indirection.terminus_class.should == :code + it "should default to the 'compiler' terminus" do + Puppet::Node::Configuration.indirection.terminus_class.should == :compiler end after do diff --git a/spec/unit/node/facts.rb b/spec/unit/node/facts.rb index ef5c91071..743a7082e 100755 --- a/spec/unit/node/facts.rb +++ b/spec/unit/node/facts.rb @@ -26,8 +26,8 @@ describe Puppet::Node::Facts, " when indirecting" do @facts.save end - it "should default to the code terminus" do - Puppet::Node::Facts.indirection.terminus_class.should == :code + it "should default to the 'facter' terminus" do + Puppet::Node::Facts.indirection.terminus_class.should == :facter end after do diff --git a/spec/unit/transaction/report.rb b/spec/unit/transaction/report.rb index ce8c4038d..8fc3f0794 100755 --- a/spec/unit/transaction/report.rb +++ b/spec/unit/transaction/report.rb @@ -24,8 +24,8 @@ describe Puppet::Transaction::Report, " when being indirect" do report.save end - it "should default to the 'code' terminus" do - Puppet::Transaction::Report.indirection.terminus_class.should == :code + it "should default to the 'processor' terminus" do + Puppet::Transaction::Report.indirection.terminus_class.should == :processor end after do |
