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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
#! /usr/bin/env ruby
#
# Unit testing for the macauthorization provider
#
require 'spec_helper'
require 'puppet'
module Puppet::Util::Plist
end
provider_class = Puppet::Type.type(:macauthorization).provider(:macauthorization)
describe provider_class do
before :each do
# Create a mock resource
@resource = stub 'resource'
@authname = "foo.spam.eggs.puppettest"
@authplist = {}
@rules = {@authname => @authplist}
authdb = {}
authdb["rules"] = { "foorule" => "foo" }
authdb["rights"] = { "fooright" => "foo" }
# Stub out Plist::parse_xml
Puppet::Util::Plist.stubs(:parse_plist).returns(authdb)
Puppet::Util::Plist.stubs(:write_plist_file)
# A catch all; no parameters set
@resource.stubs(:[]).returns(nil)
# But set name, ensure
@resource.stubs(:[]).with(:name).returns @authname
@resource.stubs(:[]).with(:ensure).returns :present
@resource.stubs(:ref).returns "MacAuthorization[#{@authname}]"
@provider = provider_class.new(@resource)
end
it "should have a create method" do
expect(@provider).to respond_to(:create)
end
it "should have a destroy method" do
expect(@provider).to respond_to(:destroy)
end
it "should have an exists? method" do
expect(@provider).to respond_to(:exists?)
end
it "should have a flush method" do
expect(@provider).to respond_to(:flush)
end
properties = [ :allow_root, :authenticate_user, :auth_class, :comment,
:group, :k_of_n, :mechanisms, :rule, :session_owner,
:shared, :timeout, :tries, :auth_type ]
properties.each do |prop|
it "should have a #{prop.to_s} method" do
expect(@provider).to respond_to(prop.to_s)
end
it "should have a #{prop.to_s}= method" do
expect(@provider).to respond_to(prop.to_s + "=")
end
end
describe "when destroying a right" do
before :each do
@resource.stubs(:[]).with(:auth_type).returns(:right)
end
it "should call the internal method destroy_right" do
@provider.expects(:destroy_right)
@provider.destroy
end
it "should call the external command 'security authorizationdb remove @authname" do
@provider.expects(:security).with("authorizationdb", :remove, @authname)
@provider.destroy
end
end
describe "when destroying a rule" do
before :each do
@resource.stubs(:[]).with(:auth_type).returns(:rule)
end
it "should call the internal method destroy_rule" do
@provider.expects(:destroy_rule)
@provider.destroy
end
end
describe "when flushing a right" do
before :each do
@resource.stubs(:[]).with(:auth_type).returns(:right)
end
it "should call the internal method flush_right" do
@provider.expects(:flush_right)
@provider.flush
end
it "should call the internal method set_right" do
@provider.expects(:execute).with { |cmds, args|
cmds.include?("read") and
cmds.include?(@authname) and
args[:combine] == false
}.once
@provider.expects(:set_right)
@provider.flush
end
it "should read and write to the auth database with the right arguments" do
@provider.expects(:execute).with { |cmds, args|
cmds.include?("read") and
cmds.include?(@authname) and
args[:combine] == false
}.once
@provider.expects(:execute).with { |cmds, args|
cmds.include?("write") and
cmds.include?(@authname) and
args[:combine] == false and
args[:stdinfile] != nil
}.once
@provider.flush
end
end
describe "when flushing a rule" do
before :each do
@resource.stubs(:[]).with(:auth_type).returns(:rule)
end
it "should call the internal method flush_rule" do
@provider.expects(:flush_rule)
@provider.flush
end
it "should call the internal method set_rule" do
@provider.expects(:set_rule)
@provider.flush
end
end
end
|