|
1 | 1 | import json
|
| 2 | +from typing import Union |
2 | 3 |
|
3 | 4 | import pytest
|
4 | 5 | from pkg_resources import get_distribution
|
| 6 | +from requests import Session |
5 | 7 |
|
6 | 8 | from arango.client import ArangoClient
|
7 | 9 | from arango.database import StandardDatabase
|
@@ -108,3 +110,54 @@ def send_request(
|
108 | 110 | # Set verify to True to send a test API call on initialization.
|
109 | 111 | client.db(db.name, username, password, verify=True)
|
110 | 112 | assert http_client.counter == 1
|
| 113 | + |
| 114 | + |
| 115 | +def test_client_override_validate() -> None: |
| 116 | + # custom http client that manipulates the underlying session |
| 117 | + class MyHTTPClient(DefaultHTTPClient): |
| 118 | + def __init__(self, verify: Union[None, bool, str]) -> None: |
| 119 | + super().__init__() |
| 120 | + self.verify = verify |
| 121 | + |
| 122 | + def create_session(self, host: str) -> Session: |
| 123 | + session = super().create_session(host) |
| 124 | + session.verify = self.verify |
| 125 | + return session |
| 126 | + |
| 127 | + def assert_verify( |
| 128 | + http_client_verify: Union[None, str, bool], |
| 129 | + arango_override: Union[None, str, bool], |
| 130 | + expected_result: Union[None, str, bool], |
| 131 | + ) -> None: |
| 132 | + http_client = MyHTTPClient(verify=http_client_verify) |
| 133 | + client = ArangoClient( |
| 134 | + hosts="http://127.0.0.1:8529", |
| 135 | + http_client=http_client, |
| 136 | + verify_override=arango_override, |
| 137 | + ) |
| 138 | + # make sure there is at least 1 session |
| 139 | + assert len(client._sessions) > 0 |
| 140 | + for session in client._sessions: |
| 141 | + # make sure the final session.verify has expected value |
| 142 | + assert session.verify == expected_result |
| 143 | + |
| 144 | + assert_verify(None, None, None) |
| 145 | + assert_verify(None, True, True) |
| 146 | + assert_verify(None, False, False) |
| 147 | + assert_verify(None, "test", "test") |
| 148 | + |
| 149 | + assert_verify(True, None, True) |
| 150 | + assert_verify(True, True, True) |
| 151 | + assert_verify(True, "test", "test") |
| 152 | + assert_verify(True, False, False) |
| 153 | + |
| 154 | + assert_verify(False, None, False) |
| 155 | + assert_verify(False, True, True) |
| 156 | + assert_verify(False, "test", "test") |
| 157 | + assert_verify(False, False, False) |
| 158 | + |
| 159 | + assert_verify("test", None, "test") |
| 160 | + assert_verify("test", True, True) |
| 161 | + assert_verify("test", False, False) |
| 162 | + assert_verify("test", False, False) |
| 163 | + assert_verify("test", "foo", "foo") |
0 commit comments