1# Test code for win_eventlog
2
3# (c) 2017, Andrew Saraceni <andrew.saraceni@gmail.com>
4#
5# This file is part of Ansible
6#
7# Ansible is free software: you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation, either version 3 of the License, or
10# (at your option) any later version.
11#
12# Ansible is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
19
20- name: Remove potentially leftover logs
21  win_eventlog:
22    name: "{{ item }}"
23    state: absent
24  with_items:
25    - WinEventLogTest
26    - NewWinEventLogTest
27
28
29- name: Add log without sources
30  win_eventlog:
31    name: WinEventLogTest
32    state: present
33  register: add_log_without_sources
34  failed_when: add_log_without_sources.changed != false or add_log_without_sources.msg != "You must specify one or more sources when creating a log for the first time"
35
36
37- name: Add log
38  win_eventlog: &wel_present
39    name: WinEventLogTest
40    sources:
41      - WinEventLogSource1
42      - WinEventLogSource2
43    state: present
44  register: add_log
45
46- name: Test add_log (normal mode)
47  assert:
48    that:
49    - add_log.changed == true
50    - add_log.exists == true
51    - add_log.sources == ["WinEventLogSource1", "WinEventLogSource2", "WinEventLogTest"]
52    - add_log.sources_changed == ["WinEventLogSource1", "WinEventLogSource2"]
53  when: not in_check_mode
54
55- name: Test add_log (check-mode)
56  assert:
57    that:
58    - add_log.changed == true
59    - add_log.exists == false
60    - add_log.sources_changed == []
61  when: in_check_mode
62
63
64- name: Add log (again)
65  win_eventlog: *wel_present
66  register: add_log_again
67
68- name: Test add_log_again (normal mode)
69  assert:
70    that:
71    - add_log_again.changed == false
72    - add_log_again.exists == true
73    - add_log_again.sources == ["WinEventLogSource1", "WinEventLogSource2", "WinEventLogTest"]
74    - add_log_again.sources_changed == []
75  when: not in_check_mode
76
77
78- name: Run tests for normal mode only (expects event log)
79  when: not in_check_mode
80  block:
81
82  - name: Change default source
83    win_eventlog:
84      <<: *wel_present
85      sources:
86        - WinEventLogTest
87      category_file: C:\TestApp\AppCategories.dll
88    register: change_default_source
89    failed_when: change_default_source.changed != false or change_default_source.msg != "Cannot modify default source WinEventLogTest of log WinEventLogTest - you must remove the log"
90
91
92  - name: Change source category
93    win_eventlog: &welc_present
94      <<: *wel_present
95      sources:
96        - WinEventLogSource1
97      category_file: C:\TestApp\AppCategories.dll
98    register: change_source_category
99
100  - name: Test change_source_category
101    assert:
102      that:
103      - change_source_category.changed == true
104      - change_source_category.exists == true
105      - change_source_category.sources == ["WinEventLogSource1", "WinEventLogSource2", "WinEventLogTest"]
106      - change_source_category.sources_changed == ["WinEventLogSource1"]
107
108
109  - name: Change source category (again)
110    win_eventlog: *welc_present
111    register: change_source_category_again
112
113  - name: Test change_source_category_again
114    assert:
115      that:
116      - change_source_category_again.changed == false
117      - change_source_category_again.exists == true
118      - change_source_category_again.sources == ["WinEventLogSource1", "WinEventLogSource2", "WinEventLogTest"]
119      - change_source_category_again.sources_changed == []
120
121
122  - name: Change source message
123    win_eventlog: &welm_present
124      <<: *welc_present
125      message_file: C:\TestApp\AppMessages.dll
126    register: change_source_message
127
128  - name: Test change_source_message
129    assert:
130      that:
131      - change_source_message.changed == true
132      - change_source_message.exists == true
133      - change_source_message.sources == ["WinEventLogSource1", "WinEventLogSource2", "WinEventLogTest"]
134      - change_source_message.sources_changed == ["WinEventLogSource1"]
135
136
137  - name: Change source message (again)
138    win_eventlog: *welm_present
139    register: change_source_message_again
140
141  - name: Test change_source_message_again
142    assert:
143      that:
144      - change_source_message_again.changed == false
145      - change_source_message_again.exists == true
146      - change_source_message_again.sources == ["WinEventLogSource1", "WinEventLogSource2", "WinEventLogTest"]
147      - change_source_message_again.sources_changed == []
148
149
150  - name: Change source parameter
151    win_eventlog: &welp_present
152      <<: *welm_present
153      parameter_file: C:\TestApp\AppParameters.dll
154    register: change_source_parameter
155
156  - name: Test change_source_parameter
157    assert:
158      that:
159      - change_source_parameter.changed == true
160      - change_source_parameter.exists == true
161      - change_source_parameter.sources == ["WinEventLogSource1", "WinEventLogSource2", "WinEventLogTest"]
162      - change_source_parameter.sources_changed == ["WinEventLogSource1"]
163
164
165  - name: Change source parameter (again)
166    win_eventlog: *welp_present
167    register: change_source_parameter_again
168
169  - name: Test change_source_parameter_again
170    assert:
171      that:
172      - change_source_parameter_again.changed == false
173      - change_source_parameter_again.exists == true
174      - change_source_parameter_again.sources == ["WinEventLogSource1", "WinEventLogSource2", "WinEventLogTest"]
175      - change_source_parameter_again.sources_changed == []
176
177
178  - name: Change log maximum size
179    win_eventlog: &wels_present
180      <<: *wel_present
181      maximum_size: 256MB
182    register: change_log_maximum_size
183
184  - name: Test change_log_maximum_size
185    assert:
186      that:
187      - change_log_maximum_size.changed == true
188      - change_log_maximum_size.exists == true
189      - change_log_maximum_size.maximum_size_kb == 262144
190
191
192  - name: Change log maximum size (again)
193    win_eventlog: *wels_present
194    register: change_log_maximum_size_again
195
196  - name: Test change_log_maximum_size_again
197    assert:
198      that:
199      - change_log_maximum_size_again.changed == false
200      - change_log_maximum_size_again.exists == true
201      - change_log_maximum_size_again.maximum_size_kb == 262144
202
203
204  - name: Change log invalid maximum size 1
205    win_eventlog:
206      <<: *wel_present
207      maximum_size: 256 MB
208    register: change_log_invalid_maximum_size_1
209    failed_when: change_log_invalid_maximum_size_1.changed != false or change_log_invalid_maximum_size_1.msg != "Maximum size 256 MB is not properly specified"
210
211
212  - name: Change log invalid maximum size 2
213    win_eventlog:
214      <<: *wel_present
215      maximum_size: 5GB
216    register: change_log_invalid_maximum_size_2
217    failed_when: change_log_invalid_maximum_size_2.changed != false or change_log_invalid_maximum_size_2.msg != "Maximum size must be between 64KB and 4GB"
218
219
220  - name: Change log invalid maximum size 3
221    win_eventlog:
222      <<: *wel_present
223      maximum_size: 129KB
224    register: change_log_invalid_maximum_size_3
225    failed_when: change_log_invalid_maximum_size_3.changed != false or change_log_invalid_maximum_size_3.msg != "Maximum size must be divisible by 64KB"
226
227
228  - name: Change log retention days
229    win_eventlog: &welr_present
230      <<: *wels_present
231      retention_days: 128
232    register: change_log_retention_days
233
234  - name: Test change_log_retention_days
235    assert:
236      that:
237      - change_log_retention_days.changed == true
238      - change_log_retention_days.exists == true
239      - change_log_retention_days.retention_days == 128
240
241
242  - name: Change log retention days (again)
243    win_eventlog: *welr_present
244    register: change_log_retention_days_again
245
246  - name: Test change_log_retention_days_again
247    assert:
248      that:
249      - change_log_retention_days_again.changed == false
250      - change_log_retention_days_again.exists == true
251      - change_log_retention_days_again.retention_days == 128
252
253
254  - name: Change log overflow action
255    win_eventlog: &welo_present
256      <<: *wels_present
257      overflow_action: OverwriteAsNeeded
258    register: change_log_overflow_action
259
260  - name: Test change_log_overflow_action
261    assert:
262      that:
263      - change_log_overflow_action.changed == true
264      - change_log_overflow_action.exists == true
265      - change_log_overflow_action.overflow_action == "OverwriteAsNeeded"
266
267
268  - name: Change log overflow action (again)
269    win_eventlog: *welo_present
270    register: change_log_overflow_action_again
271
272  - name: Test change_log_overflow_action_again
273    assert:
274      that:
275      - change_log_overflow_action_again.changed == false
276      - change_log_overflow_action_again.exists == true
277      - change_log_overflow_action_again.overflow_action == "OverwriteAsNeeded"
278
279
280  - name: Add log with existing source
281    win_eventlog: &wele_present
282      name: NewWinEventLogTest
283      sources:
284        - WinEventLogSource1
285      state: present
286    register: add_log_with_existing_source
287    failed_when: add_log_with_existing_source.changed != false or add_log_with_existing_source.msg != "Source WinEventLogSource1 already exists and cannot be created"
288
289
290  - name: Add new log
291    win_eventlog:
292      <<: *wele_present
293      sources:
294        - NewWinEventLogSource1
295
296  - name: Change source for different log
297    win_eventlog:
298      <<: *wele_present
299      sources:
300        - WinEventLogSource1
301      category_file: C:\TestApp\AppCategories.dll
302    register: change_source_for_different_log
303    failed_when: change_source_for_different_log.changed != false or change_source_for_different_log.msg != "Source WinEventLogSource1 does not belong to log NewWinEventLogTest and cannot be modified"
304
305  - name: Remove new log
306    win_eventlog:
307      name: NewWinEventLogTest
308      state: absent
309
310
311  - name: Add entry to log
312    win_shell: Write-EventLog -LogName WinEventLogTest -Source WinEventLogSource1 -EntryType Information -EventId 12345 -Message "Test message"
313
314  - name: Verify add entry
315    win_eventlog:
316      name: WinEventLogTest
317      state: present
318    register: verify_add_entry
319
320  - name: Test verify_add_entry
321    assert:
322      that:
323      - verify_add_entry.changed == false
324      - verify_add_entry.exists == true
325      - verify_add_entry.entries == 1
326
327
328  - name: Clear log
329    win_eventlog: &wel_clear
330      name: WinEventLogTest
331      state: clear
332    register: clear_log
333
334  - name: Test clear_log
335    assert:
336      that:
337      - clear_log.changed == true
338      - clear_log.exists == true
339      - clear_log.entries == 0
340    when: not in_check_mode
341
342
343  - name: Clear log (again)
344    win_eventlog: *wel_clear
345    register: clear_log_again
346
347  - name: Test clear_log_again
348    assert:
349      that:
350      - clear_log_again.changed == false
351      - clear_log_again.exists == true
352      - clear_log_again.entries == 0
353    when: in_check_mode
354
355
356- name: Clear absent log
357  win_eventlog:
358    name: WinEventLogTest
359    state: clear
360  register: clear_absent_log
361  when: in_check_mode
362  failed_when: clear_absent_log.changed != false or clear_absent_log.msg != "Cannot clear log WinEventLogTest as it does not exist"
363
364
365- name: Remove default source
366  win_eventlog: &weld_absent
367    name: WinEventLogTest
368    sources:
369      - WinEventLogTest
370    state: absent
371  register: remove_default_source
372  failed_when: remove_default_source.changed != false or remove_default_source.msg != "Cannot remove default source WinEventLogTest from log WinEventLogTest - you must remove the log"
373
374
375- name: Remove source
376  win_eventlog: &wels_absent
377    <<: *weld_absent
378    sources:
379      - WinEventLogSource1
380  register: remove_source
381
382- name: Test remove_source (normal mode)
383  assert:
384    that:
385    - remove_source.changed == true
386    - remove_source.exists == true
387    - remove_source.sources == ["WinEventLogSource2", "WinEventLogTest"]
388    - remove_source.sources_changed == ["WinEventLogSource1"]
389  when: not in_check_mode
390
391- name: Test remove_source (check-mode)
392  assert:
393    that:
394    - remove_source.changed == false
395    - remove_source.exists == false
396    - remove_source.sources_changed == []
397  when: in_check_mode
398
399
400- name: Remove source (again)
401  win_eventlog: *wels_absent
402  register: remove_source_again
403
404- name: Test remove_source_again (normal mode)
405  assert:
406    that:
407    - remove_source_again.changed == false
408    - remove_source_again.exists == true
409    - remove_source.sources == ["WinEventLogSource2", "WinEventLogTest"]
410    - remove_source_again.sources_changed == []
411  when: not in_check_mode
412
413
414- name: Remove log
415  win_eventlog: &wel_absent
416    name: WinEventLogTest
417    state: absent
418  register: remove_log
419
420- name: Test remove_log (normal mode)
421  assert:
422    that:
423    - remove_log.changed == true
424    - remove_log.exists == false
425    - remove_log.sources_changed == ["WinEventLogSource2", "WinEventLogTest"]
426  when: not in_check_mode
427
428- name: Test remove_log (check-mode)
429  assert:
430    that:
431    - remove_log.changed == false
432    - remove_log.exists == false
433    - remove_log.sources_changed == []
434  when: in_check_mode
435
436
437- name: Remove log (again)
438  win_eventlog: *wel_absent
439  register: remove_log_again
440
441- name: Test remove_log_again (normal mode)
442  assert:
443    that:
444    - remove_log_again.changed == false
445    - remove_log_again.exists == false
446    - remove_log_again.sources_changed == []
447  when: not in_check_mode
448