File: test_credentials.py

package info (click to toggle)
python-jenkinsapi 0.3.17-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,500 kB
  • sloc: python: 10,001; xml: 50; makefile: 31; sh: 26
file content (150 lines) | stat: -rw-r--r-- 3,933 bytes parent folder | download
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
"""
System tests for `jenkinsapi.jenkins` module.
"""

import logging
import pytest
from jenkinsapi_tests.test_utils.random_strings import random_string
from jenkinsapi.credentials import Credentials
from jenkinsapi.credentials import UsernamePasswordCredential
from jenkinsapi.credentials import SecretTextCredential
from jenkinsapi.credential import SSHKeyCredential

log = logging.getLogger(__name__)


def test_get_credentials(jenkins):
    creds = jenkins.credentials
    assert isinstance(creds, Credentials) is True


def test_delete_inexistant_credential(jenkins):
    with pytest.raises(KeyError):
        creds = jenkins.credentials

        del creds[random_string()]


def test_create_user_pass_credential(jenkins):
    creds = jenkins.credentials

    cred_descr = random_string()
    cred_dict = {
        "description": cred_descr,
        "userName": "userName",
        "password": "password",
    }
    creds[cred_descr] = UsernamePasswordCredential(cred_dict)

    assert cred_descr in creds

    cred = creds[cred_descr]
    assert isinstance(cred, UsernamePasswordCredential) is True
    assert cred.password == ""
    assert cred.description == cred_descr

    del creds[cred_descr]


def test_update_user_pass_credential(jenkins):
    creds = jenkins.credentials

    cred_descr = random_string()
    cred_dict = {
        "description": cred_descr,
        "userName": "userName",
        "password": "password",
    }
    creds[cred_descr] = UsernamePasswordCredential(cred_dict)

    cred = creds[cred_descr]
    cred.userName = "anotheruser"
    cred.password = "password2"

    cred = creds[cred_descr]
    assert isinstance(cred, UsernamePasswordCredential) is True
    assert cred.userName == "anotheruser"
    assert cred.password == "password2"


def test_create_ssh_credential(jenkins):
    creds = jenkins.credentials

    cred_descr = random_string()
    cred_dict = {
        "description": cred_descr,
        "userName": "userName",
        "passphrase": "",
        "private_key": "-----BEGIN RSA PRIVATE KEY-----",
    }
    creds[cred_descr] = SSHKeyCredential(cred_dict)

    assert cred_descr in creds

    cred = creds[cred_descr]
    assert isinstance(cred, SSHKeyCredential) is True
    assert cred.description == cred_descr

    del creds[cred_descr]

    cred_dict = {
        "description": cred_descr,
        "userName": "userName",
        "passphrase": "",
        "private_key": "/tmp/key",
    }
    with pytest.raises(ValueError):
        creds[cred_descr] = SSHKeyCredential(cred_dict)

    cred_dict = {
        "description": cred_descr,
        "userName": "userName",
        "passphrase": "",
        "private_key": "~/.ssh/key",
    }
    with pytest.raises(ValueError):
        creds[cred_descr] = SSHKeyCredential(cred_dict)

    cred_dict = {
        "description": cred_descr,
        "userName": "userName",
        "passphrase": "",
        "private_key": "invalid",
    }
    with pytest.raises(ValueError):
        creds[cred_descr] = SSHKeyCredential(cred_dict)


def test_delete_credential(jenkins):
    creds = jenkins.credentials

    cred_descr = random_string()
    cred_dict = {
        "description": cred_descr,
        "userName": "userName",
        "password": "password",
    }
    creds[cred_descr] = UsernamePasswordCredential(cred_dict)

    assert cred_descr in creds
    del creds[cred_descr]
    assert cred_descr not in creds


def test_create_secret_text_credential(jenkins):
    """
    Tests the creation of a secret text.
    """
    creds = jenkins.credentials

    cred_descr = random_string()
    cred_dict = {"description": cred_descr, "secret": "newsecret"}
    creds[cred_descr] = SecretTextCredential(cred_dict)

    assert cred_descr in creds
    cred = creds[cred_descr]
    assert isinstance(cred, SecretTextCredential) is True
    assert cred.secret is None
    assert cred.description == cred_descr

    del creds[cred_descr]