~ubuntu-branches/ubuntu/lucid/puppet/lucid-security

« back to all changes in this revision

Viewing changes to spec/unit/network/http/mongrel.rb

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2009-12-23 00:48:10 UTC
  • mfrom: (1.1.10 upstream) (3.1.7 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091223004810-3i4oryds922g5n59
Tags: 0.25.1-3ubuntu1
* Merge from debian testing.  Remaining changes:
  - debian/rules:
    + Don't start puppet when first installing puppet.
  - debian/puppet.conf, lib/puppet/defaults.rb:
    + Move templates to /etc/puppet
  - lib/puppet/defaults.rb:
    + Fix /var/lib/puppet/state ownership.
  - man/man8/puppet.conf.8: 
    + Fix broken URL in manpage.
  - debian/control:
    + Update maintainer accordint to spec.
    + Puppetmaster Recommends -> Suggests
    + Created puppet-testsuite as a seperate. Allow the users to run puppet's 
      testsuite.
  - tests/Rakefile: Fix rakefile so that the testsuite can acutally be ran.

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
 
9
9
describe "Puppet::Network::HTTP::Mongrel", "after initializing" do
10
10
    confine "Mongrel is not available" => Puppet.features.mongrel?
11
 
    
 
11
 
12
12
    it "should not be listening" do
13
13
        require 'puppet/network/http/mongrel'
14
14
 
27
27
        @mock_mongrel.stubs(:run)
28
28
        @mock_mongrel.stubs(:register)
29
29
        Mongrel::HttpServer.stubs(:new).returns(@mock_mongrel)
30
 
        @listen_params = { :address => "127.0.0.1", :port => 31337, :handlers => [ :node, :catalog ], :protocols => [ :rest ] }
 
30
 
 
31
        @mock_puppet_mongrel = mock('puppet_mongrel')
 
32
        Puppet::Network::HTTPServer::Mongrel.stubs(:new).returns(@mock_puppet_mongrel)
 
33
 
 
34
        @listen_params = { :address => "127.0.0.1", :port => 31337, :protocols => [ :rest, :xmlrpc ], :xmlrpc_handlers => [ :status, :fileserver ] }
31
35
    end
32
 
    
 
36
 
33
37
    it "should fail if already listening" do
34
38
        @server.listen(@listen_params)
35
39
        Proc.new { @server.listen(@listen_params) }.should raise_error(RuntimeError)
36
40
    end
37
 
    
38
 
    it "should require at least one handler" do
39
 
        Proc.new { @server.listen(@listen_params.delete_if {|k,v| :handlers == k}) }.should raise_error(ArgumentError)
40
 
    end
41
 
    
 
41
 
42
42
    it "should require at least one protocol" do
43
43
        Proc.new { @server.listen(@listen_params.delete_if {|k,v| :protocols == k}) }.should raise_error(ArgumentError)
44
44
    end
45
 
    
 
45
 
46
46
    it "should require a listening address to be specified" do
47
47
        Proc.new { @server.listen(@listen_params.delete_if {|k,v| :address == k})}.should raise_error(ArgumentError)
48
48
    end
49
 
    
 
49
 
50
50
    it "should require a listening port to be specified" do
51
51
        Proc.new { @server.listen(@listen_params.delete_if {|k,v| :port == k})}.should raise_error(ArgumentError)
52
52
    end
53
 
    
 
53
 
54
54
    it "should order a mongrel server to start" do
55
55
        @mock_mongrel.expects(:run)
56
56
        @server.listen(@listen_params)
57
57
    end
58
 
    
 
58
 
59
59
    it "should tell mongrel to listen on the specified address and port" do
60
60
        Mongrel::HttpServer.expects(:new).with("127.0.0.1", 31337).returns(@mock_mongrel)
61
61
        @server.listen(@listen_params)
62
62
    end
63
 
    
 
63
 
64
64
    it "should be listening" do
65
65
        Mongrel::HttpServer.expects(:new).returns(@mock_mongrel)
66
66
        @server.listen(@listen_params)
67
67
        @server.should be_listening
68
68
    end
69
69
 
70
 
    it "should instantiate a handler for each protocol+handler pair to configure web server routing" do
71
 
        @listen_params[:protocols].each do |protocol|
72
 
            @listen_params[:handlers].each do |handler|
73
 
                @mock_mongrel.expects(:register)
74
 
            end
75
 
        end
76
 
        @server.listen(@listen_params)        
77
 
    end
78
 
    
79
 
    it "should use a Mongrel + REST class to configure Mongrel when REST services are requested" do
80
 
        @server.expects(:class_for_protocol).with(:rest).at_least_once.returns(Puppet::Network::HTTP::MongrelREST)
81
 
        @server.listen(@listen_params)
82
 
    end
83
 
    
84
 
    it "should fail if services from an unknown protocol are requested" do
85
 
        Proc.new { @server.listen(@listen_params.merge(:protocols => [ :foo ]))}.should raise_error(ArgumentError)
 
70
    describe "when providing REST services" do
 
71
        it "should instantiate a handler at / for handling REST calls" do
 
72
            Puppet::Network::HTTP::MongrelREST.expects(:new).returns "myhandler"
 
73
            @mock_mongrel.expects(:register).with("/", "myhandler")
 
74
 
 
75
            @server.listen(@listen_params)
 
76
        end
 
77
 
 
78
        it "should use a Mongrel + REST class to configure Mongrel when REST services are requested" do
 
79
            @server.expects(:class_for_protocol).with(:rest).at_least_once.returns(Puppet::Network::HTTP::MongrelREST)
 
80
            @server.listen(@listen_params)
 
81
        end
 
82
    end
 
83
 
 
84
    describe "when providing XMLRPC services" do
 
85
        it "should do nothing if no xmlrpc handlers have been provided" do
 
86
            Puppet::Network::HTTPServer::Mongrel.expects(:new).never
 
87
            @server.listen(@listen_params.merge(:xmlrpc_handlers => []))
 
88
        end
 
89
 
 
90
        it "should create an instance of the existing Mongrel http server with the right handlers" do
 
91
            Puppet::Network::HTTPServer::Mongrel.expects(:new).with([:status, :master]).returns(@mock_puppet_mongrel)
 
92
            @server.listen(@listen_params.merge(:xmlrpc_handlers => [:status, :master]))
 
93
        end
 
94
 
 
95
        it "should register the Mongrel server instance at /RPC2" do
 
96
            @mock_mongrel.expects(:register).with("/RPC2", @mock_puppet_mongrel)
 
97
 
 
98
            @server.listen(@listen_params.merge(:xmlrpc_handlers => [:status, :master]))
 
99
        end
86
100
    end
87
101
end
88
102
 
89
103
describe "Puppet::Network::HTTP::Mongrel", "when turning off listening" do
90
104
    confine "Mongrel is not available" => Puppet.features.mongrel?
91
 
    
 
105
 
92
106
    before do
93
107
        @mock_mongrel = mock('mongrel httpserver')
94
108
        @mock_mongrel.stubs(:run)
95
109
        @mock_mongrel.stubs(:register)
96
110
        Mongrel::HttpServer.stubs(:new).returns(@mock_mongrel)
97
 
        @server = Puppet::Network::HTTP::Mongrel.new        
 
111
        @server = Puppet::Network::HTTP::Mongrel.new
98
112
        @listen_params = { :address => "127.0.0.1", :port => 31337, :handlers => [ :node, :catalog ], :protocols => [ :rest ] }
99
113
    end
100
 
    
 
114
 
101
115
    it "should fail unless listening" do
102
116
        Proc.new { @server.unlisten }.should raise_error(RuntimeError)
103
117
    end
104
 
    
 
118
 
105
119
    it "should order mongrel server to stop" do
106
120
        @server.listen(@listen_params)
107
121
        @mock_mongrel.expects(:stop)
108
122
        @server.unlisten
109
123
    end
110
 
    
 
124
 
111
125
    it "should not be listening" do
112
126
        @server.listen(@listen_params)
113
127
        @mock_mongrel.stubs(:stop)