summaryrefslogtreecommitdiffstats
path: root/awxkit/test/cli/test_format.py
diff options
context:
space:
mode:
authorRigel Di Scala <rdiscala@redhat.com>2020-07-29 15:27:45 +0200
committerRigel Di Scala <rdiscala@redhat.com>2020-08-10 23:43:53 +0200
commit579604d2c666c9fc24ec9065b18fb74a6bf4f138 (patch)
tree29cc6b13701169a3ac1452f4759799c1e84fc98f /awxkit/test/cli/test_format.py
parentMerge pull request #7802 from ryanpetrello/vnnn-minus (diff)
downloadawx-579604d2c666c9fc24ec9065b18fb74a6bf4f138.tar.xz
awx-579604d2c666c9fc24ec9065b18fb74a6bf4f138.zip
Allow YAML as a CLI import format
This changset allows the import of YAML formatted resources. The CLI user can indicate which format to use with the `-f, --format` option. The CLI help text has been amended to reflect the new feature. The AWX CLI `export` subcommand offers the option of formatting the output as YAML or JSON, so it makes sense that the `import` subcommand reflects this. A simple test is also provided. In order to ease the task of testing commands that import resources by reading the stdin, the CLI has been extended to allow specifying an alternative file descriptor for stdin, similarly to stdout and stderr.
Diffstat (limited to '')
-rw-r--r--awxkit/test/cli/test_format.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/awxkit/test/cli/test_format.py b/awxkit/test/cli/test_format.py
index 7166fb841c..5ab6e55d6c 100644
--- a/awxkit/test/cli/test_format.py
+++ b/awxkit/test/cli/test_format.py
@@ -1,10 +1,13 @@
+import io
import json
import yaml
from awxkit.api.pages import Page
from awxkit.api.pages.users import Users, User
+from awxkit.cli import CLI
from awxkit.cli.format import format_response
+from awxkit.cli.resource import Import
def test_json_empty_list():
@@ -44,3 +47,26 @@ def test_yaml_list():
page = Users.from_json(users)
formatted = format_response(page, fmt='yaml')
assert yaml.safe_load(formatted) == users
+
+
+def test_yaml_import():
+ class MockedV2:
+ def import_assets(self, data):
+ self._parsed_data = data
+
+ def _dummy_authenticate():
+ pass
+
+ yaml_fd = io.StringIO(
+ """
+ workflow_job_templates:
+ - name: Workflow1
+ """
+ )
+ cli = CLI(stdin=yaml_fd)
+ cli.parse_args(['--conf.format', 'yaml'])
+ cli.v2 = MockedV2()
+ cli.authenticate = _dummy_authenticate
+
+ Import().handle(cli, None)
+ assert cli.v2._parsed_data['workflow_job_templates'][0]['name']