summaryrefslogtreecommitdiffstats
path: root/test/rails/configuration.rb
blob: a878d13818a0d547cc7ca5dbfdcede3f96c209ef (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
#!/usr/bin/env ruby

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

require 'puppettest'
require 'puppet/parser/parser'
require 'puppet/network/client'
require 'puppet/rails'
require 'puppettest/resourcetesting'
require 'puppettest/parsertesting'
require 'puppettest/servertest'
require 'puppettest/railstesting'


class ConfigurationRailsTests < PuppetTest::TestCase
	include PuppetTest
    include PuppetTest::ServerTest
    include PuppetTest::ParserTesting
    include PuppetTest::ResourceTesting
    include PuppetTest::RailsTesting
    AST = Puppet::Parser::AST
    confine "No rails support" => Puppet.features.rails?

    # We need to make sure finished objects are stored in the db.
    def test_finish_before_store
        railsinit
        compile = mkcompiler
        parser = compile.parser

        node = parser.newnode [compile.node.name], :code => AST::ASTArray.new(:children => [
            resourcedef("file", "/tmp/yay", :group => "root"),
            defaultobj("file", :owner => "root")
        ])

        # Now do the rails crap
        Puppet[:storeconfigs] = true

        Puppet::Rails::Host.expects(:store).with do |node, resources|
            if res = resources.find { |r| r.type == "File" and r.title == "/tmp/yay" }
                assert_equal("root", res["owner"], "Did not set default on resource")
                true
            else
                raise "Resource was not passed to store()"
            end
        end
        compile.compile
    end

    def test_hoststorage
        assert_nothing_raised {
            Puppet[:storeconfigs] = true
        }

        Puppet[:code] = "file { \"/etc\": owner => root }"

        interp = Puppet::Parser::Interpreter.new

        facts = {}
        Facter.each { |fact, val| facts[fact] = val }
        node = mknode(facts["hostname"])
        node.parameters = facts

        objects = nil
        assert_nothing_raised {
            objects = interp.compile(node)
        }

        obj = Puppet::Rails::Host.find_by_name(node.name)
        assert(obj, "Could not find host object")
    end
end