File: test_session.py

package info (click to toggle)
python-picnic-api2 1.3.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 224 kB
  • sloc: python: 670; makefile: 3
file content (75 lines) | stat: -rw-r--r-- 2,718 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
import unittest
from unittest.mock import patch

from requests import Session

from python_picnic_api2.session import PicnicAPISession


class TestSession(unittest.TestCase):
    class MockResponse:
        def __init__(self, headers):
            self.headers = headers

    @patch.object(Session, "post")
    def test_update_auth_token(self, post_mock):
        """Test that the initial auth-token is saved."""
        post_mock.return_value = self.MockResponse(
            {"x-picnic-auth": "3p9fqahw3uehfaw9fh8aw3ufaw389fpawhuo3fa"}
        )

        picnic_session = PicnicAPISession()
        picnic_session.post(
            "https://picnic.app/user/login", json={"test": "data"}
        )
        self.assertDictEqual(
            dict(picnic_session.headers),
            {
                "Accept": "*/*",
                "Accept-Encoding": "gzip, deflate",
                "Connection": "keep-alive",
                "User-Agent": "okhttp/4.9.0",
                "Content-Type": "application/json; charset=UTF-8",
                "x-picnic-auth": "3p9fqahw3uehfaw9fh8aw3ufaw389fpawhuo3fa",
            },
        )

    @patch.object(Session, "post")
    def test_update_auth_token_refresh(self, post_mock):
        """Test that the auth-token is updated if a new one is given in the
        response headers."""
        post_mock.return_value = self.MockResponse(
            {"x-picnic-auth": "renewed-auth-token"}
        )

        picnic_session = PicnicAPISession(auth_token="initial-auth-token")
        self.assertEqual(picnic_session.auth_token, "initial-auth-token")

        picnic_session.post("https://picnic.app", json={"test": "data"})
        self.assertEqual(picnic_session.auth_token, "renewed-auth-token")

        self.assertDictEqual(
            dict(picnic_session.headers),
            {
                "Accept": "*/*",
                "Accept-Encoding": "gzip, deflate",
                "Connection": "keep-alive",
                "User-Agent": "okhttp/4.9.0",
                "Content-Type": "application/json; charset=UTF-8",
                "x-picnic-auth": "renewed-auth-token",
            },
        )

    def test_authenticated_with_auth_token(self):
        picnic_session = PicnicAPISession(auth_token=None)
        self.assertFalse(picnic_session.authenticated)
        self.assertIsNone(picnic_session.headers[picnic_session.AUTH_HEADER])

        picnic_session = PicnicAPISession(
            auth_token="3p9aw8fhzsefaw29f38h7p3fwuefah37f8kwg3i"
        )
        self.assertTrue(picnic_session.authenticated)
        self.assertEqual(
            picnic_session.headers[picnic_session.AUTH_HEADER],
            "3p9aw8fhzsefaw29f38h7p3fwuefah37f8kwg3i",
        )