Update stdlib and concat to 6.1.0 both
[mirror/dsa-puppet.git] / 3rdparty / modules / concat / spec / acceptance / concat_spec.rb
1 require 'spec_helper_acceptance'
2
3 case os[:family]
4 when 'aix'
5   username = 'root'
6   groupname = 'system'
7 when 'darwin'
8   username = 'root'
9   groupname = 'wheel'
10 when 'windows'
11   username = 'Administrator'
12   groupname = 'Administrators'
13 else
14   username = 'root'
15   groupname = 'root'
16 end
17
18 describe 'basic concat test' do
19   before(:all) do
20     @basedir = setup_test_directory
21   end
22
23   describe 'with owner/group root' do
24     let(:pp) do
25       <<-MANIFEST
26         concat { '#{@basedir}/file':
27           owner => '#{username}',
28           group => '#{groupname}',
29           mode  => '0644',
30         }
31
32         concat::fragment { '1':
33           target  => '#{@basedir}/file',
34           content => '1',
35           order   => '01',
36         }
37
38         concat::fragment { '2':
39           target  => '#{@basedir}/file',
40           content => '2',
41           order   => '02',
42         }
43       MANIFEST
44     end
45
46     it 'idempotent, file matches' do
47       idempotent_apply(pp)
48       expect(file("#{@basedir}/file")).to be_file
49       expect(file("#{@basedir}/file")).to be_owned_by username unless os[:family] == 'windows'
50       expect(file("#{@basedir}/file")).to be_grouped_into groupname unless os[:family] == 'windows' || os[:family] == 'darwin'
51       expect(file("#{@basedir}/file")).to be_mode 644 unless os[:family] == 'aix' || os[:family] == 'windows'
52       expect(file("#{@basedir}/file").content).to match '1'
53       expect(file("#{@basedir}/file").content).to match '2'
54     end
55   end
56
57   describe 'when present with path set' do
58     let(:pp) do
59       <<-MANIFEST
60         concat { 'file':
61           ensure => present,
62           path   => '#{@basedir}/file',
63           mode   => '0644',
64         }
65         concat::fragment { '1':
66           target  => 'file',
67           content => '1',
68           order   => '01',
69         }
70       MANIFEST
71     end
72
73     it 'idempotent, file matches' do
74       idempotent_apply(pp)
75       expect(file("#{@basedir}/file")).to be_file
76       expect(file("#{@basedir}/file")).to be_mode 644 unless os[:family] == 'aix' || os[:family] == 'windows'
77       expect(file("#{@basedir}/file").content).to match '1'
78     end
79   end
80
81   describe 'when absent with path set' do
82     let(:pp) do
83       <<-MANIFEST
84         concat { 'file':
85           ensure => absent,
86           path   => '#{@basedir}/file',
87           mode   => '0644',
88         }
89         concat::fragment { '1':
90           target  => 'file',
91           content => '1',
92           order   => '01',
93         }
94       MANIFEST
95     end
96
97     it 'applies the manifest twice with no stderr' do
98       idempotent_apply(pp)
99       expect(file("#{@basedir}/file")).not_to be_file
100     end
101   end
102
103   describe 'when present with path that has special characters' do
104     filename = (os[:family] == 'windows') ? 'file(1)' : 'file(1:2)'
105
106     let(:pp) do
107       <<-MANIFEST
108         concat { '#{filename}':
109           ensure => present,
110           path   => '#{@basedir}/#{filename}',
111           mode   => '0644',
112         }
113         concat::fragment { '1':
114           target  => '#{filename}',
115           content => '1',
116           order   => '01',
117         }
118       MANIFEST
119     end
120
121     it 'idempotent, file matches' do
122       idempotent_apply(pp)
123       expect(file("#{@basedir}/#{filename}")).to be_file
124       expect(file("#{@basedir}/#{filename}")).to be_mode 644 unless os[:family] == 'aix' || os[:family] == 'windows'
125       expect(file("#{@basedir}/#{filename}").content).to match '1'
126     end
127   end
128
129   describe 'with noop properly' do
130     let(:pp) do
131       <<-MANIFEST
132         concat { 'file':
133           ensure => present,
134           path   => '#{@basedir}/file',
135           mode   => '0644',
136           noop   => true,
137         }
138         concat::fragment { '1':
139           target  => 'file',
140           content => '1',
141           order   => '01',
142         }
143       MANIFEST
144     end
145
146     it 'applies manifest twice with no stderr' do
147       idempotent_apply(pp)
148       expect(file("#{@basedir}/file")).not_to be_file
149     end
150   end
151 end