summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/cli
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/cli')
-rw-r--r--test/integration/targets/cli/aliases6
-rwxr-xr-xtest/integration/targets/cli/runme.sh9
-rw-r--r--test/integration/targets/cli/setup.yml42
-rw-r--r--test/integration/targets/cli/test-cli.py21
-rw-r--r--test/integration/targets/cli/test_k_and_K.py27
-rw-r--r--test/integration/targets/cli/test_syntax/files/vaultsecret1
-rw-r--r--test/integration/targets/cli/test_syntax/group_vars/all/testvault.yml6
-rw-r--r--test/integration/targets/cli/test_syntax/roles/some_role/tasks/main.yml1
-rw-r--r--test/integration/targets/cli/test_syntax/syntax_check.yml7
9 files changed, 120 insertions, 0 deletions
diff --git a/test/integration/targets/cli/aliases b/test/integration/targets/cli/aliases
new file mode 100644
index 0000000..e85a92f
--- /dev/null
+++ b/test/integration/targets/cli/aliases
@@ -0,0 +1,6 @@
+destructive
+needs/root
+needs/ssh
+needs/target/setup_pexpect
+shippable/posix/group5
+context/controller
diff --git a/test/integration/targets/cli/runme.sh b/test/integration/targets/cli/runme.sh
new file mode 100755
index 0000000..c4f0867
--- /dev/null
+++ b/test/integration/targets/cli/runme.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+set -eux
+
+ANSIBLE_ROLES_PATH=../ ansible-playbook setup.yml
+
+python test-cli.py
+
+ansible-playbook test_syntax/syntax_check.yml --syntax-check -i ../../inventory -v "$@"
diff --git a/test/integration/targets/cli/setup.yml b/test/integration/targets/cli/setup.yml
new file mode 100644
index 0000000..901cfd1
--- /dev/null
+++ b/test/integration/targets/cli/setup.yml
@@ -0,0 +1,42 @@
+- hosts: localhost
+ gather_facts: yes
+ roles:
+ - setup_pexpect
+
+ tasks:
+ - name: Test ansible-playbook and ansible with -K
+ block:
+ - name: Create user to connect as
+ user:
+ name: cliuser1
+ shell: /bin/bash
+ groups: wheel
+ append: yes
+ password: "{{ 'secretpassword' | password_hash('sha512', 'mysecretsalt') }}"
+ - name: Create user to become
+ user:
+ name: cliuser2
+ shell: /bin/bash
+ password: "{{ 'secretpassword' | password_hash('sha512', 'mysecretsalt') }}"
+ # Sometimes this file doesn't get removed, and we need it gone to ssh
+ - name: Remove /run/nologin
+ file:
+ path: /run/nologin
+ state: absent
+ # Make Ansible run Python to run Ansible
+ - name: Run the test
+ shell: python test_k_and_K.py {{ ansible_python_interpreter }}
+ always:
+ - name: Remove users
+ user:
+ name: "{{ item }}"
+ state: absent
+ with_items:
+ - cliuser1
+ - cliuser2
+ # For now, we don't test this everywhere, because `user` works differently
+ # on some platforms, as does sudo/sudoers. On Fedora, we can just add
+ # the user to 'wheel' and things magically work.
+ # TODO: In theory, we should test this with all the different 'become'
+ # plugins in base.
+ when: ansible_distribution == 'Fedora'
diff --git a/test/integration/targets/cli/test-cli.py b/test/integration/targets/cli/test-cli.py
new file mode 100644
index 0000000..9893d66
--- /dev/null
+++ b/test/integration/targets/cli/test-cli.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+# Copyright (c) 2019 Matt Martz <matt@sivel.net>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+# Make coding more python3-ish
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+import os
+
+import pexpect
+
+os.environ['ANSIBLE_NOCOLOR'] = '1'
+out = pexpect.run(
+ 'ansible localhost -m debug -a msg="{{ ansible_password }}" -k',
+ events={
+ 'SSH password:': '{{ 1 + 2 }}\n'
+ }
+)
+
+assert b'{{ 1 + 2 }}' in out
diff --git a/test/integration/targets/cli/test_k_and_K.py b/test/integration/targets/cli/test_k_and_K.py
new file mode 100644
index 0000000..f7077fb
--- /dev/null
+++ b/test/integration/targets/cli/test_k_and_K.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+# Make coding more python3-ish
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+import os
+import sys
+
+import pexpect
+
+os.environ['ANSIBLE_NOCOLOR'] = '1'
+
+out = pexpect.run(
+ 'ansible -c ssh -i localhost, -u cliuser1 -e ansible_python_interpreter={0} '
+ '-m command -a whoami -Kkb --become-user cliuser2 localhost'.format(sys.argv[1]),
+ events={
+ 'SSH password:': 'secretpassword\n',
+ 'BECOME password': 'secretpassword\n',
+ },
+ timeout=10
+)
+
+print(out)
+
+assert b'cliuser2' in out
diff --git a/test/integration/targets/cli/test_syntax/files/vaultsecret b/test/integration/targets/cli/test_syntax/files/vaultsecret
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/test/integration/targets/cli/test_syntax/files/vaultsecret
@@ -0,0 +1 @@
+test
diff --git a/test/integration/targets/cli/test_syntax/group_vars/all/testvault.yml b/test/integration/targets/cli/test_syntax/group_vars/all/testvault.yml
new file mode 100644
index 0000000..dab41f8
--- /dev/null
+++ b/test/integration/targets/cli/test_syntax/group_vars/all/testvault.yml
@@ -0,0 +1,6 @@
+$ANSIBLE_VAULT;1.1;AES256
+63666636353064303132316633383734303731353066643832633666616162373531306563616139
+3038343765633138376561336530366162646332353132620a643661663366336237636562393662
+61656465393864613832383565306133656332656534326530346638336165346264386666343266
+3066336331313830310a666265653532643434303233306635366635616261373166613564326238
+62306134303765306537396162623232396639316239616534613631336166616561
diff --git a/test/integration/targets/cli/test_syntax/roles/some_role/tasks/main.yml b/test/integration/targets/cli/test_syntax/roles/some_role/tasks/main.yml
new file mode 100644
index 0000000..307927c
--- /dev/null
+++ b/test/integration/targets/cli/test_syntax/roles/some_role/tasks/main.yml
@@ -0,0 +1 @@
+- debug: msg='in role'
diff --git a/test/integration/targets/cli/test_syntax/syntax_check.yml b/test/integration/targets/cli/test_syntax/syntax_check.yml
new file mode 100644
index 0000000..8e26cf0
--- /dev/null
+++ b/test/integration/targets/cli/test_syntax/syntax_check.yml
@@ -0,0 +1,7 @@
+- name: "main"
+ hosts: all
+ gather_facts: false
+ tasks:
+ - import_role:
+ name: some_role
+ delegate_to: testhost