summaryrefslogtreecommitdiffstats
path: root/test/units/galaxy/test_role_requirements.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/units/galaxy/test_role_requirements.py')
-rw-r--r--test/units/galaxy/test_role_requirements.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/test/units/galaxy/test_role_requirements.py b/test/units/galaxy/test_role_requirements.py
new file mode 100644
index 0000000..a84bbb5
--- /dev/null
+++ b/test/units/galaxy/test_role_requirements.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+# Copyright: (c) 2020, Ansible Project
+# 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 pytest
+from ansible.playbook.role.requirement import RoleRequirement
+
+
+def test_null_role_url():
+ role = RoleRequirement.role_yaml_parse('')
+ assert role['src'] == ''
+ assert role['name'] == ''
+ assert role['scm'] is None
+ assert role['version'] is None
+
+
+def test_git_file_role_url():
+ role = RoleRequirement.role_yaml_parse('git+file:///home/bennojoy/nginx')
+ assert role['src'] == 'file:///home/bennojoy/nginx'
+ assert role['name'] == 'nginx'
+ assert role['scm'] == 'git'
+ assert role['version'] is None
+
+
+def test_https_role_url():
+ role = RoleRequirement.role_yaml_parse('https://github.com/bennojoy/nginx')
+ assert role['src'] == 'https://github.com/bennojoy/nginx'
+ assert role['name'] == 'nginx'
+ assert role['scm'] is None
+ assert role['version'] is None
+
+
+def test_git_https_role_url():
+ role = RoleRequirement.role_yaml_parse('git+https://github.com/geerlingguy/ansible-role-composer.git')
+ assert role['src'] == 'https://github.com/geerlingguy/ansible-role-composer.git'
+ assert role['name'] == 'ansible-role-composer'
+ assert role['scm'] == 'git'
+ assert role['version'] is None
+
+
+def test_git_version_role_url():
+ role = RoleRequirement.role_yaml_parse('git+https://github.com/geerlingguy/ansible-role-composer.git,main')
+ assert role['src'] == 'https://github.com/geerlingguy/ansible-role-composer.git'
+ assert role['name'] == 'ansible-role-composer'
+ assert role['scm'] == 'git'
+ assert role['version'] == 'main'
+
+
+@pytest.mark.parametrize("url", [
+ ('https://some.webserver.example.com/files/main.tar.gz'),
+ ('https://some.webserver.example.com/files/main.tar.bz2'),
+ ('https://some.webserver.example.com/files/main.tar.xz'),
+])
+def test_tar_role_url(url):
+ role = RoleRequirement.role_yaml_parse(url)
+ assert role['src'] == url
+ assert role['name'].startswith('main')
+ assert role['scm'] is None
+ assert role['version'] is None
+
+
+def test_git_ssh_role_url():
+ role = RoleRequirement.role_yaml_parse('git@gitlab.company.com:mygroup/ansible-base.git')
+ assert role['src'] == 'git@gitlab.company.com:mygroup/ansible-base.git'
+ assert role['name'].startswith('ansible-base')
+ assert role['scm'] is None
+ assert role['version'] is None
+
+
+def test_token_role_url():
+ role = RoleRequirement.role_yaml_parse('git+https://gitlab+deploy-token-312644:_aJQ9c3HWzmRR4knBNyx@gitlab.com/akasurde/ansible-demo')
+ assert role['src'] == 'https://gitlab+deploy-token-312644:_aJQ9c3HWzmRR4knBNyx@gitlab.com/akasurde/ansible-demo'
+ assert role['name'].startswith('ansible-demo')
+ assert role['scm'] == 'git'
+ assert role['version'] is None
+
+
+def test_token_new_style_role_url():
+ role = RoleRequirement.role_yaml_parse({"src": "git+https://gitlab+deploy-token-312644:_aJQ9c3HWzmRR4knBNyx@gitlab.com/akasurde/ansible-demo"})
+ assert role['src'] == 'https://gitlab+deploy-token-312644:_aJQ9c3HWzmRR4knBNyx@gitlab.com/akasurde/ansible-demo'
+ assert role['name'].startswith('ansible-demo')
+ assert role['scm'] == 'git'
+ assert role['version'] == ''