Note that exim contains tracker-specific configuration
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / spec / unit / puppet / provider / file_line / ruby_spec_use_cases.rb
1 require 'spec_helper'
2
3 provider_class = Puppet::Type.type(:file_line).provider(:ruby)
4 #  These tests fail on windows when run as part of the rake task. Individually they pass
5 describe provider_class, :unless => Puppet::Util::Platform.windows? do
6   include PuppetlabsSpec::Files
7
8   let :tmpfile do
9     tmpfilename('file_line_test')
10   end
11   let :content do
12     ''
13   end
14   let :params do
15     {}
16   end
17   let :resource do
18     Puppet::Type::File_line.new({
19       :name => 'foo',
20       :path => tmpfile,
21       :line => 'foo',
22     }.merge(params))
23   end
24   let :provider do
25     provider_class.new(resource)
26   end
27
28   before :each do
29     File.open(tmpfile, 'w') do |fh|
30       fh.write(content)
31     end
32   end
33
34   describe 'customer use cases - no lines' do
35     describe 'MODULES-5003' do
36       let(:params) do
37         {
38           :line => "*\thard\tcore\t0",
39           :match => "^[ \t]*\\*[ \t]+hard[ \t]+core[ \t]+.*",
40           :multiple => true,
41         }
42       end
43       let(:content) { "*        hard    core    90\n*   hard    core    10\n" }
44
45       it 'requests changes' do
46         expect(provider).not_to be_exists
47       end
48       it 'replaces the matches' do
49         provider.create
50         expect(File.read(tmpfile).chomp).to eq("*       hard    core    0\n*    hard    core    0")
51       end
52     end
53
54     describe 'MODULES-5003 - one match, one line - just ensure the line exists' do
55       let(:params) do
56         {
57           :line => "*\thard\tcore\t0",
58           :match => "^[ \t]*\\*[ \t]+hard[ \t]+core[ \t]+.*",
59           :multiple => true,
60         }
61       end
62       let(:content) { "*        hard    core    90\n*   hard    core    0\n" }
63
64       it 'does not request changes' do
65         expect(provider).to be_exists
66       end
67     end
68
69     describe 'MODULES-5003 - one match, one line - replace all matches, even when line exists' do
70       let(:params) do
71         {
72           :line => "*\thard\tcore\t0",
73           :match => "^[ \t]*\\*[ \t]+hard[ \t]+core[ \t]+.*",
74           :multiple => true,
75
76         }.merge(:replace_all_matches_not_matching_line => true)
77       end
78       let(:content) { "*        hard    core    90\n*   hard    core    0\n" }
79
80       it 'requests changes' do
81         expect(provider).not_to be_exists
82       end
83       it 'replaces the matches' do
84         provider.create
85         expect(File.read(tmpfile).chomp).to eq("*       hard    core    0\n*    hard    core    0")
86       end
87     end
88
89     describe 'MODULES-5651 - match, no line' do
90       let(:params) do
91         {
92           :line => 'LogLevel=notice',
93           :match => '^#LogLevel$',
94         }
95       end
96       let(:content) { "#LogLevel\nstuff" }
97
98       it 'requests changes' do
99         expect(provider).not_to be_exists
100       end
101       it 'replaces the match' do
102         provider.create
103         expect(File.read(tmpfile).chomp).to eq("LogLevel=notice\nstuff")
104       end
105     end
106
107     describe 'MODULES-5651 - match, line' do
108       let(:params) do
109         {
110           :line => 'LogLevel=notice',
111           :match => '^#LogLevel$',
112         }
113       end
114       let(:content) { "#Loglevel\nLogLevel=notice\nstuff" }
115
116       it 'does not request changes' do
117         expect(provider).to be_exists
118       end
119     end
120
121     describe 'MODULES-5651 - no match, line' do
122       let(:params) do
123         {
124           :line => 'LogLevel=notice',
125           :match => '^#LogLevel$',
126         }
127       end
128       let(:content) { "LogLevel=notice\nstuff" }
129
130       it 'does not request changes' do
131         expect(provider).to be_exists
132       end
133     end
134   end
135 end