3
3
require File.dirname(__FILE__) + '/../../../spec_helper'
4
4
require 'puppet/network/server'
5
require 'puppet/ssl/certificate_authority'
7
8
describe Puppet::Network::Server do
8
9
describe "when using webrick" do
10
11
Puppet[:servertype] = 'webrick'
11
@params = { :address => "127.0.0.1", :port => 34343, :handlers => [ :node ] }
12
Puppet[:server] = '127.0.0.1'
13
@params = { :port => 34343, :handlers => [ :node ], :xmlrpc_handlers => [ :status ] }
15
# Get a safe temporary file
16
@tmpfile = Tempfile.new("webrick_integration_testing")
17
@dir = @tmpfile.path + "_dir"
19
Puppet.settings[:confdir] = @dir
20
Puppet.settings[:vardir] = @dir
22
Puppet::SSL::Host.ca_location = :local
24
ca = Puppet::SSL::CertificateAuthority.new
25
ca.generate(Puppet[:certname]) unless Puppet::SSL::Certificate.find(Puppet[:certname])
32
system("rm -rf %s" % @dir)
34
Puppet::Util::Cacher.expire
14
37
describe "before listening" do
15
38
it "should not be reachable at the specified address and port" do
16
39
lambda { TCPSocket.new('127.0.0.1', 34343) }.should raise_error
20
43
describe "when listening" do
21
44
it "should be reachable on the specified address and port" do
22
@server = Puppet::Network::Server.new(@params.merge(:port => 34343))
24
lambda { TCPSocket.new('127.0.0.1', 34343) }.should_not raise_error
45
@server = Puppet::Network::Server.new(@params.merge(:port => 34343))
47
lambda { TCPSocket.new('127.0.0.1', 34343) }.should_not raise_error
50
it "should default to '0.0.0.0' as its bind address" do
51
@server = Puppet::Network::Server.new(@params.merge(:port => 34343))
52
@server.stubs(:unlisten) # we're breaking listening internally, so we have to keep it from unlistening
53
@server.send(:http_server).expects(:listen).with { |args| args[:address] == "0.0.0.0" }
57
it "should use any specified bind address" do
58
Puppet[:bindaddress] = "127.0.0.1"
59
@server = Puppet::Network::Server.new(@params.merge(:port => 34343))
60
@server.stubs(:unlisten) # we're breaking listening internally, so we have to keep it from unlistening
61
@server.send(:http_server).expects(:listen).with { |args| args[:address] == "127.0.0.1" }
27
65
it "should not allow multiple servers to listen on the same address and port" do
28
@server = Puppet::Network::Server.new(@params.merge(:port => 34343))
66
@server = Puppet::Network::Server.new(@params.merge(:port => 34343))
30
68
@server2 = Puppet::Network::Server.new(@params.merge(:port => 34343))
31
69
lambda { @server2.listen }.should raise_error
35
73
@server.unlisten if @server.listening?
39
77
describe "after unlistening" do
40
78
it "should not be reachable on the port and address assigned" do
41
@server = Puppet::Network::Server.new(@params.merge(:port => 34343))
79
@server = Puppet::Network::Server.new(@params.merge(:port => 34343))
44
lambda { TCPSocket.new('127.0.0.1', 34343) }.should raise_error(Errno::ECONNREFUSED)
82
lambda { TCPSocket.new('127.0.0.1', 34343) }.should raise_error(Errno::ECONNREFUSED)