File: test_get_identities.py

package info (click to toggle)
python-briefcase 0.3.22-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,300 kB
  • sloc: python: 59,405; makefile: 57
file content (114 lines) | stat: -rw-r--r-- 4,153 bytes parent folder | download | duplicates (2)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import subprocess
from pathlib import Path

import pytest

from briefcase.exceptions import BriefcaseCommandError
from briefcase.integrations.xcode import get_identities


def security_result(name):
    """Load a security result file from the sample directory, and return the content."""
    filename = Path(__file__).parent / "security" / f"{name}.out"
    with filename.open(encoding="utf-8") as f:
        return f.read()


def test_security_missing(mock_tools):
    """If security is missing or fails to start, an exception is raised."""
    mock_tools.subprocess.check_output.side_effect = subprocess.CalledProcessError(
        cmd=["security", "find-identities", "-v", "-p", "codesigning"], returncode=1
    )

    with pytest.raises(BriefcaseCommandError):
        get_identities(mock_tools, "codesigning")

    # The filter is passed through
    mock_tools.subprocess.check_output.assert_called_once_with(
        ["security", "find-identity", "-v", "-p", "codesigning"]
    )


def test_invalid_profile(mock_tools):
    """If the requested profile is invalid, an exception is raised."""
    mock_tools.subprocess.check_output.side_effect = subprocess.CalledProcessError(
        cmd=["security", "find-identities", "-v", "-p", "jabberwock"], returncode=2
    )

    with pytest.raises(BriefcaseCommandError):
        get_identities(mock_tools, "jabberwock")

    # The filter is passed through
    mock_tools.subprocess.check_output.assert_called_once_with(
        ["security", "find-identity", "-v", "-p", "jabberwock"]
    )


def test_no_identities(mock_tools):
    """If there are no identities available, no simulators will be found."""
    mock_tools.subprocess.check_output.return_value = security_result("no-identities")

    simulators = get_identities(mock_tools, "codesigning")

    # The filter is passed through
    mock_tools.subprocess.check_output.assert_called_once_with(
        ["security", "find-identity", "-v", "-p", "codesigning"]
    )

    assert simulators == {}


def test_one_identity(mock_tools):
    """If there is one identity available, it is returned."""
    mock_tools.subprocess.check_output.return_value = security_result("one-identity")

    simulators = get_identities(mock_tools, "codesigning")

    # The filter is passed through
    mock_tools.subprocess.check_output.assert_called_once_with(
        ["security", "find-identity", "-v", "-p", "codesigning"]
    )

    assert simulators == {
        "38EBD6F8903EC63C238B04C1067833814CE47CA3": "Developer ID Application: Example Corporation Ltd (Z2K4383DLE)",
    }


def test_multiple_identities(mock_tools):
    """If there are multiple identities available, they are all returned."""
    mock_tools.subprocess.check_output.return_value = security_result(
        "multiple-identities"
    )

    simulators = get_identities(mock_tools, "codesigning")

    # The filter is passed through
    mock_tools.subprocess.check_output.assert_called_once_with(
        ["security", "find-identity", "-v", "-p", "codesigning"]
    )

    assert simulators == {
        "38EBD6F8903EC63C238B04C1067833814CE47CA3": "Developer ID Application: Example Corporation Ltd (Z2K4383DLE)",
        "11E77FB58F13F6108B38110D5D92233C58ED38C5": "iPhone Developer: Jane Smith (BXAH5H869S)",
        "F8903EC63C238B04C1067833814CE47CA338EBD6": "Developer ID Application: Other Corporation Ltd (83DLZ2K43E)",
    }


def test_no_profile(mock_tools):
    """If no profile is specified, no filtering is done."""
    mock_tools.subprocess.check_output.return_value = security_result(
        "multiple-identities"
    )

    simulators = get_identities(mock_tools)

    # No filter is passed through
    mock_tools.subprocess.check_output.assert_called_once_with(
        ["security", "find-identity", "-v"]
    )

    assert simulators == {
        "38EBD6F8903EC63C238B04C1067833814CE47CA3": "Developer ID Application: Example Corporation Ltd (Z2K4383DLE)",
        "11E77FB58F13F6108B38110D5D92233C58ED38C5": "iPhone Developer: Jane Smith (BXAH5H869S)",
        "F8903EC63C238B04C1067833814CE47CA338EBD6": "Developer ID Application: Other Corporation Ltd (83DLZ2K43E)",
    }