~ubuntu-branches/ubuntu/oneiric/puppet/oneiric-security

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Micah Anderson
  • Date: 2008-07-26 15:43:45 UTC
  • mto: (3.1.1 lenny) (1.3.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 16.
  • Revision ID: james.westby@ubuntu.com-20080726154345-1fmgo76b4l72ulvc
ImportĀ upstreamĀ versionĀ 0.24.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env ruby
 
2
#
 
3
#  Created by Rick Bradley on 2007-10-15.
 
4
#  Copyright (c) 2007. All rights reserved.
 
5
 
 
6
require File.dirname(__FILE__) + '/../../../spec_helper'
 
7
require 'puppet/network/http'
 
8
 
 
9
describe "Puppet::Network::HTTP::Mongrel", "after initializing" do
 
10
    confine "Mongrel is not available" => Puppet.features.mongrel?
 
11
    
 
12
    it "should not be listening" do
 
13
        require 'puppet/network/http/mongrel'
 
14
 
 
15
        Puppet::Network::HTTP::Mongrel.new.should_not be_listening
 
16
    end
 
17
end
 
18
 
 
19
describe "Puppet::Network::HTTP::Mongrel", "when turning on listening" do
 
20
    confine "Mongrel is not available" => Puppet.features.mongrel?
 
21
 
 
22
    before do
 
23
        require 'puppet/network/http/mongrel'
 
24
 
 
25
        @server = Puppet::Network::HTTP::Mongrel.new
 
26
        @mock_mongrel = mock('mongrel')
 
27
        @mock_mongrel.stubs(:run)
 
28
        @mock_mongrel.stubs(:register)
 
29
        Mongrel::HttpServer.stubs(:new).returns(@mock_mongrel)
 
30
        @listen_params = { :address => "127.0.0.1", :port => 31337, :handlers => [ :node, :catalog ], :protocols => [ :rest ] }
 
31
    end
 
32
    
 
33
    it "should fail if already listening" do
 
34
        @server.listen(@listen_params)
 
35
        Proc.new { @server.listen(@listen_params) }.should raise_error(RuntimeError)
 
36
    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
    
 
42
    it "should require at least one protocol" do
 
43
        Proc.new { @server.listen(@listen_params.delete_if {|k,v| :protocols == k}) }.should raise_error(ArgumentError)
 
44
    end
 
45
    
 
46
    it "should require a listening address to be specified" do
 
47
        Proc.new { @server.listen(@listen_params.delete_if {|k,v| :address == k})}.should raise_error(ArgumentError)
 
48
    end
 
49
    
 
50
    it "should require a listening port to be specified" do
 
51
        Proc.new { @server.listen(@listen_params.delete_if {|k,v| :port == k})}.should raise_error(ArgumentError)
 
52
    end
 
53
    
 
54
    it "should order a mongrel server to start" do
 
55
        @mock_mongrel.expects(:run)
 
56
        @server.listen(@listen_params)
 
57
    end
 
58
    
 
59
    it "should tell mongrel to listen on the specified address and port" do
 
60
        Mongrel::HttpServer.expects(:new).with("127.0.0.1", 31337).returns(@mock_mongrel)
 
61
        @server.listen(@listen_params)
 
62
    end
 
63
    
 
64
    it "should be listening" do
 
65
        Mongrel::HttpServer.expects(:new).returns(@mock_mongrel)
 
66
        @server.listen(@listen_params)
 
67
        @server.should be_listening
 
68
    end
 
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)
 
86
    end
 
87
end
 
88
 
 
89
describe "Puppet::Network::HTTP::Mongrel", "when turning off listening" do
 
90
    confine "Mongrel is not available" => Puppet.features.mongrel?
 
91
    
 
92
    before do
 
93
        @mock_mongrel = mock('mongrel httpserver')
 
94
        @mock_mongrel.stubs(:run)
 
95
        @mock_mongrel.stubs(:register)
 
96
        Mongrel::HttpServer.stubs(:new).returns(@mock_mongrel)
 
97
        @server = Puppet::Network::HTTP::Mongrel.new        
 
98
        @listen_params = { :address => "127.0.0.1", :port => 31337, :handlers => [ :node, :catalog ], :protocols => [ :rest ] }
 
99
    end
 
100
    
 
101
    it "should fail unless listening" do
 
102
        Proc.new { @server.unlisten }.should raise_error(RuntimeError)
 
103
    end
 
104
    
 
105
    it "should order mongrel server to stop" do
 
106
        @server.listen(@listen_params)
 
107
        @mock_mongrel.expects(:stop)
 
108
        @server.unlisten
 
109
    end
 
110
    
 
111
    it "should not be listening" do
 
112
        @server.listen(@listen_params)
 
113
        @mock_mongrel.stubs(:stop)
 
114
        @server.unlisten
 
115
        @server.should_not be_listening
 
116
    end
 
117
end