File: test_fingerprint.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 (96 lines) | stat: -rw-r--r-- 2,948 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
import pytest
import hashlib
from jenkinsapi.jenkins import Jenkins
from jenkinsapi.jenkinsbase import JenkinsBase
from jenkinsapi.fingerprint import Fingerprint
from jenkinsapi.utils.requester import Requester
from requests.exceptions import HTTPError


@pytest.fixture(scope="function")
def jenkins(monkeypatch):
    def fake_poll(cls, tree=None):  # pylint: disable=unused-argument
        return {}

    monkeypatch.setattr(Jenkins, "_poll", fake_poll)

    return Jenkins(
        "http://localhost:8080", username="foouser", password="foopassword"
    )


@pytest.fixture(scope="module")
def dummy_md5():
    md = hashlib.md5()
    md.update("some dummy string".encode("ascii"))
    return md.hexdigest()


def test_object_creation(jenkins, dummy_md5, monkeypatch):
    def fake_poll(cls, tree=None):  # pylint: disable=unused-argument
        return {}

    monkeypatch.setattr(JenkinsBase, "_poll", fake_poll)
    fp_instance = Fingerprint("http://foo:8080", dummy_md5, jenkins)

    assert isinstance(fp_instance, Fingerprint)
    assert str(fp_instance) == dummy_md5
    assert fp_instance.valid()


def test_valid_for_404(jenkins, dummy_md5, monkeypatch):
    class FakeResponse(object):
        status_code = 404
        text = "{}"

    class FakeHTTPError(HTTPError):
        def __init__(self):
            self.response = FakeResponse()

    def fake_poll(cls, tree=None):  # pylint: disable=unused-argument
        raise FakeHTTPError()

    monkeypatch.setattr(JenkinsBase, "_poll", fake_poll)

    def fake_get_url(
        url,  # pylint: disable=unused-argument
        params=None,  # pylint: disable=unused-argument
        headers=None,  # pylint: disable=unused-argument
        allow_redirects=True,  # pylint: disable=unused-argument
        stream=False,
    ):  # pylint: disable=unused-argument
        return FakeResponse()

    monkeypatch.setattr(Requester, "get_url", fake_get_url)

    fingerprint = Fingerprint("http://foo:8080", dummy_md5, jenkins)
    assert fingerprint.valid() is True


def test_invalid_for_401(jenkins, dummy_md5, monkeypatch):
    class FakeResponse(object):
        status_code = 401
        text = "{}"

    class FakeHTTPError(HTTPError):
        def __init__(self):
            self.response = FakeResponse()

    def fake_poll(cls, tree=None):  # pylint: disable=unused-argument
        raise FakeHTTPError()

    monkeypatch.setattr(JenkinsBase, "_poll", fake_poll)

    def fake_get_url(
        url,  # pylint: disable=unused-argument
        params=None,  # pylint: disable=unused-argument
        headers=None,  # pylint: disable=unused-argument
        allow_redirects=True,  # pylint: disable=unused-argument
        stream=False,
    ):  # pylint: disable=unused-argument
        return FakeResponse()

    monkeypatch.setattr(Requester, "get_url", fake_get_url)

    fingerprint = Fingerprint("http://foo:8080", dummy_md5, jenkins)
    assert fingerprint.valid() is not True