summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Borean <jborean93@gmail.com>2019-03-14 08:04:49 +1000
committerGitHub <noreply@github.com>2019-03-14 08:04:49 +1000
commitd3792145d59dca99705a96c46120d4a904588aa3 (patch)
tree28c752b9326c7c7c9a6bfff845fcdc6892ee691b
parent42e6700a717d8e07d24b5644d392dbed1d744f82 (diff)
downloadansible-d3792145d59dca99705a96c46120d4a904588aa3.tar.gz
win_get_url - refactor tests to use httptester (#53765)
* win_get_url - refactor tests to use httptester * Use the file lookup instead of slurp
-rw-r--r--lib/ansible/modules/windows/win_get_url.ps16
-rw-r--r--test/integration/targets/win_get_url/aliases2
-rw-r--r--test/integration/targets/win_get_url/defaults/main.yml7
-rw-r--r--test/integration/targets/win_get_url/files/ftp/anon/sha1sum.txt3
-rw-r--r--test/integration/targets/win_get_url/files/ftp/anon/sha256sum.txt3
-rw-r--r--test/integration/targets/win_get_url/files/ftp/anon/sha256sum_with_dot.txt3
-rw-r--r--test/integration/targets/win_get_url/meta/main.yml3
-rw-r--r--test/integration/targets/win_get_url/tasks/main.yml44
-rw-r--r--test/integration/targets/win_get_url/tasks/tests_checksum.yml249
-rw-r--r--test/integration/targets/win_get_url/tasks/tests_ftp.yml43
-rw-r--r--test/integration/targets/win_get_url/tasks/tests_url.yml114
-rw-r--r--test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl6
12 files changed, 213 insertions, 270 deletions
diff --git a/lib/ansible/modules/windows/win_get_url.ps1 b/lib/ansible/modules/windows/win_get_url.ps1
index b94ef64881..90fdbbe2af 100644
--- a/lib/ansible/modules/windows/win_get_url.ps1
+++ b/lib/ansible/modules/windows/win_get_url.ps1
@@ -381,13 +381,13 @@ $request_params = @{
}
if ($checksum) {
- $checksum = $checksum.Trim().toLower()
+ $checksum = $checksum.Trim().ToLower()
}
if ($checksum_algorithm) {
- $checksum_algorithm = $checksum_algorithm.Trim().toLower()
+ $checksum_algorithm = $checksum_algorithm.Trim().ToLower()
}
if ($checksum_url) {
- $checksum_url = $checksum_url.Trim().toLower()
+ $checksum_url = $checksum_url.Trim()
}
# Check for case $checksum variable contain url. If yes, get file data from url and replace original value in $checksum
diff --git a/test/integration/targets/win_get_url/aliases b/test/integration/targets/win_get_url/aliases
index 4f4664b685..ca4f45531a 100644
--- a/test/integration/targets/win_get_url/aliases
+++ b/test/integration/targets/win_get_url/aliases
@@ -1 +1,3 @@
shippable/windows/group5
+needs/httptester
+skip/windows/2008 # httptester requires SSH which doesn't work with 2008
diff --git a/test/integration/targets/win_get_url/defaults/main.yml b/test/integration/targets/win_get_url/defaults/main.yml
deleted file mode 100644
index 54976cfc49..0000000000
--- a/test/integration/targets/win_get_url/defaults/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-test_win_get_url_path: '{{win_output_dir}}\win_get_url'
-test_win_get_url_host: www.redhat.com
-test_win_get_url_env_var: WIN_GET_URL
-
-remote_tmp_path: '{{win_output_dir}}\win_get_url_dest'
-remote_http_path: '{{test_win_get_url_path}}\http'
diff --git a/test/integration/targets/win_get_url/files/ftp/anon/sha1sum.txt b/test/integration/targets/win_get_url/files/ftp/anon/sha1sum.txt
new file mode 100644
index 0000000000..c5cfcb4769
--- /dev/null
+++ b/test/integration/targets/win_get_url/files/ftp/anon/sha1sum.txt
@@ -0,0 +1,3 @@
+a97e6837f60cec6da4491bab387296bbcd72bdba cHR1eA==
+3911340502960ca33aece01129234460bfeb2791 not_target1.txt
+1b4b6adf30992cedb0f6edefd6478ff0a593b2e4 not_target2.txt
diff --git a/test/integration/targets/win_get_url/files/ftp/anon/sha256sum.txt b/test/integration/targets/win_get_url/files/ftp/anon/sha256sum.txt
new file mode 100644
index 0000000000..599e3626af
--- /dev/null
+++ b/test/integration/targets/win_get_url/files/ftp/anon/sha256sum.txt
@@ -0,0 +1,3 @@
+b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006 cHR1eA==
+30949cc401e30ac494d695ab8764a9f76aae17c5d73c67f65e9b558f47eff892 not_target1.txt
+d0dbfc1945bc83bf6606b770e442035f2c4e15c886ee0c22fb3901ba19900b5b not_target2.txt
diff --git a/test/integration/targets/win_get_url/files/ftp/anon/sha256sum_with_dot.txt b/test/integration/targets/win_get_url/files/ftp/anon/sha256sum_with_dot.txt
new file mode 100644
index 0000000000..1e46b89d6b
--- /dev/null
+++ b/test/integration/targets/win_get_url/files/ftp/anon/sha256sum_with_dot.txt
@@ -0,0 +1,3 @@
+b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006 ./cHR1eA==
+30949cc401e30ac494d695ab8764a9f76aae17c5d73c67f65e9b558f47eff892 ./not_target1.txt
+d0dbfc1945bc83bf6606b770e442035f2c4e15c886ee0c22fb3901ba19900b5b ./not_target2.txt
diff --git a/test/integration/targets/win_get_url/meta/main.yml b/test/integration/targets/win_get_url/meta/main.yml
new file mode 100644
index 0000000000..6baa762584
--- /dev/null
+++ b/test/integration/targets/win_get_url/meta/main.yml
@@ -0,0 +1,3 @@
+dependencies:
+- setup_remote_tmp_dir
+- prepare_http_tests
diff --git a/test/integration/targets/win_get_url/tasks/main.yml b/test/integration/targets/win_get_url/tasks/main.yml
index 9fa8f22870..b134f61a2a 100644
--- a/test/integration/targets/win_get_url/tasks/main.yml
+++ b/test/integration/targets/win_get_url/tasks/main.yml
@@ -1,69 +1,39 @@
---
-- name: ensure testing folder is present
- win_file:
- path: '{{ item }}'
- state: directory
- loop:
- - '{{ test_win_get_url_path }}'
- - '{{ remote_http_path }}'
- - '{{ remote_tmp_path }}'
-
- name: copy across testing files
win_copy:
src: files/
- dest: '{{test_win_get_url_path}}\'
+ dest: '{{ remote_tmp_dir }}'
- name: download SlimFTPd binary
win_get_url:
url: https://s3.amazonaws.com/ansible-ci-files/test/integration/roles/test_win_get_url/SlimFTPd.exe
- dest: '{{test_win_get_url_path}}\SlimFTPd.exe'
+ dest: '{{ remote_tmp_dir }}\SlimFTPd.exe'
- name: template SlimFTPd configuration file
win_template:
src: slimftpd.conf.tmpl
- dest: '{{test_win_get_url_path}}\slimftpd.conf'
+ dest: '{{ remote_tmp_dir }}\slimftpd.conf'
- name: create SlimFTPd service
win_service:
name: SlimFTPd
- path: '"{{test_win_get_url_path}}\SlimFTPd.exe" -service'
+ path: '"{{ remote_tmp_dir }}\SlimFTPd.exe" -service'
state: started
dependencies:
- tcpip
-- name: create env var for win_get_url tests
- win_environment:
- name: '{{test_win_get_url_env_var}}'
- level: machine
- value: '{{test_win_get_url_path}}'
- state: present
-
- block:
- name: run URL tests
- include_tasks: tests_url.yml
+ import_tasks: tests_url.yml
- name: run FTP tests
- include_tasks: tests_ftp.yml
+ import_tasks: tests_ftp.yml
- name: run checksum tests
- include_tasks: tests_checksum.yml
+ import_tasks: tests_checksum.yml
always:
- name: remove SlimFTPd service
win_service:
name: SlimFTPd
state: absent
-
- - name: remove test env var for tests
- win_environment:
- name: '{{test_win_get_url_env_var}}'
- level: machine
- state: absent
-
- - name: remove testing folders
- win_file:
- path: '{{ item }}'
- state: absent
- loop:
- - '{{ test_win_get_url_path }}'
- - '{{ remote_tmp_path }}'
diff --git a/test/integration/targets/win_get_url/tasks/tests_checksum.yml b/test/integration/targets/win_get_url/tasks/tests_checksum.yml
index e53ca3057a..49b2f452ff 100644
--- a/test/integration/targets/win_get_url/tasks/tests_checksum.yml
+++ b/test/integration/targets/win_get_url/tasks/tests_checksum.yml
@@ -1,202 +1,91 @@
---
-- name: create src file
- win_copy:
- dest: '{{ remote_http_path }}\27617.txt'
- content: 'ptux'
-
-- name: create sha1 checksum file of src
- win_copy:
- dest: '{{ remote_http_path }}\sha1sum.txt'
- content: 'a97e6837f60cec6da4491bab387296bbcd72bdba 27617.txt'
-
-- name: add sha1 checksum not going to be downloaded
- win_lineinfile:
- dest: '{{ remote_http_path }}\sha1sum.txt'
- line: '{{ item }}'
- loop:
- - '3911340502960ca33aece01129234460bfeb2791 not_target1.txt'
- - '1b4b6adf30992cedb0f6edefd6478ff0a593b2e4 not_target2.txt'
-
-- name: create sha256 checksum file of src
- win_copy:
- dest: '{{ remote_http_path }}\sha256sum.txt'
- content: 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006. 27617.txt'
-
-- name: add sha256 checksum not going to be downloaded
- win_lineinfile:
- dest: '{{ remote_http_path }}\sha256sum.txt'
- line: '{{ item }}'
- loop:
- - '30949cc401e30ac494d695ab8764a9f76aae17c5d73c67f65e9b558f47eff892 not_target1.txt'
- - 'd0dbfc1945bc83bf6606b770e442035f2c4e15c886ee0c22fb3901ba19900b5b not_target2.txt'
-
-- name: create sha256 checksum file of src with a dot leading path
- win_copy:
- dest: '{{ remote_http_path }}\sha256sum_with_dot.txt'
- content: 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006. ./27617.txt'
-
-- name: add sha256 checksums with dot leading path not going to be downloaded
- win_lineinfile:
- dest: '{{ remote_http_path }}\sha256sum_with_dot.txt'
- line: '{{ item }}'
- loop:
- - '30949cc401e30ac494d695ab8764a9f76aae17c5d73c67f65e9b558f47eff892 ./not_target1.txt'
- - 'd0dbfc1945bc83bf6606b770e442035f2c4e15c886ee0c22fb3901ba19900b5b ./not_target2.txt'
-
-- name: copy files to ftp
- win_copy:
- src: '{{ remote_http_path }}\'
- dest: '{{ test_win_get_url_path }}\ftp\{{ item }}\'
- remote_src: yes
- loop: '{{ dest_folders }}'
- vars:
- dest_folders:
- - anon
- - user
- - user-pass
-
-- name: download src with sha1 checksum url
+# These files are pre formatted and we want to get the base64 value so we can use it for httpbin
+# dynamic content in checksum_url
+- name: set base64 values for checksum files
+ set_fact:
+ sha1sum: '{{ lookup("file", "ftp/anon/sha1sum.txt") | b64encode }}'
+ sha256sum: '{{ lookup("file", "ftp/anon/sha256sum.txt") | b64encode }}'
+ sha256sum_dot: '{{ lookup("file", "ftp/anon/sha256sum_with_dot.txt") | b64encode }}'
+
+- name: download file with sha1 checksum url
win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}'
- checksum_url: 'ftp://localhost/anon/sha1sum.txt'
+ url: https://{{ httpbin_host }}/base64/cHR1eA==
+ dest: '{{ remote_tmp_dir }}\sha1.txt'
+ checksum_url: https://{{ httpbin_host }}/base64/{{ sha1sum }}
force: True
- register: result_sha1
+ register: download_sha1_url
-- name: download src with sha1 checksum value
+- name: download file with sha1 checksum value
win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}'
- checksum: 'a97e6837f60cec6da4491bab387296bbcd72bdba'
+ url: https://{{ httpbin_host }}/base64/cHR1eA==
+ dest: '{{ remote_tmp_dir }}\sha1.txt'
+ checksum: a97e6837f60cec6da4491bab387296bbcd72bdba
force: True
- register: result_sha1_alt
-
-- win_stat:
- path: '{{ remote_tmp_path }}\27617.txt'
- register: stat_result_sha1
+ register: download_sha1_value
-- name: download src with sha256 checksum url
+- name: assert download file with sha1 checksum
+ assert:
+ that:
+ - download_sha1_url is changed
+ - download_sha1_url.status_code == 200
+ - download_sha1_url.checksum_dest == 'a97e6837f60cec6da4491bab387296bbcd72bdba'
+ - not download_sha1_value is changed
+ - download_sha1_value.status_code == 200
+ - download_sha1_value.checksum_dest == 'a97e6837f60cec6da4491bab387296bbcd72bdba'
+
+- name: download file with sha256 checksum ftp
win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}\27617sha256.txt'
- checksum_url: 'ftp://localhost/anon/sha256sum.txt'
+ url: https://{{ httpbin_host }}/base64/cHR1eA==
+ dest: '{{ remote_tmp_dir }}\sha256.txt'
+ checksum_url: ftp://localhost/anon/sha256sum.txt # tests that a checksum can be from an FTP URI
checksum_algorithm: sha256
force: True
- register: result_sha256
-
-- win_stat:
- path: '{{ remote_tmp_path }}\27617.txt'
- register: stat_result_sha256
+ register: download_sha256_ftp
-- name: download src with sha256 checksum url with dot leading paths
+- name: download file with sha256 checksum dot leading source as file
win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}\27617sha256_with_dot.txt'
- checksum_url: 'ftp://localhost/anon/sha256sum_with_dot.txt'
+ url: https://{{ httpbin_host }}/base64/cHR1eA==
+ dest: '{{ remote_tmp_dir }}\sha256.txt'
+ checksum_url: '{{ remote_tmp_dir }}\ftp\anon\sha256sum_with_dot.txt'
checksum_algorithm: sha256
force: True
- register: result_sha256_with_dot
+ register: download_sha256_file
-- win_stat:
- path: '{{ remote_tmp_path }}\27617sha256_with_dot.txt'
- register: stat_result_sha256_with_dot
-
-- name: Assert that the file was downloaded
- assert:
- that:
- - result_sha1 is changed
- - result_sha1.checksum_dest == 'a97e6837f60cec6da4491bab387296bbcd72bdba'
- - result_sha1_alt is succeeded
- - not result_sha1_alt is changed
- - result_sha1_alt.checksum_dest == 'a97e6837f60cec6da4491bab387296bbcd72bdba'
- - result_sha256 is changed
- - result_sha256_with_dot is changed
- - stat_result_sha1.stat.exists | bool
- - stat_result_sha256.stat.exists | bool
- - stat_result_sha256_with_dot.stat.exists | bool
-
-# Check download with force: False
-
-- name: download src with sha1 checksum url
+- name: download file with sha256 checksum value
win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}'
- checksum_url: 'ftp://localhost/anon/sha1sum.txt'
- checksum_algorithm: sha1
- force: False
- register: result_sha1_no_force
-
-- name: download src with sha256 checksum url
- win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}/27617sha256.txt'
- checksum_url: 'ftp://localhost/anon/sha256sum.txt'
+ url: https://{{ httpbin_host }}/base64/cHR1eA==
+ dest: '{{ remote_tmp_dir }}\sha256.txt'
+ checksum: b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006
checksum_algorithm: sha256
- force: False
- register: result_sha256_no_force
+ register: download_sha256_value
-- name: assert download single file with force no
+- name: assert download file with sha256 checksum
assert:
that:
- - result_sha1_no_force is not changed
- - result_sha256_no_force is not changed
-
-# Check download with check_mode: True
-
-- name: download src with sha1 checksum url | checkmode
+ - download_sha256_ftp is changed
+ - download_sha256_ftp.status_code == 200
+ - download_sha256_ftp.checksum_dest == 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006'
+ - not download_sha256_file is changed
+ - download_sha256_file.status_code == 200
+ - download_sha256_file.checksum_dest == 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006'
+ - not download_sha256_value is changed
+ - download_sha256_value.status_code == 200
+ - download_sha256_value.checksum_dest == 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006'
+
+- name: fail download with invalid checksum and force=no
win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}'
- checksum_url: 'ftp://localhost/anon/sha1sum.txt'
- checksum_algorithm: sha1
- check_mode: True
- register: result_sha1_check_mode
-
-- name: download src with sha256 checksum url | checkmode
+ url: https://{{ httpbin_host }}/base64/cHR1eA==
+ dest: '{{ remote_tmp_dir }}\fail.txt'
+ checksum: invalid
+ force: no
+ register: fail_checksum_force_no
+ failed_when: fail_checksum_force_no.msg != "The checksum for https://" + httpbin_host + "/base64/cHR1eA== did not match 'invalid', it was 'a97e6837f60cec6da4491bab387296bbcd72bdba'"
+
+- name: fail download with invalid checksum and force=yes
win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}\27617sha256.txt'
- checksum_url: 'ftp://localhost/anon/sha256sum.txt'
- checksum_algorithm: sha256
- check_mode: True
- register: result_sha256_check_mode
-
-- name: assert download single file with force no
- assert:
- that:
- - result_sha1_check_mode.checksum_dest == 'a97e6837f60cec6da4491bab387296bbcd72bdba'
- - result_sha256_check_mode.checksum_dest == 'b1b6ce5073c8fac263a8fc5edfffdbd5dec1980c784e09c5bc69f8fb6056f006'
- - result_sha1_check_mode.checksum_src | length
- - result_sha256_check_mode.checksum_src | length
-
-# Check download with wrong checksum
-
-- name: download src with sha1 checksum value | fail
- win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}'
- checksum: 'redacted'
- checksum_algorithm: sha1
- failed_when:
- - '"did not match" not in result_sha1_failed.msg'
- - '"The checksum" not in result_sha1_failed.msg'
- - '"Unknown error downloading" not in result_sha1_failed.msg'
- register: result_sha1_failed
-
-- name: download src with sha256 checksum value | fail
- win_get_url:
- url: 'ftp://localhost/anon/27617.txt'
- dest: '{{ remote_tmp_path }}\27617sha256.txt'
- checksum: 'redacted'
- checksum_algorithm: sha256
- failed_when:
- - '"did not match" not in result_sha256_failed.msg'
- - '"The checksum" not in result_sha256_failed.msg'
- - '"Unknown error downloading" not in result_sha256_failed.msg'
- register: result_sha256_failed
-
-- name: assert failed downloads
- assert:
- that:
- - result_sha1_failed is succeeded
- - result_sha256_failed is succeeded
+ url: https://{{ httpbin_host }}/base64/cHR1eA==
+ dest: '{{ remote_tmp_dir }}\fail.txt'
+ checksum: invalid
+ force: yes
+ register: fail_checksum_force_yes
+ failed_when: fail_checksum_force_yes.msg != "The checksum for https://" + httpbin_host + "/base64/cHR1eA== did not match 'invalid', it was 'a97e6837f60cec6da4491bab387296bbcd72bdba'"
diff --git a/test/integration/targets/win_get_url/tasks/tests_ftp.yml b/test/integration/targets/win_get_url/tasks/tests_ftp.yml
index d7ae4ae8bf..e7faa96216 100644
--- a/test/integration/targets/win_get_url/tasks/tests_ftp.yml
+++ b/test/integration/targets/win_get_url/tasks/tests_ftp.yml
@@ -2,13 +2,13 @@
- name: download file from FTP source (check)
win_get_url:
url: ftp://localhost/anon/file.txt
- dest: '{{test_win_get_url_path}}\ftp-anon.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-anon.txt'
check_mode: yes
register: ftp_anon_check
- name: get results of download file from FTP source (check)
win_stat:
- path: '{{test_win_get_url_path}}\ftp-anon.txt'
+ path: '{{ remote_tmp_dir }}\ftp-anon.txt'
register: ftp_anon_result_check
- name: assert download file from FTP source (check)
@@ -20,12 +20,12 @@
- name: download file from FTP source
win_get_url:
url: ftp://localhost/anon/file.txt
- dest: '{{test_win_get_url_path}}\ftp-anon.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-anon.txt'
register: ftp_anon
- name: get results of download file from FTP source
win_stat:
- path: '{{test_win_get_url_path}}\ftp-anon.txt'
+ path: '{{ remote_tmp_dir }}\ftp-anon.txt'
register: ftp_anon_result
- name: assert download file from FTP source
@@ -35,12 +35,21 @@
- ftp_anon_result.stat.exists
- ftp_anon_result.stat.checksum == '67e0de92f29645cc30d8d147b767cceb81756651'
-# TODO: Add check for idempotent with force: yes once tmp download and checksum verify are in
+- name: download file from FTP source (idempotent)
+ win_get_url:
+ url: ftp://localhost/anon/file.txt
+ dest: '{{ remote_tmp_dir }}\ftp-anon.txt'
+ register: ftp_anon_again
+
+- name: assert download file from FTP source (idempotent)
+ assert:
+ that:
+ - not ftp_anon_again is changed
- name: download file from FTP source with force no (check)
win_get_url:
url: ftp://localhost/anon/file.txt
- dest: '{{test_win_get_url_path}}\ftp-anon.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-anon.txt'
force: no
check_mode: yes
register: ftp_anon_force_no_check
@@ -53,7 +62,7 @@
- name: download file from FTP source with force no
win_get_url:
url: ftp://localhost/anon/file.txt
- dest: '{{test_win_get_url_path}}\ftp-anon.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-anon.txt'
force: no
register: ftp_anon_force_no
@@ -63,19 +72,19 @@
- ftp_anon_force_no is not changed
- name: set last modified time on FTP source to newer datetime
- win_shell: (Get-Item -Path '{{test_win_get_url_path}}\ftp\anon\file2.txt').LastWriteTime = (Get-Date).AddHours(24)
+ win_shell: (Get-Item -Path '{{ remote_tmp_dir }}\ftp\anon\file2.txt').LastWriteTime = (Get-Date).AddHours(24)
- name: download newer file from FTP source to same dest (check)
win_get_url:
url: ftp://localhost/anon/file2.txt
- dest: '{{test_win_get_url_path}}\ftp-anon.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-anon.txt'
force: no
check_mode: yes
register: ftp_anon_force_no_different_check
- name: get result of download newer file from FTP source to same dest (check)
win_stat:
- path: '{{test_win_get_url_path}}\ftp-anon.txt'
+ path: '{{ remote_tmp_dir }}\ftp-anon.txt'
register: ftp_anon_force_no_different_result_check
- name: assert download newer file from FTP source to same dest (check)
@@ -87,13 +96,13 @@
- name: download newer file from FTP source to same dest
win_get_url:
url: ftp://localhost/anon/file2.txt
- dest: '{{test_win_get_url_path}}\ftp-anon.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-anon.txt'
force: no
register: ftp_anon_force_no_different
- name: get result of download newer file from FTP source to same dest
win_stat:
- path: '{{test_win_get_url_path}}\ftp-anon.txt'
+ path: '{{ remote_tmp_dir }}\ftp-anon.txt'
register: ftp_anon_force_no_different_result
- name: assert download newer file from FTP source to same dest (check)
@@ -105,7 +114,7 @@
- name: fail to download file from ftp protected by username
win_get_url:
url: ftp://localhost/user/file.txt
- dest: '{{test_win_get_url_path}}\ftp-user.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-user.txt'
register: fail_ftp_no_user
ignore_errors: yes
@@ -120,13 +129,13 @@
- name: download FTP file protected by username
win_get_url:
url: ftp://localhost/user/file.txt
- dest: '{{test_win_get_url_path}}\ftp-user.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-user.txt'
url_username: username
register: ftp_user_file
- name: get result of download FTP file protected by username
win_stat:
- path: '{{test_win_get_url_path}}\ftp-user.txt'
+ path: '{{ remote_tmp_dir }}\ftp-user.txt'
register: ftp_user_file_result
- name: assert download FTP file protected by username
@@ -139,14 +148,14 @@
- name: download FTP file protected by username and password
win_get_url:
url: ftp://localhost/user-pass/file.txt
- dest: '{{test_win_get_url_path}}\ftp-user-pass.txt'
+ dest: '{{ remote_tmp_dir }}\ftp-user-pass.txt'
url_username: userpass
url_password: password
register: ftp_user_pass_file
- name: get result of download FTP file protected by username and password
win_stat:
- path: '{{test_win_get_url_path}}\ftp-user-pass.txt'
+ path: '{{ remote_tmp_dir }}\ftp-user-pass.txt'
register: ftp_user_pass_file_result
- name: assert download FTP file protected by username and password
diff --git a/test/integration/targets/win_get_url/tasks/tests_url.yml b/test/integration/targets/win_get_url/tasks/tests_url.yml
index 539aba6a63..3dc6195716 100644
--- a/test/integration/targets/win_get_url/tasks/tests_url.yml
+++ b/test/integration/targets/win_get_url/tasks/tests_url.yml
@@ -1,13 +1,13 @@
- name: download single file (check)
win_get_url:
- url: https://{{test_win_get_url_host}}
- dest: '{{test_win_get_url_path}}\web.html'
+ url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
+ dest: '{{ remote_tmp_dir }}\output.txt'
check_mode: yes
register: http_download_check
- name: get result of download single file (check)
win_stat:
- path: '{{test_win_get_url_path}}\web.html'
+ path: '{{ remote_tmp_dir }}\output.txt'
register: http_download_result_check
- name: assert download single file (check)
@@ -21,13 +21,13 @@
- name: download single file
win_get_url:
- url: https://{{test_win_get_url_host}}
- dest: '{{test_win_get_url_path}}\web.html'
+ url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
+ dest: '{{ remote_tmp_dir }}\output.txt'
register: http_download
- name: get result of download single file
win_stat:
- path: '{{test_win_get_url_path}}\web.html'
+ path: '{{ remote_tmp_dir }}\output.txt'
register: http_download_result
- name: assert download single file
@@ -41,8 +41,8 @@
- name: download single file (idempotent)
win_get_url:
- url: https://{{test_win_get_url_host}}
- dest: '{{test_win_get_url_path}}\web.html'
+ url: https://{{ httpbin_host }}/base64/SG93IG5vdyBicm93biBjb3c=
+ dest: '{{ remote_tmp_dir }}\output.txt'
register: http_download_again
- name: assert download single file (idempotent)
@@ -50,10 +50,16 @@
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://s3.amazonaws.com/ansible-ci-files/test/integration/roles/test_win_get_url/SlimFTPd.exe
+ dest: '{{ remote_tmp_dir }}\output'
+
- name: download single file with force no
win_get_url:
- url: https://{{test_win_get_url_host}}
- dest: '{{test_win_get_url_path}}\web.html'
+ url: https://s3.amazonaws.com/ansible-ci-files/test/integration/roles/test_win_get_url/SlimFTPd.exe
+ dest: '{{ remote_tmp_dir }}\output'
force: no
register: http_download_no_force
@@ -64,13 +70,14 @@
- name: manually change the content and last modified time on FTP source to older datetime
win_shell: |
- Set-Content -Path '{{test_win_get_url_path}}\web.html' -Value 'abc'
- (Get-Item -Path '{{test_win_get_url_path}}\web.html').LastWriteTime = (Get-Date -Date "01/01/1970")
+ $path = '{{ remote_tmp_dir }}\output'
+ Set-Content -Path $path -Value 'abc'
+ (Get-Item -Path $path).LastWriteTime = (Get-Date -Date "01/01/1970")
- name: download newer file with force no
win_get_url:
- url: https://{{test_win_get_url_host}}
- dest: '{{test_win_get_url_path}}\web.html'
+ url: https://s3.amazonaws.com/ansible-ci-files/test/integration/roles/test_win_get_url/SlimFTPd.exe
+ dest: '{{ remote_tmp_dir }}\output'
force: no
register: http_download_newer_no_force
@@ -81,13 +88,13 @@
- name: download file to directory
win_get_url:
- url: https://{{test_win_get_url_host}}
- dest: '{{test_win_get_url_path}}'
+ url: https://{{ httpbin_host }}/image/png
+ dest: '{{ remote_tmp_dir }}'
register: http_download_to_directory
- name: get result of download to directory
win_stat:
- path: '{{test_win_get_url_path}}\{{test_win_get_url_host}}'
+ path: '{{ remote_tmp_dir }}\png'
register: http_download_to_directory_result
- name: assert download file to directory
@@ -98,13 +105,15 @@
- name: download to path with env var
win_get_url:
- url: https://{{test_win_get_url_host}}
- dest: '%{{test_win_get_url_env_var}}%\http-env.html'
+ url: https://{{ httpbin_host }}/image/jpeg
+ dest: '%TEST_WIN_GET_URL%\jpeg.jpg'
register: http_download_with_env
+ environment:
+ TEST_WIN_GET_URL: '{{ remote_tmp_dir }}'
- name: get result of download to path with env var
win_stat:
- path: '{{test_win_get_url_path}}\http-env.html'
+ path: '{{ remote_tmp_dir }}\jpeg.jpg'
register: http_download_with_env_result
- name: assert download to path with env var
@@ -115,8 +124,8 @@
- name: fail when link returns 404
win_get_url:
- url: https://{{test_win_get_url_host}}/skynet_module.html
- dest: '{{test_win_get_url_path}}\skynet_module.html'
+ url: https://{{ httpbin_host }}/status/404
+ dest: '{{ remote_tmp_dir }}\skynet_module.html'
ignore_errors: yes
register: fail_download_404
@@ -129,7 +138,66 @@
- name: fail when dest is an invalid path
win_get_url:
- url: https://{{test_win_get_url_host}}
+ 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: '{{ remote_tmp_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: '{{ remote_tmp_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: '{{ remote_tmp_dir }}\timeout.txt'
+ timeout: 3
+ register: timeout_req
+ failed_when: timeout_req.msg != "Error requesting 'https://" + httpbin_host + "/delay/7'. The operation has timed out"
+
+- name: send request with headers
+ win_get_url:
+ url: https://{{ httpbin_host }}/headers
+ dest: '{{ remote_tmp_dir }}\headers.txt'
+ headers:
+ testing: 123
+ register: headers
+
+- name: get result of send request with headers
+ slurp:
+ path: '{{ remote_tmp_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'
diff --git a/test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl b/test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl
index 2b8b2f8744..ff4dda9b06 100644
--- a/test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl
+++ b/test/integration/targets/win_get_url/templates/slimftpd.conf.tmpl
@@ -8,14 +8,14 @@ LookupHosts On
<User "anonymous">
Password ""
- Mount / {{test_win_get_url_path}}\ftp
+ Mount / "{{ remote_tmp_dir | replace('\\', '\\\\') }}\\ftp"
Allow /anon All
Deny /user All
Deny /user-pass All
</User>
<User "username">
- Mount / {{test_win_get_url_path}}\ftp
+ Mount / "{{ remote_tmp_dir | replace('\\', '\\\\') }}\\ftp"
Allow /anon All
Allow /user All
Deny /user-pass All
@@ -23,6 +23,6 @@ LookupHosts On
<User "userpass">
Password "password"
- Mount / {{test_win_get_url_path}}\ftp
+ Mount / "{{ remote_tmp_dir | replace('\\', '\\\\') }}\\ftp"
Allow / All
</User>