summaryrefslogtreecommitdiffstats
path: root/test/units/galaxy/test_role_requirements.py
blob: a84bbb52eda077f44cc7b316828fb87f5e2b4397 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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'] == ''