ansible/test/integration/targets/win_xml/tasks/main.yml
Richard Levenberg 5cb39d0d57 Use System.Xml.XmlDocument.Load rather than Get-Content to avoid (#49206)
encoding errors when writing out XML

removing executable bit

refactor tests to handle sanity checking
2018-12-04 15:19:38 +00:00

124 lines
3.8 KiB
YAML

# test code for the Windows xml module
# (c) 2017, Richard Levenberg <richard.levenberg@cosocloud.com>
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
- name: copy a test .xml file
win_copy:
src: config.xml
dest: "{{ win_output_dir }}\\config.xml"
- name: add an element that only has a text child node
win_xml:
path: "{{ win_output_dir }}\\config.xml"
fragment: '<string key="answer">42</string>'
xpath: '/config'
register: element_add_result
- name: check element add result
assert:
that:
- element_add_result is changed
- name: try to add the element that only has a text child node again
win_xml:
path: "{{ win_output_dir }}\\config.xml"
fragment: '<string key="answer">42</string>'
xpath: '/config'
register: element_add_result_second
- name: check element add result
assert:
that:
- not element_add_result_second is changed
- name: copy a test log4j.xml
win_copy:
src: log4j.xml
dest: "{{ win_output_dir }}\\log4j.xml"
- name: change an attribute to fatal logging
win_xml:
path: "{{ win_output_dir }}\\log4j.xml"
xpath: '/log4j:configuration/logger[@name="org.apache.commons.digester"]/level'
type: attribute
attribute: 'value'
fragment: 'FATAL'
- name: try to change the attribute again
win_xml:
path: "{{ win_output_dir }}\\log4j.xml"
xpath: '/log4j:configuration/logger[@name="org.apache.commons.digester"]/level'
type: attribute
attribute: 'value'
fragment: 'FATAL'
register: attribute_changed_result
- name: check attribute change result
assert:
that:
- not attribute_changed_result is changed
# This testing is for https://github.com/ansible/ansible/issues/48471
# The issue was that an .xml with no encoding declaration, but a UTF8 BOM
# with some UTF-8 characters was being written out with garbage characters.
# The characters added by win_xml were not UTF-8 characters.
- name: copy test files (https://github.com/ansible/ansible/issues/48471)
win_copy:
src: plane.zip
dest: "{{ win_output_dir }}\\plane.zip"
- name: unarchive the test files
win_unzip:
src: "{{ win_output_dir }}\\plane.zip"
dest: "{{ win_output_dir }}\\"
- name: change a text value in a file with UTF8 BOM and armenian characters in the description
win_xml:
path: "{{ win_output_dir }}\\plane-utf8-bom-armenian-characters.xml"
xpath: '/plane/year'
type: text
fragment: '1988'
- name: register the sha1 of the new file
win_stat:
path: "{{ win_output_dir }}\\plane-utf8-bom-armenian-characters.xml"
get_checksum: yes
register: sha1_checksum
- name: verify the checksum
assert:
that:
- sha1_checksum.stat.checksum == 'e3e18c3066e1bfce9a5cf87c81353fa174440944'
- name: change a text value in a file with UTF-16 BE BOM and Chinese characters in the description
win_xml:
path: "{{ win_output_dir }}\\plane-utf16be-bom-chinese-characters.xml"
xpath: '/plane/year'
type: text
fragment: '1988'
- name: register the sha1 of the new file
win_stat:
path: "{{ win_output_dir}}\\plane-utf16be-bom-chinese-characters.xml"
get_checksum: yes
register: sha1_checksum
- name: verify the checksum
assert:
that:
- sha1_checksum.stat.checksum == 'de86f79b409383447cf4cf112b20af8ffffcfdbf'