1# -*- coding: utf-8 -*- 2# Copyright (c) 2019 Ansible Project 3# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 4 5from __future__ import absolute_import, division, print_function 6__metaclass__ = type 7 8import pytest 9 10from ansible.module_utils._text import to_native 11from ansible.plugins.filter.core import to_uuid 12from ansible.errors import AnsibleFilterError 13 14 15UUID_DEFAULT_NAMESPACE_TEST_CASES = ( 16 ('example.com', 'ae780c3a-a3ab-53c2-bfb4-098da300b3fe'), 17 ('test.example', '8e437a35-c7c5-50ea-867c-5c254848dbc2'), 18 ('café.example', '8a99d6b1-fb8f-5f78-af86-879768589f56'), 19) 20 21UUID_TEST_CASES = ( 22 ('361E6D51-FAEC-444A-9079-341386DA8E2E', 'example.com', 'ae780c3a-a3ab-53c2-bfb4-098da300b3fe'), 23 ('361E6D51-FAEC-444A-9079-341386DA8E2E', 'test.example', '8e437a35-c7c5-50ea-867c-5c254848dbc2'), 24 ('11111111-2222-3333-4444-555555555555', 'example.com', 'e776faa5-5299-55dc-9057-7a00e6be2364'), 25) 26 27 28@pytest.mark.parametrize('value, expected', UUID_DEFAULT_NAMESPACE_TEST_CASES) 29def test_to_uuid_default_namespace(value, expected): 30 assert expected == to_uuid(value) 31 32 33@pytest.mark.parametrize('namespace, value, expected', UUID_TEST_CASES) 34def test_to_uuid(namespace, value, expected): 35 assert expected == to_uuid(value, namespace=namespace) 36 37 38def test_to_uuid_invalid_namespace(): 39 with pytest.raises(AnsibleFilterError) as e: 40 to_uuid('example.com', namespace='11111111-2222-3333-4444-555555555') 41 assert 'Invalid value' in to_native(e.value) 42