summaryrefslogtreecommitdiffstats
path: root/test/certmgr/ca.rb
blob: 5b7944b4612ad3174f64e3165bdd238496703d5d (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
#!/usr/bin/env ruby

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

require 'puppet'
require 'puppet/sslcertificates/ca.rb'
require 'puppettest'
require 'puppettest/certificates'
require 'mocha'

class TestCA < Test::Unit::TestCase
    include PuppetTest

    def setup
      super
      Puppet::Util::SUIDManager.stubs(:asuser).yields
    end

    def hosts
        %w{host.domain.com Other.Testing.Com}
    end
    def mkca
        Puppet::SSLCertificates::CA.new
    end

    def test_clean
        dirs = [:csrdir, :signeddir, :publickeydir, :privatekeydir, :certdir]
        ca = mkca

        hosts.each do |host|
            files = []
            dirs.each do |dir|
                dir = Puppet[dir]
                # We handle case insensitivity through downcasing
                file = File.join(dir, host.downcase + ".pem")
                File.open(file, "w") do |f|
                    f.puts "testing"
                end
                files << file
            end
            assert_nothing_raised do
                ca.clean(host)
            end
            files.each do |f|
                assert(! FileTest.exists?(f), "File %s was not deleted" % f)
            end
        end
    end

    def test_host2Xfile
        ca = mkca
        hosts.each do |host|
            {:signeddir => :host2certfile, :csrdir => :host2csrfile}.each do |dir, method|
                val = nil
                assert_nothing_raised do
                    val = ca.send(method, host)
                end
                assert_equal(File.join(Puppet[dir], host.downcase + ".pem"), val,
                    "incorrect response from %s" % method)
            end
        end
    end

    def test_list
        ca = mkca
        # Make a fake csr
        dir = Puppet[:csrdir]
        list = []
        hosts.each do |host|
            file = File.join(dir, host.downcase + ".pem")
            File.open(file, "w") { |f| f.puts "yay" }
            list << host.downcase
        end

        assert_equal(list.sort, ca.list.sort, "list was not correct")
    end

    # #142 - test storing the public key
    def test_store_public_key
        ca = mkca
        assert_nothing_raised do
            ca.mkrootcert
        end
        assert(FileTest.exists?(Puppet[:capub]), "did not store public key")
    end
end