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