From c52cea8db3ea8b589dbddf5714c468a11e1cd49e Mon Sep 17 00:00:00 2001 From: jctanner Date: Tue, 31 May 2016 22:35:59 -0400 Subject: [PATCH] Add a framework, fixtures and test for common synchronize scenarios. (#15983) * Add a framework, fixtures and test for common synchronize scenarios. Addresses #15905 --- .../fixtures/synchronize/basic/meta.yaml | 17 + .../synchronize/basic/task_args_out.json | 5 + .../synchronize/basic/taskvars_in.json | 151 +++++++ .../synchronize/basic/taskvars_out.json | 156 +++++++ .../synchronize/basic_become/meta.yaml | 38 ++ .../basic_become/task_args_out.json | 6 + .../basic_become/task_vars_in.json | 151 +++++++ .../basic_become/task_vars_out.json | 156 +++++++ .../synchronize/basic_become_cli/meta.yaml | 38 ++ .../basic_become_cli/task_args_out.json | 6 + .../basic_become_cli/task_vars_in.json | 151 +++++++ .../basic_become_cli/task_vars_out.json | 156 +++++++ .../synchronize/basic_vagrant/meta.yaml | 29 ++ .../basic_vagrant/task_args_out.json | 7 + .../basic_vagrant/task_vars_in.json | 164 ++++++++ .../basic_vagrant/task_vars_out.json | 169 ++++++++ .../basic_vagrant_become_cli/meta.yaml | 32 ++ .../task_args_out.json | 7 + .../task_vars_in.json | 164 ++++++++ .../task_vars_out.json | 169 ++++++++ .../synchronize/basic_vagrant_sudo/meta.yaml | 29 ++ .../basic_vagrant_sudo/task_args_out.json | 7 + .../basic_vagrant_sudo/task_vars_in.json | 164 ++++++++ .../basic_vagrant_sudo/task_vars_out.json | 169 ++++++++ .../synchronize/delegate_remote/meta.yaml | 26 ++ .../delegate_remote/task_args_out.json | 5 + .../delegate_remote/task_vars_in.json | 379 +++++++++++++++++ .../delegate_remote/task_vars_out.json | 387 ++++++++++++++++++ .../synchronize/delegate_remote_su/meta.yaml | 33 ++ .../delegate_remote_su/task_args_out.json | 6 + .../delegate_remote_su/task_vars_in.json | 379 +++++++++++++++++ .../delegate_remote_su/task_vars_out.json | 387 ++++++++++++++++++ test/units/plugins/action/test_synchronize.py | 248 +++++++++++ 33 files changed, 3991 insertions(+) create mode 100644 test/units/plugins/action/fixtures/synchronize/basic/meta.yaml create mode 100644 test/units/plugins/action/fixtures/synchronize/basic/task_args_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic/taskvars_in.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic/taskvars_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_become/meta.yaml create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_become/task_args_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_become/task_vars_in.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_become/task_vars_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_become_cli/meta.yaml create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_args_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_vars_in.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_vars_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant/meta.yaml create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_args_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_vars_in.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_vars_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/meta.yaml create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_args_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_vars_in.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_vars_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/meta.yaml create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_args_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_vars_in.json create mode 100644 test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_vars_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/delegate_remote/meta.yaml create mode 100644 test/units/plugins/action/fixtures/synchronize/delegate_remote/task_args_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/delegate_remote/task_vars_in.json create mode 100644 test/units/plugins/action/fixtures/synchronize/delegate_remote/task_vars_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/delegate_remote_su/meta.yaml create mode 100644 test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_args_out.json create mode 100644 test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_vars_in.json create mode 100644 test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_vars_out.json create mode 100644 test/units/plugins/action/test_synchronize.py diff --git a/test/units/plugins/action/fixtures/synchronize/basic/meta.yaml b/test/units/plugins/action/fixtures/synchronize/basic/meta.yaml new file mode 100644 index 00000000000..d508bb373de --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic/meta.yaml @@ -0,0 +1,17 @@ +fixtures: + taskvars_in: taskvars_in.json + taskvars_out: taskvars_out.json +connection: + transport: 'ssh' +hostvars: + '127.0.0.1': {} + '::1': {} + 'localhost': {} +asserts: + - "hasattr(SAM._connection, 'ismock')" + - "SAM._connection.transport == 'local'" + - "self._play_context.shell == 'sh'" + - "self.execute_called" + - "self.task.args['_local_rsync_path'] == 'rsync'" + - "self.task.args['src'] == '/tmp/deleteme'" + - "self.task.args['dest'] == 'root@el6host:/tmp/deleteme'" diff --git a/test/units/plugins/action/fixtures/synchronize/basic/task_args_out.json b/test/units/plugins/action/fixtures/synchronize/basic/task_args_out.json new file mode 100644 index 00000000000..93ae7bbb5d6 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic/task_args_out.json @@ -0,0 +1,5 @@ +{ + "dest": "root@el6host:/tmp/deleteme", + "src": "/tmp/deleteme", + "_local_rsync_path": "rsync" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic/taskvars_in.json b/test/units/plugins/action/fixtures/synchronize/basic/taskvars_in.json new file mode 100644 index 00000000000..9eb5d50ad1f --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic/taskvars_in.json @@ -0,0 +1,151 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__03600813b83569c710bf5cb2a040d6e01da927c6", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__03600813b83569c710bf5cb2a040d6e01da927c6", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "el6host", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__03600813b83569c710bf5cb2a040d6e01da927c6", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "ansible_host": "el6host", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__03600813b83569c710bf5cb2a040d6e01da927c6", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic/taskvars_out.json b/test/units/plugins/action/fixtures/synchronize/basic/taskvars_out.json new file mode 100644 index 00000000000..01ebee25296 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic/taskvars_out.json @@ -0,0 +1,156 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "::1" + ], + "all": [ + "el6host", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__03600813b83569c710bf5cb2a040d6e01da927c6", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__03600813b83569c710bf5cb2a040d6e01da927c6", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "el6host", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "::1" + ], + "all": [ + "el6host", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__03600813b83569c710bf5cb2a040d6e01da927c6", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "ansible_host": "el6host", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__03600813b83569c710bf5cb2a040d6e01da927c6", + "ansible_python_interpreter": "/usr/bin/python", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_become/meta.yaml b/test/units/plugins/action/fixtures/synchronize/basic_become/meta.yaml new file mode 100644 index 00000000000..24daa108cc9 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_become/meta.yaml @@ -0,0 +1,38 @@ +task_args: + src: /tmp/deleteme + dest: /tmp/deleteme + #rsync_path: rsync +_task: + become: True + become_method: None +fixtures: + taskvars_in: task_vars_in.json + taskvars_out: task_vars_out.json +connection: + transport: 'ssh' +_play_context: + become: True + become_method: sudo + remote_addr: el6host + remote_user: root +hostvars: + '127.0.0.1': {} + '::1': {} + 'localhost': {} +asserts: + - "hasattr(SAM._connection, 'ismock')" + - "SAM._connection.transport == 'local'" + - "self.execute_called" + - "self.task.args['_local_rsync_path'] == 'rsync'" + # this is a crucial aspect of this scenario ... + - "self.task.args['rsync_path'] == '\"sudo rsync\"'" + - "self.task.args['src'] == '/tmp/deleteme'" + - "self.task.args['dest'] == 'root@el6host:/tmp/deleteme'" + - "self.task.become == True" + - "self.task.become_user == None" + - "self._play_context.shell == 'sh'" + - "self._play_context.remote_addr == 'el6host'" + - "self._play_context.remote_user == 'root'" + - "self._play_context.become == False" + - "self._play_context.become_user == 'root'" + - "self._play_context.password == None" diff --git a/test/units/plugins/action/fixtures/synchronize/basic_become/task_args_out.json b/test/units/plugins/action/fixtures/synchronize/basic_become/task_args_out.json new file mode 100644 index 00000000000..c1aff9c33c1 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_become/task_args_out.json @@ -0,0 +1,6 @@ +{ + "dest": "root@el6host:/tmp/deleteme", + "src": "/tmp/deleteme", + "rsync_path": "\"sudo rsync\"", + "_local_rsync_path": "rsync" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_become/task_vars_in.json b/test/units/plugins/action/fixtures/synchronize/basic_become/task_vars_in.json new file mode 100644 index 00000000000..0f1f9784a7d --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_become/task_vars_in.json @@ -0,0 +1,151 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "el6host", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "ansible_host": "el6host", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_become/task_vars_out.json b/test/units/plugins/action/fixtures/synchronize/basic_become/task_vars_out.json new file mode 100644 index 00000000000..75abced318a --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_become/task_vars_out.json @@ -0,0 +1,156 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "::1" + ], + "all": [ + "el6host", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "el6host", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "::1" + ], + "all": [ + "el6host", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "ansible_host": "el6host", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "ansible_python_interpreter": "/usr/bin/python", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_become_cli/meta.yaml b/test/units/plugins/action/fixtures/synchronize/basic_become_cli/meta.yaml new file mode 100644 index 00000000000..f4399be30c1 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_become_cli/meta.yaml @@ -0,0 +1,38 @@ +task_args: + src: /tmp/deleteme + dest: /tmp/deleteme + #rsync_path: rsync +_task: + become: None + become_method: None +fixtures: + taskvars_in: task_vars_in.json + taskvars_out: task_vars_out.json +connection: + transport: 'ssh' +_play_context: + become: True + become_method: sudo + remote_addr: el6host + remote_user: root +hostvars: + '127.0.0.1': {} + '::1': {} + 'localhost': {} +asserts: + - "hasattr(SAM._connection, 'ismock')" + - "SAM._connection.transport == 'local'" + - "self.execute_called" + - "self.task.args['_local_rsync_path'] == 'rsync'" + # this is a crucial aspect of this scenario ... + - "self.task.args['rsync_path'] == '\"sudo rsync\"'" + - "self.task.args['src'] == '/tmp/deleteme'" + - "self.task.args['dest'] == 'root@el6host:/tmp/deleteme'" + - "self.task.become == None" + - "self.task.become_user == None" + - "self._play_context.shell == 'sh'" + - "self._play_context.remote_addr == 'el6host'" + - "self._play_context.remote_user == 'root'" + - "self._play_context.become == False" + - "self._play_context.become_user == 'root'" + - "self._play_context.password == None" diff --git a/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_args_out.json b/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_args_out.json new file mode 100644 index 00000000000..c1aff9c33c1 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_args_out.json @@ -0,0 +1,6 @@ +{ + "dest": "root@el6host:/tmp/deleteme", + "src": "/tmp/deleteme", + "rsync_path": "\"sudo rsync\"", + "_local_rsync_path": "rsync" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_vars_in.json b/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_vars_in.json new file mode 100644 index 00000000000..0f1f9784a7d --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_vars_in.json @@ -0,0 +1,151 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "el6host", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "ansible_host": "el6host", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_vars_out.json b/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_vars_out.json new file mode 100644 index 00000000000..75abced318a --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_become_cli/task_vars_out.json @@ -0,0 +1,156 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "::1" + ], + "all": [ + "el6host", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "el6host", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "::1" + ], + "all": [ + "el6host", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host" + ], + "all": [ + "el6host" + ] + }, + "ansible_host": "el6host", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__b3ac1e6ebeed06f4be0c1edca3dca34036cf7f57", + "ansible_python_interpreter": "/usr/bin/python", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant/meta.yaml b/test/units/plugins/action/fixtures/synchronize/basic_vagrant/meta.yaml new file mode 100644 index 00000000000..904a21a8ee6 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant/meta.yaml @@ -0,0 +1,29 @@ +task_args: + src: /tmp/deleteme + dest: /tmp/deleteme +fixtures: + taskvars_in: task_vars_in.json + taskvars_out: task_vars_out.json +connection: + transport: 'ssh' +_play_context: + remote_addr: '127.0.0.1' + remote_user: vagrant +hostvars: + '127.0.0.1': {} + '::1': {} + 'localhost': {} +asserts: + - "hasattr(SAM._connection, 'ismock')" + - "SAM._connection.transport == 'local'" + - "self.execute_called" + - "self.task.args['_local_rsync_path'] == 'rsync'" + - "self.task.args['dest_port'] == 2202" + - "self.task.args['src'] == '/tmp/deleteme'" + - "self.task.args['dest'] == '/tmp/deleteme'" + - "self._play_context.shell == 'sh'" + - "self._play_context.remote_addr == '127.0.0.1'" + - "self._play_context.remote_user == 'vagrant'" + - "self._play_context.become == False" + - "self._play_context.become_user == 'root'" + - "self._play_context.password == None" diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_args_out.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_args_out.json new file mode 100644 index 00000000000..48ea779d06a --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_args_out.json @@ -0,0 +1,7 @@ +{ + "dest": "/tmp/deleteme", + "src": "/tmp/deleteme", + "private_key": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "dest_port": 2202, + "_local_rsync_path": "rsync" +} diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_vars_in.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_vars_in.json new file mode 100644 index 00000000000..a43a2db4c79 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_vars_in.json @@ -0,0 +1,164 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "vagrant", + "ansible_play_hosts": [ + "default" + ], + "ansible_connection": "ssh", + "ansible_ssh_common_args": "", + "ansible_ssh_host": "127.0.0.1", + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "vars": { + "ansible_check_mode": false, + "environment": [], + "inventory_hostname": "default", + "inventory_file": null, + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "play_hosts": [ + "default" + ], + "ansible_play_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__06c4a1b11530cabdf4248804078c1ddacfb88b5e", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__06c4a1b11530cabdf4248804078c1ddacfb88b5e", + "ansible_ssh_port": 2202, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "vagrant" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "environment": [], + "ansible_current_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__06c4a1b11530cabdf4248804078c1ddacfb88b5e", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": null, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "ansible_port": 2202, + "ansible_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "ansible_host": "127.0.0.1", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "default", + "omit": "__omit_place_holder__06c4a1b11530cabdf4248804078c1ddacfb88b5e", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "vagrant", + "role_names": [], + "play_hosts": [ + "default" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_vars_out.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_vars_out.json new file mode 100644 index 00000000000..26ea5d46c15 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant/task_vars_out.json @@ -0,0 +1,169 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "vagrant", + "ansible_play_hosts": [ + "default" + ], + "ansible_connection": "ssh", + "ansible_ssh_common_args": "", + "ansible_ssh_host": "127.0.0.1", + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "vars": { + "ansible_check_mode": false, + "environment": [], + "inventory_hostname": "default", + "inventory_file": null, + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "play_hosts": [ + "default" + ], + "ansible_play_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default", + "::1" + ], + "all": [ + "default", + "::1" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__06c4a1b11530cabdf4248804078c1ddacfb88b5e", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__06c4a1b11530cabdf4248804078c1ddacfb88b5e", + "ansible_ssh_port": 2202, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "vagrant" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "environment": [], + "ansible_current_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default", + "::1" + ], + "all": [ + "default", + "::1" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__06c4a1b11530cabdf4248804078c1ddacfb88b5e", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": null, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "ansible_port": 2202, + "ansible_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "ansible_host": "127.0.0.1", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "default", + "omit": "__omit_place_holder__06c4a1b11530cabdf4248804078c1ddacfb88b5e", + "ansible_python_interpreter": "/usr/bin/python", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "vagrant", + "role_names": [], + "play_hosts": [ + "default" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/meta.yaml b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/meta.yaml new file mode 100644 index 00000000000..89f1eeee117 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/meta.yaml @@ -0,0 +1,32 @@ +task: + #become: None +task_args: + src: /tmp/deleteme + dest: /tmp/deleteme +fixtures: + taskvars_in: task_vars_in.json + taskvars_out: task_vars_out.json +connection: + transport: 'ssh' +_play_context: + become: True + remote_addr: '127.0.0.1' + remote_user: vagrant +hostvars: + '127.0.0.1': {} + '::1': {} + 'localhost': {} +asserts: + - "hasattr(SAM._connection, 'ismock')" + - "SAM._connection.transport == 'local'" + - "self.execute_called" + - "self.task.args['_local_rsync_path'] == 'rsync'" + - "self.task.args['dest_port'] == 2202" + - "self.task.args['src'] == '/tmp/deleteme'" + - "self.task.args['dest'] == '/tmp/deleteme'" + - "self._play_context.shell == 'sh'" + - "self._play_context.remote_addr == '127.0.0.1'" + - "self._play_context.remote_user == 'vagrant'" + - "self._play_context.become == False" + - "self._play_context.become_user == 'root'" + - "self._play_context.password == None" diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_args_out.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_args_out.json new file mode 100644 index 00000000000..9c77ccf8ae2 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_args_out.json @@ -0,0 +1,7 @@ +{ + "dest": "/tmp/deleteme", + "src": "/tmp/deleteme", + "private_key": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "dest_port": 2202, + "_local_rsync_path": "rsync" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_vars_in.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_vars_in.json new file mode 100644 index 00000000000..1ecbda5b60b --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_vars_in.json @@ -0,0 +1,164 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "vagrant", + "ansible_play_hosts": [ + "default" + ], + "ansible_connection": "ssh", + "ansible_ssh_common_args": "", + "ansible_ssh_host": "127.0.0.1", + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "vars": { + "ansible_check_mode": false, + "environment": [], + "inventory_hostname": "default", + "inventory_file": null, + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "play_hosts": [ + "default" + ], + "ansible_play_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "ansible_ssh_port": 2202, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "vagrant" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "environment": [], + "ansible_current_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": null, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "ansible_port": 2202, + "ansible_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "ansible_host": "127.0.0.1", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "default", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "vagrant", + "role_names": [], + "play_hosts": [ + "default" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_vars_out.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_vars_out.json new file mode 100644 index 00000000000..a1cf5f28fc8 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_become_cli/task_vars_out.json @@ -0,0 +1,169 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "vagrant", + "ansible_play_hosts": [ + "default" + ], + "ansible_connection": "ssh", + "ansible_ssh_common_args": "", + "ansible_ssh_host": "127.0.0.1", + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "vars": { + "ansible_check_mode": false, + "environment": [], + "inventory_hostname": "default", + "inventory_file": null, + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "play_hosts": [ + "default" + ], + "ansible_play_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default", + "::1" + ], + "all": [ + "default", + "::1" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "ansible_ssh_port": 2202, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "vagrant" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "environment": [], + "ansible_current_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default", + "::1" + ], + "all": [ + "default", + "::1" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": null, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "ansible_port": 2202, + "ansible_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "ansible_host": "127.0.0.1", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "default", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "ansible_python_interpreter": "/usr/bin/python", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "vagrant", + "role_names": [], + "play_hosts": [ + "default" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/meta.yaml b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/meta.yaml new file mode 100644 index 00000000000..904a21a8ee6 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/meta.yaml @@ -0,0 +1,29 @@ +task_args: + src: /tmp/deleteme + dest: /tmp/deleteme +fixtures: + taskvars_in: task_vars_in.json + taskvars_out: task_vars_out.json +connection: + transport: 'ssh' +_play_context: + remote_addr: '127.0.0.1' + remote_user: vagrant +hostvars: + '127.0.0.1': {} + '::1': {} + 'localhost': {} +asserts: + - "hasattr(SAM._connection, 'ismock')" + - "SAM._connection.transport == 'local'" + - "self.execute_called" + - "self.task.args['_local_rsync_path'] == 'rsync'" + - "self.task.args['dest_port'] == 2202" + - "self.task.args['src'] == '/tmp/deleteme'" + - "self.task.args['dest'] == '/tmp/deleteme'" + - "self._play_context.shell == 'sh'" + - "self._play_context.remote_addr == '127.0.0.1'" + - "self._play_context.remote_user == 'vagrant'" + - "self._play_context.become == False" + - "self._play_context.become_user == 'root'" + - "self._play_context.password == None" diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_args_out.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_args_out.json new file mode 100644 index 00000000000..9c77ccf8ae2 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_args_out.json @@ -0,0 +1,7 @@ +{ + "dest": "/tmp/deleteme", + "src": "/tmp/deleteme", + "private_key": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "dest_port": 2202, + "_local_rsync_path": "rsync" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_vars_in.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_vars_in.json new file mode 100644 index 00000000000..1ecbda5b60b --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_vars_in.json @@ -0,0 +1,164 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "vagrant", + "ansible_play_hosts": [ + "default" + ], + "ansible_connection": "ssh", + "ansible_ssh_common_args": "", + "ansible_ssh_host": "127.0.0.1", + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "vars": { + "ansible_check_mode": false, + "environment": [], + "inventory_hostname": "default", + "inventory_file": null, + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "play_hosts": [ + "default" + ], + "ansible_play_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "ansible_ssh_port": 2202, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "vagrant" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "environment": [], + "ansible_current_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": null, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "ansible_port": 2202, + "ansible_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "ansible_host": "127.0.0.1", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "default", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "vagrant", + "role_names": [], + "play_hosts": [ + "default" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_vars_out.json b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_vars_out.json new file mode 100644 index 00000000000..a1cf5f28fc8 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/basic_vagrant_sudo/task_vars_out.json @@ -0,0 +1,169 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "vagrant", + "ansible_play_hosts": [ + "default" + ], + "ansible_connection": "ssh", + "ansible_ssh_common_args": "", + "ansible_ssh_host": "127.0.0.1", + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "vars": { + "ansible_check_mode": false, + "environment": [], + "inventory_hostname": "default", + "inventory_file": null, + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "play_hosts": [ + "default" + ], + "ansible_play_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default", + "::1" + ], + "all": [ + "default", + "::1" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "ansible_ssh_port": 2202, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "vagrant" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "environment": [], + "ansible_current_hosts": [ + "default" + ], + "hostvars": { + "default": { + "inventory_file": null, + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "default", + "::1" + ], + "all": [ + "default", + "::1" + ] + }, + "ansible_ssh_port": 2202, + "inventory_hostname": "default", + "ansible_ssh_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "inventory_hostname_short": "default", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "ansible_ssh_host": "127.0.0.1", + "ansible_ssh_user": "vagrant", + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": null, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "ansible_port": 2202, + "ansible_private_key_file": "/home/jtanner/workspace/issues/AP-15905/.vagrant/machines/default/virtualbox/private_key", + "groups": { + "ungrouped": [ + "default" + ], + "all": [ + "default" + ] + }, + "ansible_ssh_port": 2202, + "ansible_host": "127.0.0.1", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "default", + "omit": "__omit_place_holder__c360b80aa60ddd99087425dcd3a2094cdd5b8474", + "ansible_python_interpreter": "/usr/bin/python", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905/.vagrant/provisioners/ansible/inventory", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "vagrant", + "role_names": [], + "play_hosts": [ + "default" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/delegate_remote/meta.yaml b/test/units/plugins/action/fixtures/synchronize/delegate_remote/meta.yaml new file mode 100644 index 00000000000..49c96786ff2 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/delegate_remote/meta.yaml @@ -0,0 +1,26 @@ +fixtures: + taskvars_in: task_vars_in.json + taskvars_out: task_vars_out.json +task_args: + src: /tmp/deleteme + dest: /tmp/deleteme +_task: + delegate_to: u1404 +_play_context: + shell: None + remote_addr: u1404 + remote_user: root +connection: + transport: 'ssh' +hostvars: + '127.0.0.1': {} + '::1': {} + 'localhost': {} +asserts: + - "hasattr(SAM._connection, 'ismock')" + - "SAM._connection.transport == 'ssh'" + - "self._play_context.shell == None" + - "self.execute_called" + - "self.task.args['_local_rsync_path'] == 'rsync'" + - "self.task.args['src'] == '/tmp/deleteme'" + - "self.task.args['dest'] == 'el6host:/tmp/deleteme'" diff --git a/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_args_out.json b/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_args_out.json new file mode 100644 index 00000000000..7b2ac0299d7 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_args_out.json @@ -0,0 +1,5 @@ +{ + "dest": "el6host:/tmp/deleteme", + "src": "/tmp/deleteme", + "_local_rsync_path": "rsync" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_vars_in.json b/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_vars_in.json new file mode 100644 index 00000000000..b8893eef85c --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_vars_in.json @@ -0,0 +1,379 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "ansible_delegated_vars": { + "u1404": { + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "vars": { + "inventory_file": "inventory", + "role_names": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "ansible_ssh_user": "root", + "group_names": [ + "ungrouped" + ], + "play_hosts": [ + "el6host" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "group_names": [ + "ungrouped" + ], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "ansible_host": "u1404", + "environment": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "play_hosts": [ + "el6host" + ], + "role_names": [], + "ansible_port": null, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + } + }, + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "u1404": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "u1404", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "u1404": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_delegated_vars": { + "u1404": { + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "ansible_ssh_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "group_names": [ + "ungrouped" + ], + "play_hosts": [ + "el6host" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "role_names": [] + }, + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "group_names": [ + "ungrouped" + ], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "ansible_host": "u1404", + "environment": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "play_hosts": [ + "el6host" + ], + "role_names": [], + "ansible_port": null, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + } + }, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_host": "u1404", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_vars_out.json b/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_vars_out.json new file mode 100644 index 00000000000..0b551f041d4 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/delegate_remote/task_vars_out.json @@ -0,0 +1,387 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "ansible_delegated_vars": { + "u1404": { + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "vars": { + "inventory_file": "inventory", + "role_names": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "ansible_ssh_user": "root", + "group_names": [ + "ungrouped" + ], + "play_hosts": [ + "el6host" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "group_names": [ + "ungrouped" + ], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "ansible_host": "u1404", + "environment": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "play_hosts": [ + "el6host" + ], + "role_names": [], + "ansible_port": null, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + } + }, + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404", + "::1" + ], + "all": [ + "el6host", + "u1404", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "u1404": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404", + "::1" + ], + "all": [ + "el6host", + "u1404", + "::1" + ] + }, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "u1404", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404", + "::1" + ], + "all": [ + "el6host", + "u1404", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "u1404": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404", + "::1" + ], + "all": [ + "el6host", + "u1404", + "::1" + ] + }, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_delegated_vars": { + "u1404": { + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "ansible_ssh_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "group_names": [ + "ungrouped" + ], + "play_hosts": [ + "el6host" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "role_names": [] + }, + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "group_names": [ + "ungrouped" + ], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "ansible_host": "u1404", + "environment": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "play_hosts": [ + "el6host" + ], + "role_names": [], + "ansible_port": null, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + } + }, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_host": "u1404", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__2433ce0463ffd13b68850ce9cdd98a1cde088e22", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/meta.yaml b/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/meta.yaml new file mode 100644 index 00000000000..0abc8bf6c46 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/meta.yaml @@ -0,0 +1,33 @@ +fixtures: + taskvars_in: task_vars_in.json + taskvars_out: task_vars_out.json +task_args: + src: /tmp/deleteme + dest: /tmp/deleteme +_task: + delegate_to: u1404 +_play_context: + become: True + become_user: None #if ! None|root, different testcase + become_method: su + shell: None + remote_addr: u1404 + remote_user: root +connection: + transport: 'ssh' +hostvars: + '127.0.0.1': {} + '::1': {} + 'localhost': {} +asserts: + - "hasattr(SAM._connection, 'ismock')" + - "SAM._connection.transport == 'ssh'" + - "self._play_context.shell == None" + - "self._play_context.remote_addr == 'u1404'" + - "self._play_context.remote_user == 'root'" + - "not self._play_context.become" + - "self._play_context.become_method == 'su'" + - "self.execute_called" + - "self.task.args['_local_rsync_path'] == 'rsync'" + - "self.task.args['src'] == '/tmp/deleteme'" + - "self.task.args['dest'] == 'el6host:/tmp/deleteme'" diff --git a/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_args_out.json b/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_args_out.json new file mode 100644 index 00000000000..f1f25ddac17 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_args_out.json @@ -0,0 +1,6 @@ +{ + "dest": "el6host:/tmp/deleteme", + "src": "/tmp/deleteme", + "rsync_path": "\"sudo rsync\"", + "_local_rsync_path": "rsync" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_vars_in.json b/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_vars_in.json new file mode 100644 index 00000000000..634bcb3ffe4 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_vars_in.json @@ -0,0 +1,379 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "ansible_delegated_vars": { + "u1404": { + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "vars": { + "inventory_file": "inventory", + "role_names": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "ansible_ssh_user": "root", + "group_names": [ + "ungrouped" + ], + "play_hosts": [ + "el6host" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "group_names": [ + "ungrouped" + ], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "ansible_host": "u1404", + "environment": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "play_hosts": [ + "el6host" + ], + "role_names": [], + "ansible_port": null, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + } + }, + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "u1404": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "u1404", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "u1404": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_delegated_vars": { + "u1404": { + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "ansible_ssh_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "group_names": [ + "ungrouped" + ], + "play_hosts": [ + "el6host" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "role_names": [] + }, + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "group_names": [ + "ungrouped" + ], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "ansible_host": "u1404", + "environment": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "play_hosts": [ + "el6host" + ], + "role_names": [], + "ansible_port": null, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + } + }, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_host": "u1404", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_vars_out.json b/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_vars_out.json new file mode 100644 index 00000000000..54707ce8307 --- /dev/null +++ b/test/units/plugins/action/fixtures/synchronize/delegate_remote_su/task_vars_out.json @@ -0,0 +1,387 @@ +{ + "ansible_pipelining": false, + "ansible_docker_extra_args": "", + "ansible_scp_extra_args": "", + "ansible_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "ansible_connection": "smart", + "ansible_ssh_common_args": "", + "environment": [], + "inventory_hostname": "el6host", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "el6host", + "inventory_file": "inventory", + "ansible_delegated_vars": { + "u1404": { + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "vars": { + "inventory_file": "inventory", + "role_names": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "ansible_ssh_user": "root", + "group_names": [ + "ungrouped" + ], + "play_hosts": [ + "el6host" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "group_names": [ + "ungrouped" + ], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "ansible_host": "u1404", + "environment": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "play_hosts": [ + "el6host" + ], + "role_names": [], + "ansible_port": null, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + } + }, + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "role_names": [], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "play_hosts": [ + "el6host" + ], + "ansible_play_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404", + "::1" + ], + "all": [ + "el6host", + "u1404", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "u1404": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404", + "::1" + ], + "all": [ + "el6host", + "u1404", + "::1" + ] + }, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "group_names": [ + "ungrouped" + ], + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + }, + "ansible_accelerate_port": 5099, + "roledir": null, + "ansible_ssh_extra_args": "", + "ansible_ssh_host": "u1404", + "ansible_current_hosts": [ + "el6host" + ], + "hostvars": { + "el6host": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404", + "::1" + ], + "all": [ + "el6host", + "u1404", + "::1" + ] + }, + "inventory_hostname": "el6host", + "inventory_hostname_short": "el6host", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + }, + "u1404": { + "inventory_file": "inventory", + "group_names": [ + "ungrouped" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404", + "::1" + ], + "all": [ + "el6host", + "u1404", + "::1" + ] + }, + "inventory_hostname": "u1404", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "ansible_check_mode": false, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + } + } + }, + "group_names": [ + "ungrouped" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_pipelining": false, + "inventory_file": "inventory", + "ansible_delegated_vars": { + "u1404": { + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "vars": { + "ansible_check_mode": false, + "inventory_hostname": "u1404", + "inventory_file": "inventory", + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "environment": [], + "ansible_ssh_user": "root", + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "group_names": [ + "ungrouped" + ], + "play_hosts": [ + "el6host" + ], + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "role_names": [] + }, + "inventory_hostname_short": "u1404", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "group_names": [ + "ungrouped" + ], + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "ansible_host": "u1404", + "environment": [], + "ansible_play_hosts": [ + "el6host" + ], + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_check_mode": false, + "play_hosts": [ + "el6host" + ], + "role_names": [], + "ansible_port": null, + "ansible_version": { + "major": 2, + "full": "2.2.0", + "string": "2.2.0", + "minor": 2, + "revision": 0 + }, + "ansible_ssh_user": "root" + } + }, + "ansible_module_compression": "ZIP_DEFLATED", + "ansible_failed_hosts": [], + "ansible_check_mode": false, + "groups": { + "ungrouped": [ + "el6host", + "u1404" + ], + "all": [ + "el6host", + "u1404" + ] + }, + "ansible_host": "u1404", + "ansible_shell_executable": "/bin/sh", + "inventory_hostname_short": "el6host", + "omit": "__omit_place_holder__32a8706cee222390e0d92197fb49cc967bfafb57", + "inventory_dir": "/home/jtanner/workspace/issues/AP-15905", + "playbook_dir": "/home/jtanner/workspace/issues/AP-15905", + "ansible_ssh_user": "root", + "role_names": [], + "play_hosts": [ + "el6host" + ], + "ansible_sftp_extra_args": "" +} \ No newline at end of file diff --git a/test/units/plugins/action/test_synchronize.py b/test/units/plugins/action/test_synchronize.py new file mode 100644 index 00000000000..a22107d0a80 --- /dev/null +++ b/test/units/plugins/action/test_synchronize.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python + +''' +(Epdb) pprint(DeepDiff(self.final_task_vars, out_task_vars), indent=2) +{ 'dic_item_added': set([u"root['ansible_python_interpreter']"]), + 'dic_item_removed': set([ u"root['hostvars']['127.0.0.1']", + u"root['hostvars']['::1']", + u"root['hostvars']['localhost']"]), + 'iterable_item_added': { u"root['hostvars']['el6host']['groups']['all'][1]": u'::1', + u"root['hostvars']['el6host']['groups']['ungrouped'][1]": u'::1', + u"root['vars']['hostvars']['el6host']['groups']['all'][1]": u'::1', + u"root['vars']['hostvars']['el6host']['groups']['ungrouped'][1]": u'::1'}} +''' + +import json +import os +import sys +import unittest +import yaml + +from pprint import pprint +from ansible import plugins +import ansible.plugins +from ansible.compat.tests.mock import patch, MagicMock +from ansible.plugins.action.synchronize import ActionModule + +# Getting the incoming and outgoing task vars from the plugin's run method + +''' +import copy +safe_vars = {} +for k,v in task_vars.iteritems(): + if k not in ['vars', 'hostvars']: + safe_vars[k] = copy.deepcopy(v) + else: + sdata = str(v) + newv = eval(sdata) + safe_vars[k] = newv + +import json +with open('task_vars.json', 'wb') as f: + f.write(json.dumps(safe_vars, indent=2)) +''' + + + + +class TaskMock(object): + args = {'src': u'/tmp/deleteme', + 'dest': '/tmp/deleteme', + 'rsync_path': 'rsync'} + async = None + become = None + become_user = None + become_method = None + +class StdinMock(object): + shell = None + +class ConnectionMock(object): + ismock = True + _play_context = None + #transport = 'ssh' + transport = None + _new_stdin = StdinMock() + +class PlayContextMock(object): + shell = None + private_key_file = None + become = False + become_user = 'root' + become_method = None + check_mode = False + no_log = None + diff = None + remote_addr = None + remote_user = None + password = None + +class ModuleLoaderMock(object): + def find_plugin(self, module_name, mod_type): + pass + +class SharedLoaderMock(object): + module_loader = ModuleLoaderMock() + +class SynchronizeTester(object): + + ''' A wrapper for mocking out synchronize environments ''' + + task = TaskMock() + connection = ConnectionMock() + _play_context = PlayContextMock() + loader = None + templar = None + shared_loader_obj = SharedLoaderMock() + + final_task_vars = None + execute_called = False + + + def _execute_module(self, module_name, task_vars=None): + self.execute_called = True + self.final_task_vars = task_vars + return {} + + def runtest(self, fixturepath='fixtures/synchronize/basic'): + + metapath = os.path.join(fixturepath, 'meta.yaml') + with open(metapath, 'rb') as f: + fdata = f.read() + test_meta = yaml.load(fdata) + + # load inital play context vars + if '_play_context' in test_meta: + if test_meta['_play_context']: + self.task.args = {} + for k,v in test_meta['_play_context'].items(): + if v == 'None': + v = None + setattr(self._play_context, k, v) + + # load inital task context vars + if '_task' in test_meta: + if test_meta['_task']: + self.task.args = {} + for k,v in test_meta['_task'].items(): + #import epdb; epdb.st() + if v == 'None': + v = None + setattr(self.task, k, v) + + # load inital task vars + if 'task_args' in test_meta: + if test_meta['task_args']: + self.task.args = {} + for k,v in test_meta['task_args'].items(): + self.task.args[k] = v + + # load inital task vars + invarspath = os.path.join(fixturepath, + test_meta.get('fixtures', {}).get('taskvars_in', 'taskvars_in.json')) + with open(invarspath, 'rb') as f: + fdata = f.read() + fdata = fdata.decode("utf-8") + in_task_vars = json.loads(fdata) + + # load expected final task vars + outvarspath = os.path.join(fixturepath, + test_meta.get('fixtures', {}).get('taskvars_out', 'taskvars_out.json')) + with open(outvarspath, 'rb') as f: + fdata = f.read() + fdata = fdata.decode("utf-8") + out_task_vars = json.loads(fdata) + + # fixup the connection + for k,v in test_meta['connection'].items(): + setattr(self.connection, k, v) + + # fixup the hostvars + if test_meta['hostvars']: + for k,v in test_meta['hostvars'].items(): + in_task_vars['hostvars'][k] = v + + # initalize and run the module + SAM = ActionModule(self.task, self.connection, self._play_context, + self.loader, self.templar, self.shared_loader_obj) + SAM._execute_module = self._execute_module + result = SAM.run(task_vars=in_task_vars) + + # run assertions + for check in test_meta['asserts']: + value = eval(check) + #if not value: + # print(check, value) + # import epdb; epdb.st() + assert value, check + + +class FakePluginLoader(object): + mocked = True + + @staticmethod + def get(transport, play_context, new_stdin): + conn = ConnectionMock() + conn.transport = transport + conn._play_context = play_context + conn._new_stdin = new_stdin + return conn + + +class TestSynchronizeAction(unittest.TestCase): + + + fixturedir = os.path.dirname(__file__) + fixturedir = os.path.join(fixturedir, 'fixtures', 'synchronize') + #print(basedir) + + + @patch('ansible.plugins.action.synchronize.connection_loader', FakePluginLoader) + def test_basic(self): + x = SynchronizeTester() + x.runtest(fixturepath=os.path.join(self.fixturedir,'basic')) + + @patch('ansible.plugins.action.synchronize.connection_loader', FakePluginLoader) + def test_basic_become(self): + x = SynchronizeTester() + x.runtest(fixturepath=os.path.join(self.fixturedir,'basic_become')) + + @patch('ansible.plugins.action.synchronize.connection_loader', FakePluginLoader) + def test_basic_become_cli(self): + # --become on the cli sets _play_context.become + x = SynchronizeTester() + x.runtest(fixturepath=os.path.join(self.fixturedir,'basic_become_cli')) + + @patch('ansible.plugins.action.synchronize.connection_loader', FakePluginLoader) + def test_basic_vagrant(self): + # simple vagrant example + x = SynchronizeTester() + x.runtest(fixturepath=os.path.join(self.fixturedir,'basic_vagrant')) + + @patch('ansible.plugins.action.synchronize.connection_loader', FakePluginLoader) + def test_basic_vagrant_sudo(self): + # vagrant plus sudo + x = SynchronizeTester() + x.runtest(fixturepath=os.path.join(self.fixturedir,'basic_vagrant_sudo')) + + @patch('ansible.plugins.action.synchronize.connection_loader', FakePluginLoader) + def test_basic_vagrant_become_cli(self): + # vagrant plus sudo + x = SynchronizeTester() + x.runtest(fixturepath=os.path.join(self.fixturedir,'basic_vagrant_become_cli')) + + @patch('ansible.plugins.action.synchronize.connection_loader', FakePluginLoader) + def test_delegate_remote(self): + # delegate to other remote host + x = SynchronizeTester() + x.runtest(fixturepath=os.path.join(self.fixturedir,'delegate_remote')) + + @patch('ansible.plugins.action.synchronize.connection_loader', FakePluginLoader) + def test_delegate_remote_su(self): + # delegate to other remote host with su enabled + x = SynchronizeTester() + x.runtest(fixturepath=os.path.join(self.fixturedir,'delegate_remote_su')) + + +if __name__ == "__main__": + SynchronizeTester().runtest()