summaryrefslogtreecommitdiff
path: root/spec/unit/network/server_spec.rb
blob: 941e94015b5976b7b217546b76e99d66cfed9237 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#! /usr/bin/env ruby
require 'spec_helper'
require 'puppet/network/server'

describe Puppet::Network::Server do
  let(:port) { 8140 }
  let(:address) { '0.0.0.0' }
  let(:server) { Puppet::Network::Server.new(address, port) }

  before do
    @mock_http_server = mock('http server')
    Puppet.settings.stubs(:use)
    Puppet::Network::HTTP::WEBrick.stubs(:new).returns(@mock_http_server)
  end

  describe "when initializing" do
    before do
      Puppet[:masterport] = ''
    end

    it "should not be listening after initialization" do
      Puppet::Network::Server.new(address, port).should_not be_listening
    end

    it "should use the :main setting section" do
      Puppet.settings.expects(:use).with { |*args| args.include?(:main) }
      Puppet::Network::Server.new(address, port)
    end

    it "should use the :application setting section" do
      Puppet.settings.expects(:use).with { |*args| args.include?(:application) }

      Puppet::Network::Server.new(address, port)
    end
  end

  describe "when not yet started" do
    before do
      @mock_http_server.stubs(:listen)
    end

    it "should indicate that it is not listening" do
      server.should_not be_listening
    end

    it "should not allow server to be stopped" do
      expect { server.stop }.to raise_error(RuntimeError)
    end

    it "should allow server to be started" do
      expect { server.start }.to_not raise_error
    end
  end

  describe "when server is on" do
    before do
      @mock_http_server.stubs(:listen)
      @mock_http_server.stubs(:unlisten)
      server.start
    end

    it "should indicate that it is listening" do
      server.should be_listening
    end

    it "should not allow server to be started again" do
      expect { server.start }.to raise_error(RuntimeError)
    end

    it "should allow server to be stopped" do
      expect { server.stop }.to_not raise_error
    end
  end

  describe "when server is being started" do
    it "should cause the HTTP server to listen" do
      server = Puppet::Network::Server.new(address, port)
      @mock_http_server.expects(:listen).with(address, port)
      server.start
    end
  end

  describe "when server is being stopped" do
    before do
      @mock_http_server.stubs(:listen)
      server.stubs(:http_server).returns(@mock_http_server)
      server.start
    end

    it "should cause the HTTP server to stop listening" do
      @mock_http_server.expects(:unlisten)
      server.stop
    end
  end
end