summaryrefslogtreecommitdiffstats
path: root/spec/unit/application/master.rb
diff options
context:
space:
mode:
authorMarkus Roberts <Markus@reality.com>2010-06-23 15:51:08 -0700
committerMarkus Roberts <Markus@reality.com>2010-06-23 22:27:29 -0700
commit51b70c05167399eb2274fc1add18b6b18d31429d (patch)
tree1a33b11f0f589d6f5cd806d6da9de317887ca0e6 /spec/unit/application/master.rb
parent9958c805dd90acadbb56ed3095e665d8afa990cd (diff)
downloadpuppet-51b70c05167399eb2274fc1add18b6b18d31429d.tar.gz
puppet-51b70c05167399eb2274fc1add18b6b18d31429d.tar.xz
puppet-51b70c05167399eb2274fc1add18b6b18d31429d.zip
[#3994] rename the specs to have _spec.rb at the end
Some spec files like active_record.rb had names that would confuse the load path and get loaded instead of the intended implentation when the spec was run from the same directory as the file. Author: Matt Robinson <matt@puppetlabs.com> Date: Fri Jun 11 15:29:33 2010 -0700
Diffstat (limited to 'spec/unit/application/master.rb')
-rw-r--r--spec/unit/application/master.rb447
1 files changed, 0 insertions, 447 deletions
diff --git a/spec/unit/application/master.rb b/spec/unit/application/master.rb
deleted file mode 100644
index c3f4d9e37..000000000
--- a/spec/unit/application/master.rb
+++ /dev/null
@@ -1,447 +0,0 @@
-#!/usr/bin/env ruby
-
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-require 'puppet/application/master'
-
-describe Puppet::Application::Master do
- before :each do
- @master = Puppet::Application[:master]
- @daemon = stub_everything 'daemon'
- Puppet::Daemon.stubs(:new).returns(@daemon)
- Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
-
- Puppet::Node.stubs(:terminus_class=)
- Puppet::Node.stubs(:cache_class=)
- Puppet::Node::Facts.stubs(:terminus_class=)
- Puppet::Node::Facts.stubs(:cache_class=)
- Puppet::Transaction::Report.stubs(:terminus_class=)
- Puppet::Resource::Catalog.stubs(:terminus_class=)
- end
-
- it "should ask Puppet::Application to parse Puppet configuration file" do
- @master.should_parse_config?.should be_true
- end
-
- it "should declare a main command" do
- @master.should respond_to(:main)
- end
-
- it "should declare a parseonly command" do
- @master.should respond_to(:parseonly)
- end
-
- it "should declare a compile command" do
- @master.should respond_to(:compile)
- end
-
- it "should declare a preinit block" do
- @master.should respond_to(:preinit)
- end
-
- describe "during preinit" do
- before :each do
- @master.stubs(:trap)
- end
-
- it "should catch INT" do
- @master.stubs(:trap).with { |arg,block| arg == :INT }
-
- @master.preinit
- end
-
- it "should create a Puppet Daemon" do
- Puppet::Daemon.expects(:new).returns(@daemon)
-
- @master.preinit
- end
-
- it "should give ARGV to the Daemon" do
- argv = stub 'argv'
- ARGV.stubs(:dup).returns(argv)
- @daemon.expects(:argv=).with(argv)
-
- @master.preinit
- end
-
- end
-
- [:debug,:verbose].each do |option|
- it "should declare handle_#{option} method" do
- @master.should respond_to("handle_#{option}".to_sym)
- end
-
- it "should store argument value when calling handle_#{option}" do
- @master.options.expects(:[]=).with(option, 'arg')
- @master.send("handle_#{option}".to_sym, 'arg')
- end
- end
-
- describe "when applying options" do
- before do
- @master.command_line.stubs(:args).returns([])
- end
-
- it "should set the log destination with --logdest" do
- Puppet::Log.expects(:newdestination).with("console")
-
- @master.handle_logdest("console")
- end
-
- it "should put the setdest options to true" do
- @master.options.expects(:[]=).with(:setdest,true)
-
- @master.handle_logdest("console")
- end
-
- it "should parse the log destination from ARGV" do
- @master.command_line.stubs(:args).returns(%w[--logdest /my/file])
-
- Puppet::Util::Log.expects(:newdestination).with("/my/file")
-
- @master.parse_options
- end
- end
-
- describe "during setup" do
-
- before :each do
- Puppet::Log.stubs(:newdestination)
- Puppet.stubs(:settraps)
- Puppet::Log.stubs(:level=)
- Puppet::SSL::CertificateAuthority.stubs(:instance)
- Puppet::SSL::CertificateAuthority.stubs(:ca?)
- Puppet.settings.stubs(:use)
-
- @master.options.stubs(:[]).with(any_parameters)
- end
-
- it "should set log level to debug if --debug was passed" do
- @master.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Log.expects(:level=).with(:debug)
-
- @master.setup
- end
-
- it "should set log level to info if --verbose was passed" do
- @master.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Log.expects(:level=).with(:info)
-
- @master.setup
- end
-
- it "should set console as the log destination if no --logdest and --daemonize" do
- @master.stubs(:[]).with(:daemonize).returns(:false)
-
- Puppet::Log.expects(:newdestination).with(:syslog)
-
- @master.setup
- end
-
- it "should set syslog as the log destination if no --logdest and not --daemonize" do
- Puppet::Log.expects(:newdestination).with(:syslog)
-
- @master.setup
- end
-
- it "should set syslog as the log destination if --rack" do
- @master.options.stubs(:[]).with(:rack).returns(:true)
-
- Puppet::Log.expects(:newdestination).with(:syslog)
-
- @master.setup
- end
-
- it "should print puppet config if asked to in Puppet config" do
- @master.stubs(:exit)
- Puppet.settings.stubs(:print_configs?).returns(true)
-
- Puppet.settings.expects(:print_configs)
-
- @master.setup
- end
-
- it "should exit after printing puppet config if asked to in Puppet config" do
- Puppet.settings.stubs(:print_configs?).returns(true)
-
- lambda { @master.setup }.should raise_error(SystemExit)
- end
-
- it "should tell Puppet.settings to use :main,:ssl and :master category" do
- Puppet.settings.expects(:use).with(:main,:master,:ssl)
-
- @master.setup
- end
-
- it "should cache class in yaml" do
- Puppet::Node.expects(:cache_class=).with(:yaml)
-
- @master.setup
- end
-
- describe "with no ca" do
-
- it "should set the ca_location to none" do
- Puppet::SSL::Host.expects(:ca_location=).with(:none)
-
- @master.setup
- end
-
- end
-
- describe "with a ca configured" do
-
- before :each do
- Puppet::SSL::CertificateAuthority.stubs(:ca?).returns(true)
- end
-
- it "should set the ca_location to local" do
- Puppet::SSL::Host.expects(:ca_location=).with(:local)
-
- @master.setup
- end
-
- it "should tell Puppet.settings to use :ca category" do
- Puppet.settings.expects(:use).with(:ca)
-
- @master.setup
- end
-
- it "should instantiate the CertificateAuthority singleton" do
- Puppet::SSL::CertificateAuthority.expects(:instance)
-
- @master.setup
- end
-
-
- end
-
- end
-
- describe "when running" do
- before do
- @master.preinit
- end
-
- it "should dispatch to parseonly if parseonly is set" do
- Puppet.stubs(:[]).with(:parseonly).returns(true)
- @master.options[:node] = nil
-
- @master.expects(:parseonly)
- @master.run_command
- end
-
- it "should dispatch to compile if called with --compile" do
- @master.options[:node] = "foo"
- @master.expects(:compile)
- @master.run_command
- end
-
- it "should dispatch to main if parseonly is not set" do
- Puppet.stubs(:[]).with(:parseonly).returns(false)
- @master.options[:node] = nil
-
- @master.expects(:main)
- @master.run_command
- end
-
-
- describe "the parseonly command" do
- before :each do
- Puppet.stubs(:[]).with(:environment)
- Puppet.stubs(:[]).with(:manifest).returns("site.pp")
- Puppet.stubs(:err)
- @master.stubs(:exit)
- @collection = stub_everything
- Puppet::Resource::TypeCollection.stubs(:new).returns(@collection)
- end
-
- it "should use a Puppet Resource Type Collection to parse the file" do
- @collection.expects(:perform_initial_import)
- @master.parseonly
- end
-
- it "should exit with exit code 0 if no error" do
- @master.expects(:exit).with(0)
- @master.parseonly
- end
-
- it "should exit with exit code 1 if error" do
- @collection.stubs(:perform_initial_import).raises(Puppet::ParseError)
- @master.expects(:exit).with(1)
- @master.parseonly
- end
- end
-
- describe "the compile command" do
- before do
- Puppet.stubs(:[]).with(:environment)
- Puppet.stubs(:[]).with(:manifest).returns("site.pp")
- Puppet.stubs(:err)
- @master.stubs(:jj)
- @master.stubs(:exit)
- Puppet.features.stubs(:pson?).returns true
- end
-
- it "should fail if pson isn't available" do
- Puppet.features.expects(:pson?).returns false
- lambda { @master.compile }.should raise_error
- end
-
- it "should compile a catalog for the specified node" do
- @master.options[:node] = "foo"
- Puppet::Resource::Catalog.expects(:find).with("foo").returns Puppet::Resource::Catalog.new
- $stdout.stubs(:puts)
-
- @master.compile
- end
-
- it "should convert the catalog to a pure-resource catalog and use 'jj' to pretty-print the catalog" do
- catalog = Puppet::Resource::Catalog.new
- Puppet::Resource::Catalog.expects(:find).returns catalog
-
- catalog.expects(:to_resource).returns("rescat")
-
- @master.options[:node] = "foo"
- @master.expects(:jj).with("rescat")
-
- @master.compile
- end
-
- it "should exit with error code 30 if no catalog can be found" do
- @master.options[:node] = "foo"
- Puppet::Resource::Catalog.expects(:find).returns nil
- @master.expects(:exit).with(30)
- $stderr.expects(:puts)
-
- @master.compile
- end
-
- it "should exit with error code 30 if there's a failure" do
- @master.options[:node] = "foo"
- Puppet::Resource::Catalog.expects(:find).raises ArgumentError
- @master.expects(:exit).with(30)
- $stderr.expects(:puts)
-
- @master.compile
- end
- end
-
- describe "the main command" do
- before :each do
- @master.preinit
- @server = stub_everything 'server'
- Puppet::Network::Server.stubs(:new).returns(@server)
- @app = stub_everything 'app'
- Puppet::SSL::Host.stubs(:localhost)
- Puppet::SSL::CertificateAuthority.stubs(:ca?)
- Process.stubs(:uid).returns(1000)
- Puppet.stubs(:service)
- Puppet.stubs(:[])
- Puppet.stubs(:notice)
- Puppet.stubs(:start)
- end
-
- it "should create a Server" do
- Puppet::Network::Server.expects(:new)
-
- @master.main
- end
-
- it "should give the server to the daemon" do
- @daemon.expects(:server=).with(@server)
-
- @master.main
- end
-
- it "should create the server with the right XMLRPC handlers" do
- Puppet::Network::Server.expects(:new).with { |args| args[:xmlrpc_handlers] == [:Status, :FileServer, :Master, :Report, :Filebucket]}
-
- @master.main
- end
-
- it "should create the server with a :ca xmlrpc handler if needed" do
- Puppet.stubs(:[]).with(:ca).returns(true)
- Puppet::Network::Server.expects(:new).with { |args| args[:xmlrpc_handlers].include?(:CA) }
-
- @master.main
- end
-
- it "should generate a SSL cert for localhost" do
- Puppet::SSL::Host.expects(:localhost)
-
- @master.main
- end
-
- it "should make sure to *only* hit the CA for data" do
- Puppet::SSL::CertificateAuthority.stubs(:ca?).returns(true)
-
- Puppet::SSL::Host.expects(:ca_location=).with(:only)
-
- @master.main
- end
-
- it "should drop privileges if running as root" do
- Puppet.features.stubs(:root?).returns true
-
- Puppet::Util.expects(:chuser)
-
- @master.main
- end
-
- it "should daemonize if needed" do
- Puppet.stubs(:[]).with(:daemonize).returns(true)
-
- @daemon.expects(:daemonize)
-
- @master.main
- end
-
- it "should start the service" do
- @daemon.expects(:start)
-
- @master.main
- end
-
- describe "with --rack" do
- confine "Rack is not available" => Puppet.features.rack?
-
- before do
- require 'puppet/network/http/rack'
- Puppet::Network::HTTP::Rack.stubs(:new).returns(@app)
- end
-
- it "it should create the app with REST and XMLRPC support" do
- @master.options.stubs(:[]).with(:rack).returns(:true)
-
- Puppet::Network::HTTP::Rack.expects(:new).with { |args|
- args[:xmlrpc_handlers] == [:Status, :FileServer, :Master, :Report, :Filebucket] and
- args[:protocols] == [:rest, :xmlrpc]
- }
-
- @master.main
- end
-
- it "it should not start a daemon" do
- @master.options.stubs(:[]).with(:rack).returns(:true)
-
- @daemon.expects(:start).never
-
- @master.main
- end
-
- it "it should return the app" do
- @master.options.stubs(:[]).with(:rack).returns(:true)
-
- app = @master.main
- app.should equal(@app)
- end
-
- end
-
- end
- end
-end