ansible/test/integration/targets/win_get_url/tasks/tests_url.yml

238 lines
7.1 KiB
YAML
Raw Normal View History

- name: download single file (check)
win_get_url:
url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
dest: '{{ testing_dir }}\output.txt'
check_mode: yes
register: http_download_check
- name: get result of download single file (check)
win_stat:
path: '{{ testing_dir }}\output.txt'
register: http_download_result_check
- name: assert download single file (check)
assert:
that:
- http_download_check is not failed
- http_download_check is changed
- http_download_check.url
- http_download_check.dest
- not http_download_result_check.stat.exists
- name: download single file
win_get_url:
url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
dest: '{{ testing_dir }}\output.txt'
register: http_download
- name: get result of download single file
win_stat:
path: '{{ testing_dir }}\output.txt'
register: http_download_result
- name: assert download single file
assert:
that:
- http_download is not failed
- http_download is changed
- http_download.url
- http_download.dest
- http_download_result.stat.exists
[win_get_url] feature: Add support `checksum` to module win_get_url (#51986) * set valid_until equal to current time + spot_wait_timeout * Add checksum check for downloaded file. * refactoring * fix typo * add fixes * mart try,catch handling * revert lib/ansible/modules/cloud/amazon/ec2.py from upstream * refactoring * remove empty lines * add checksum verification for existing file * fix current file check * refactoring destination file check * add handling exceptions * refactoring * Added download file hash data from url * fix string aligning * fix bug with uri * Added get hash from multy-string file * Added URI support for checksum file location * refactoing * Remove any non-alphanumeric characters for hash from url * fix discussions; add support for PS3 * refactoring * add size return value * checkout from upstream for lib/ansible/modules/cloud/amazon/ec2.py * add Ansible.ModuleUtils.Legacy support; refactoring * Copyright added * Checking files size before and after downloading added. * remove unused code * Corrected regexp for dotted slashed file name prefix in hash-file * hotfix typo error; add int tests * remove legacy module support; split checksum to checksum, checksum_algorithm, checksum_url * changed default hash algorithm * Fixed case for ContentLength = -1 * Old comment removed * fix typo * Remove file size check before downloading * add alias to ; fix tests * adjust tests; fix lint warnings from PSScritpAnalyzer * workaround for bug in win_chocolatey module on win2008 * remove win_get_url.ps1 from /test/sanity/pslint/ignore.txt * add checksum_algorithm as retuen value * first normalise before return Result * resolve discussions Signed-off-by: Viktor Utkin <viktor.utkin7@yandex.ru> * fix discussions fix http tests as discussed * fix last discussions * Reduce code duplication and add idempotency check * fix sanity issue and remove testing code * move back to using tmp file for checksum comparison
2019-03-05 11:37:00 +01:00
- name: download single file (idempotent)
win_get_url:
url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
dest: '{{ testing_dir }}\output.txt'
[win_get_url] feature: Add support `checksum` to module win_get_url (#51986) * set valid_until equal to current time + spot_wait_timeout * Add checksum check for downloaded file. * refactoring * fix typo * add fixes * mart try,catch handling * revert lib/ansible/modules/cloud/amazon/ec2.py from upstream * refactoring * remove empty lines * add checksum verification for existing file * fix current file check * refactoring destination file check * add handling exceptions * refactoring * Added download file hash data from url * fix string aligning * fix bug with uri * Added get hash from multy-string file * Added URI support for checksum file location * refactoing * Remove any non-alphanumeric characters for hash from url * fix discussions; add support for PS3 * refactoring * add size return value * checkout from upstream for lib/ansible/modules/cloud/amazon/ec2.py * add Ansible.ModuleUtils.Legacy support; refactoring * Copyright added * Checking files size before and after downloading added. * remove unused code * Corrected regexp for dotted slashed file name prefix in hash-file * hotfix typo error; add int tests * remove legacy module support; split checksum to checksum, checksum_algorithm, checksum_url * changed default hash algorithm * Fixed case for ContentLength = -1 * Old comment removed * fix typo * Remove file size check before downloading * add alias to ; fix tests * adjust tests; fix lint warnings from PSScritpAnalyzer * workaround for bug in win_chocolatey module on win2008 * remove win_get_url.ps1 from /test/sanity/pslint/ignore.txt * add checksum_algorithm as retuen value * first normalise before return Result * resolve discussions Signed-off-by: Viktor Utkin <viktor.utkin7@yandex.ru> * fix discussions fix http tests as discussed * fix last discussions * Reduce code duplication and add idempotency check * fix sanity issue and remove testing code * move back to using tmp file for checksum comparison
2019-03-05 11:37:00 +01:00
register: http_download_again
- name: assert download single file (idempotent)
assert:
that:
- not http_download_again is changed
# Cannot use httpbin as the Last-Modified date is generated dynamically
- name: download file for force=no tests
win_get_url:
url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_get_url/SlimFTPd.exe
dest: '{{ testing_dir }}\output'
- name: download single file with force no
win_get_url:
url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_get_url/SlimFTPd.exe
dest: '{{ testing_dir }}\output'
force: no
register: http_download_no_force
- name: assert download single file with force no
assert:
that:
- http_download_no_force is not changed
[win_get_url] feature: Add support `checksum` to module win_get_url (#51986) * set valid_until equal to current time + spot_wait_timeout * Add checksum check for downloaded file. * refactoring * fix typo * add fixes * mart try,catch handling * revert lib/ansible/modules/cloud/amazon/ec2.py from upstream * refactoring * remove empty lines * add checksum verification for existing file * fix current file check * refactoring destination file check * add handling exceptions * refactoring * Added download file hash data from url * fix string aligning * fix bug with uri * Added get hash from multy-string file * Added URI support for checksum file location * refactoing * Remove any non-alphanumeric characters for hash from url * fix discussions; add support for PS3 * refactoring * add size return value * checkout from upstream for lib/ansible/modules/cloud/amazon/ec2.py * add Ansible.ModuleUtils.Legacy support; refactoring * Copyright added * Checking files size before and after downloading added. * remove unused code * Corrected regexp for dotted slashed file name prefix in hash-file * hotfix typo error; add int tests * remove legacy module support; split checksum to checksum, checksum_algorithm, checksum_url * changed default hash algorithm * Fixed case for ContentLength = -1 * Old comment removed * fix typo * Remove file size check before downloading * add alias to ; fix tests * adjust tests; fix lint warnings from PSScritpAnalyzer * workaround for bug in win_chocolatey module on win2008 * remove win_get_url.ps1 from /test/sanity/pslint/ignore.txt * add checksum_algorithm as retuen value * first normalise before return Result * resolve discussions Signed-off-by: Viktor Utkin <viktor.utkin7@yandex.ru> * fix discussions fix http tests as discussed * fix last discussions * Reduce code duplication and add idempotency check * fix sanity issue and remove testing code * move back to using tmp file for checksum comparison
2019-03-05 11:37:00 +01:00
- name: manually change the content and last modified time on FTP source to older datetime
win_shell: |
$path = '{{ testing_dir }}\output'
Set-Content -LiteralPath $path -Value 'abc'
(Get-Item -LiteralPath $path).LastWriteTime = (Get-Date -Date "01/01/1970")
- name: download newer file with force no
win_get_url:
url: https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_get_url/SlimFTPd.exe
dest: '{{ testing_dir }}\output'
force: no
register: http_download_newer_no_force
- name: assert download newer file with force no
assert:
that:
- http_download_newer_no_force is changed
- name: download file to directory
win_get_url:
url: https://{{ httpbin_host }}/image/png
dest: '{{ testing_dir }}'
register: http_download_to_directory
- name: get result of download to directory
win_stat:
path: '{{ testing_dir }}\png'
register: http_download_to_directory_result
- name: assert download file to directory
assert:
that:
- http_download_to_directory is changed
- http_download_to_directory_result.stat.exists
- name: download to path with env var
win_get_url:
url: https://{{ httpbin_host }}/image/jpeg
dest: '%TEST_WIN_GET_URL%\jpeg.jpg'
register: http_download_with_env
environment:
TEST_WIN_GET_URL: '{{ testing_dir }}'
- name: get result of download to path with env var
win_stat:
path: '{{ testing_dir }}\jpeg.jpg'
register: http_download_with_env_result
- name: assert download to path with env var
assert:
that:
- http_download_with_env is changed
- http_download_with_env_result.stat.exists
- name: fail when link returns 404
win_get_url:
url: https://{{ httpbin_host }}/status/404
dest: '{{ testing_dir }}\skynet_module.html'
ignore_errors: yes
register: fail_download_404
- name: assert fail when link returns 404
assert:
that:
- fail_download_404 is not changed
- fail_download_404 is failed
- fail_download_404.status_code == 404
- name: fail when dest is an invalid path
win_get_url:
url: https://{{ httpbin_host }}/base64/YQ==
dest: Q:\Filez\Cyberdyne.html
register: fail_invalid_path
failed_when: '"The path ''Q:\Filez'' does not exist for destination ''Q:\Filez\Cyberdyne.html''" not in fail_invalid_path.msg'
- name: test basic authentication
win_get_url:
url: http://{{ httpbin_host }}/basic-auth/username/password
dest: '{{ testing_dir }}\basic.txt'
url_username: username
url_password: password
register: basic_auth
- name: assert test basic authentication
assert:
that:
- basic_auth is changed
- basic_auth.status_code == 200
# httpbin hidden-basic-auth returns 404 not found on auth failure which stops the automatic auth handler from working.
# Setting force_basic_auth=yes means the Basic auth header is sent in the original request not after a 401 response
- name: test force basic authentication
win_get_url:
url: http://{{ httpbin_host }}/hidden-basic-auth/username/password
dest: '{{ testing_dir }}\force-basic.txt'
url_username: username
url_password: password
force_basic_auth: yes
register: force_basic_auth
- name: assert test force basic auth
assert:
that:
- force_basic_auth is changed
- force_basic_auth.status_code == 200
- name: timeout request
win_get_url:
url: https://{{ httpbin_host }}/delay/7
dest: '{{ testing_dir }}\timeout.txt'
timeout: 3
register: timeout_req
failed_when: 'timeout_req.msg != "Error downloading ''https://" + httpbin_host + "/delay/7'' to ''" + testing_dir + "\\timeout.txt'': The operation has timed out"'
- name: send request with headers
win_get_url:
url: https://{{ httpbin_host }}/headers
dest: '{{ testing_dir }}\headers.txt'
headers:
testing: 123
User-Agent: 'badAgent'
accept: 'text/html'
register: headers
- name: get result of send request with headers
slurp:
path: '{{ testing_dir }}\headers.txt'
register: headers_actual
- name: assert send request with headers
assert:
that:
- headers is changed
- headers.status_code == 200
- (headers_actual.content | b64decode | from_json).headers.Testing == '123'
- (headers_actual.content | b64decode | from_json).headers["User-Agent"] == 'badAgent'
- (headers_actual.content | b64decode | from_json).headers.Accept == 'text/html'
- name: test download follow with redirects
win_get_url:
url: https://{{ httpbin_host }}/redirect/2
dest: '{{ testing_dir }}\redirects.txt'
register: redirection
- name: assert download follow with redirects
assert:
that:
- redirection is changed
- redirection.status_code == 200
- name: test download follow without redirects
win_get_url:
url: https://{{ httpbin_host }}/redirect/2
dest: '{{ testing_dir }}\no_redirection.txt'
follow_redirects: none
register: no_redirection
- name: get result of test download follow without redirects
slurp:
path: '{{ testing_dir }}\no_redirection.txt'
register: no_redirection_actual
- name: assert test download follow without redirects
assert:
that:
- no_redirection is changed
- no_redirection.status_code == 302