File: master.rb

package info (click to toggle)
puppet 0.24.5-3%2Blenny2
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 9,688 kB
  • ctags: 7,630
  • sloc: ruby: 97,655; sh: 721; lisp: 262; makefile: 167; xml: 122; python: 28
file content (92 lines) | stat: -rwxr-xr-x 2,581 bytes parent folder | download
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
#!/usr/bin/env ruby

require File.dirname(__FILE__) + '/../../lib/puppettest'

require 'puppettest'
require 'puppet/network/handler/master'

class TestMaster < Test::Unit::TestCase
    include PuppetTest::ServerTest

    def setup
        super
        @master = Puppet::Network::Handler.master.new(:Manifest => tempfile)

        @catalog = stub 'catalog', :extract => ""
        Puppet::Node::Catalog.stubs(:find).returns(@catalog)
    end

    def teardown
        super
        Puppet::Indirector::Indirection.clear_cache
    end

    def test_freshness_is_always_now
        now1 = mock 'now1'
        Time.expects(:now).returns(now1)

        assert_equal(@master.freshness, now1, "Did not return current time as freshness")
    end

    def test_hostname_is_used_if_client_is_missing
        @master.expects(:decode_facts).returns("hostname" => "yay")
        Puppet::Node::Facts.expects(:new).with { |name, facts| name == "yay" }.returns(stub('facts', :save => nil))

        @master.getconfig("facts")
    end

    def test_facts_are_saved
        facts = mock('facts')
        Puppet::Node::Facts.expects(:new).returns(facts)
        facts.expects(:save)

        @master.stubs(:decode_facts)

        @master.getconfig("facts", "yaml", "foo.com")
    end

    def test_catalog_is_used_for_compiling
        facts = stub('facts', :save => nil)
        Puppet::Node::Facts.stubs(:new).returns(facts)

        @master.stubs(:decode_facts)

        Puppet::Node::Catalog.expects(:find).with("foo.com").returns(@catalog)

        @master.getconfig("facts", "yaml", "foo.com")
    end
end

class TestMasterFormats < Test::Unit::TestCase
    def setup
        @facts = stub('facts', :save => nil)
        Puppet::Node::Facts.stubs(:new).returns(@facts)

        @master = Puppet::Network::Handler.master.new(:Code => "")
        @master.stubs(:decode_facts)

        @catalog = stub 'catalog', :extract => ""
        Puppet::Node::Catalog.stubs(:find).returns(@catalog)
    end

    def test_marshal_can_be_used
        @catalog.expects(:extract).returns "myextract"

        Marshal.expects(:dump).with("myextract").returns "eh"

        @master.getconfig("facts", "marshal", "foo.com")
    end

    def test_yaml_can_be_used
        extract = mock 'extract'
        @catalog.expects(:extract).returns extract

        extract.expects(:to_yaml).returns "myaml"

        @master.getconfig("facts", "yaml", "foo.com")
    end

    def test_failure_when_non_yaml_or_marshal_is_used
        assert_raise(RuntimeError) { @master.getconfig("facts", "blah", "foo.com") }
    end
end