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
|
from unittest.mock import patch
import pytest
from pymongo import MongoClient
from requests_cache._utils import get_valid_kwargs
from requests_cache.backends import (
GridFSCache,
GridFSPickleDict,
MongoCache,
MongoDict,
MongoPickleDict,
)
from tests.conftest import fail_if_no_connection
from tests.integration.base_cache_test import BaseCacheTest
from tests.integration.base_storage_test import BaseStorageTest
@pytest.fixture(scope='module', autouse=True)
@fail_if_no_connection()
def ensure_connection():
"""Fail all tests in this module if MongoDB is not running"""
from pymongo import MongoClient
client = MongoClient(serverSelectionTimeoutMS=200)
client.server_info()
class TestMongoDict(BaseStorageTest):
storage_class = MongoDict
class TestMongoPickleDict(BaseStorageTest):
storage_class = MongoPickleDict
picklable = True
@patch('requests_cache.backends.mongodb.MongoClient')
@patch(
'requests_cache.backends.mongodb.get_valid_kwargs',
side_effect=lambda cls, kwargs: get_valid_kwargs(MongoClient, kwargs),
)
def test_connection_kwargs(self, mock_get_valid_kwargs, mock_client):
"""A spot check to make sure optional connection kwargs gets passed to connection"""
MongoDict('test', host='http://0.0.0.0', port=1234, invalid_kwarg='???')
mock_client.assert_called_with(host='http://0.0.0.0', port=1234)
class TestMongoCache(BaseCacheTest):
backend_class = MongoCache
class TestGridFSPickleDict(BaseStorageTest):
storage_class = GridFSPickleDict
picklable = True
num_instances = 1 # Only test a single collecton instead of multiple
@patch('requests_cache.backends.gridfs.GridFS')
@patch('requests_cache.backends.gridfs.MongoClient')
@patch(
'requests_cache.backends.gridfs.get_valid_kwargs',
side_effect=lambda cls, kwargs: get_valid_kwargs(MongoClient, kwargs),
)
def test_connection_kwargs(self, mock_get_valid_kwargs, mock_client, mock_gridfs):
"""A spot check to make sure optional connection kwargs gets passed to connection"""
GridFSPickleDict('test', host='http://0.0.0.0', port=1234, invalid_kwarg='???')
mock_client.assert_called_with(host='http://0.0.0.0', port=1234)
class TestGridFSCache(BaseCacheTest):
backend_class = GridFSCache
|