File: pypump_test.py

package info (click to toggle)
python-pypump 0.7-6
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 560 kB
  • sloc: python: 3,153; makefile: 134
file content (48 lines) | stat: -rw-r--r-- 1,724 bytes parent folder | download | duplicates (4)
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
from __future__ import absolute_import
from unittest import TestCase

try:
    from unittest import mock
except ImportError:
    import mock

from requests import exceptions as request_excs

from pypump import PyPump


class PyPumpTest(TestCase):
    @mock.patch("pypump.pypump.requests")
    def test_https_failover(self, requests_mock):
        store = mock.MagicMock()
        store.__iter__.return_value = []
        client = mock.Mock()
        verifier = mock.Mock()
        requests_mock.post.return_value.text = "%s=thingy&%s=secretthingy" % (PyPump.PARAM_TOKEN, PyPump.PARAM_TOKEN_SECRET)
        # re-add exceptions to mocked library
        requests_mock.exceptions = request_excs

        pump = PyPump(client, verifier, store=store)
        self.assertEqual(pump.protocol, "https")

        # verify == True
        fnc_mock = mock.Mock()
        fnc_mock.side_effect = request_excs.ConnectionError
        with self.assertRaises(request_excs.ConnectionError):
            pump._requester(fnc_mock, "")

        self.assertEqual(len(fnc_mock.call_args_list), 1)
        self.assertTrue(fnc_mock.call_args_list[0][0][0].startswith("https://"))
        self.assertEqual(pump.protocol, "https")

        # verify == False
        fnc_mock.reset_mock()
        pump.verify_requests = False
        with self.assertRaises(request_excs.ConnectionError):
            pump._requester(fnc_mock, "")

        self.assertEqual(len(fnc_mock.call_args_list), 2)
        self.assertTrue(fnc_mock.call_args_list[0][0][0].startswith("https://"))
        self.assertTrue(fnc_mock.call_args_list[1][0][0].startswith("http://"))
        # make sure that we're reset to https after
        self.assertEqual(pump.protocol, "https")