Skip to content

Commit 32292e0

Browse files
committed
add base class for mongo dao
1 parent 9219789 commit 32292e0

File tree

7 files changed

+53
-69
lines changed

7 files changed

+53
-69
lines changed

dao/_base_mongo.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from pymongo import MongoClient
2+
3+
from sample_code.settings import (
4+
ARC_MONGO_AUTHMECHANISM,
5+
ARC_MONGO_AUTHSOURCE,
6+
ARC_MONGO_READ_PREFERENCE,
7+
)
8+
9+
10+
class BaseMongoDAO:
11+
def __init__(
12+
self,
13+
mongoServers: str,
14+
mongoReplicaset: str,
15+
username: str,
16+
password: str,
17+
database: str,
18+
) -> None:
19+
mongo_uri = f"mongodb://{username}:{password}@{mongoServers}"
20+
self.client = MongoClient(
21+
mongo_uri,
22+
replicaSet=mongoReplicaset,
23+
authSource=ARC_MONGO_AUTHSOURCE,
24+
readPreference=ARC_MONGO_READ_PREFERENCE,
25+
authMechanism=ARC_MONGO_AUTHMECHANISM,
26+
)[database]

dao/audit.py

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,27 @@
11
from datetime import datetime
22

3-
from pymongo import MongoClient
4-
3+
from sample_code.dao._base_mongo import BaseMongoDAO
54
from sample_code.settings import (
6-
ARC_MONGO_AUTHMECHANISM,
7-
ARC_MONGO_AUTHSOURCE,
8-
ARC_MONGO_READ_PREFERENCE,
95
AUDIT_COLLECTION,
6+
AUDIT_DATABASE,
7+
AUDIT_PASSWORD,
8+
AUDIT_USERNAME,
109
)
1110

1211

13-
class AuditDAO:
12+
class AuditDAO(BaseMongoDAO):
1413
def __init__(
1514
self,
1615
mongoServers: str,
1716
mongoReplicaset: str,
18-
username: str,
19-
password: str,
20-
database: str,
2117
) -> None:
22-
mongo_uri = f"mongodb://{username}:{password}@{mongoServers}"
23-
self.client = MongoClient(
24-
mongo_uri,
25-
replicaSet=mongoReplicaset,
26-
authSource=ARC_MONGO_AUTHSOURCE,
27-
readPreference=ARC_MONGO_READ_PREFERENCE,
28-
authMechanism=ARC_MONGO_AUTHMECHANISM,
29-
)[database]
18+
super().__init__(
19+
username=AUDIT_USERNAME,
20+
password=AUDIT_PASSWORD,
21+
database=AUDIT_DATABASE,
22+
mongoServers=mongoServers,
23+
mongoReplicaset=mongoReplicaset,
24+
)
3025

3126
def run_aggregation_query(collection, query, **kwargs):
3227
return collection.aggregate(query, **kwargs)

dao/usage.py

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,25 @@
11
from datetime import datetime
22

3-
from pymongo import DESCENDING, MongoClient
3+
from pymongo import DESCENDING
44
from pymongo.collection import Collection
55

6-
from sample_code.settings import (
7-
ARC_MONGO_AUTHMECHANISM,
8-
ARC_MONGO_AUTHSOURCE,
9-
ARC_MONGO_READ_PREFERENCE,
10-
COLLECTION,
11-
)
6+
from sample_code.dao._base_mongo import BaseMongoDAO
7+
from sample_code.settings import COLLECTION, DATABASE, PASSWORD, USERNAME
128

139

14-
class UsageDAO:
10+
class UsageDAO(BaseMongoDAO):
1511
def __init__(
1612
self,
1713
mongoServers: str,
1814
mongoReplicaset: str,
19-
username: str,
20-
password: str,
21-
database: str,
2215
) -> None:
23-
mongo_uri = f"mongodb://{username}:{password}@{mongoServers}"
24-
self.client = MongoClient(
25-
mongo_uri,
26-
replicaSet=mongoReplicaset,
27-
authSource=ARC_MONGO_AUTHSOURCE,
28-
readPreference=ARC_MONGO_READ_PREFERENCE,
29-
authMechanism=ARC_MONGO_AUTHMECHANISM,
30-
)[database]
16+
super().__init__(
17+
username=USERNAME,
18+
password=PASSWORD,
19+
database=DATABASE,
20+
mongoServers=mongoServers,
21+
mongoReplicaset=mongoReplicaset,
22+
)
3123

3224
def run_query(
3325
collection: Collection,

main.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,15 @@
77
from sample_code.dao.reporting import ReportDAO
88
from sample_code.dao.usage import UsageDAO
99
from sample_code.settings import (
10-
AUDIT_DATABASE,
11-
AUDIT_PASSWORD,
1210
AUDIT_REPLICASET,
1311
AUDIT_SERVER,
14-
AUDIT_USERNAME,
15-
DATABASE,
16-
PASSWORD,
1712
REPLICASET_A,
1813
REPLICASET_B,
1914
REPLICASET_C,
2015
REPORTING_AULDATALEAK_TABLENAME,
2116
SERVER_A,
2217
SERVER_B,
2318
SERVER_C,
24-
USERNAME,
2519
)
2620

2721

@@ -32,33 +26,21 @@ def __init__(self) -> None:
3226
self.auditClient = AuditDAO(
3327
mongoServers=AUDIT_SERVER,
3428
mongoReplicaset=AUDIT_REPLICASET,
35-
username=AUDIT_USERNAME,
36-
password=AUDIT_PASSWORD,
37-
database=AUDIT_DATABASE,
3829
)
3930

4031
self.usageClient_A = UsageDAO(
4132
mongoServers=SERVER_A,
4233
mongoReplicaset=REPLICASET_A,
43-
username=USERNAME,
44-
password=PASSWORD,
45-
database=DATABASE,
4634
)
4735

4836
self.usageClient_B = UsageDAO(
4937
mongoServers=SERVER_B,
5038
mongoReplicaset=REPLICASET_B,
51-
username=USERNAME,
52-
password=PASSWORD,
53-
database=DATABASE,
5439
)
5540

5641
self.usageClient_C = UsageDAO(
5742
mongoServers=SERVER_C,
5843
mongoReplicaset=REPLICASET_C,
59-
username=USERNAME,
60-
password=PASSWORD,
61-
database=DATABASE,
6244
)
6345

6446
def get_auldata_subscribers(self, auditRangeStart, auditRangeEnd):

tests/conftest.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55

66
@pytest.fixture(autouse=True)
7-
def mock_audit_mongo_client():
8-
mock_mongo_client = patch("sample_code.dao.audit.MongoClient")
7+
def mock_mongo_client():
8+
mock_mongo_client = patch("sample_code.dao._base_mongo.MongoClient")
99
yield mock_mongo_client.start()
1010
mock_mongo_client.stop()
1111

@@ -17,13 +17,6 @@ def mock_usage_mongo_run_agg_query():
1717
mock_run_query.stop()
1818

1919

20-
@pytest.fixture(autouse=True)
21-
def mock_usage_mongo_client():
22-
mock_mongo_client = patch("sample_code.dao.usage.MongoClient")
23-
yield mock_mongo_client.start()
24-
mock_mongo_client.stop()
25-
26-
2720
@pytest.fixture(autouse=True)
2821
def mock_usage_mongo_run_query():
2922
mock_run_query = patch("sample_code.dao.usage.UsageDAO.run_query")

tests/test_audit.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
def test_get_subscribers(mock_usage_mongo_run_agg_query):
77
startDate = date.today() - timedelta(days=1)
88
endDate = date.today()
9-
auditClient = AuditDAO(
10-
"mongo-server.com", "mongo-replicaset", "username", "secret_password", "db-name"
11-
)
9+
auditClient = AuditDAO("mongo-server.com", "mongo-replicaset")
1210

1311
auditClient.get_subscribers(startDate, endDate)
1412
assert mock_usage_mongo_run_agg_query.called_once()

tests/test_usage.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
def test_get_subscriber_usage(mock_usage_mongo_run_query):
77
effDate = date.today() - timedelta(days=1)
88
expDate = date.today()
9-
usageClient = UsageDAO(
10-
"mongo-server.com", "mongo-replicaset", "username", "secret_password", "db-name"
11-
)
9+
usageClient = UsageDAO("mongo-server.com", "mongo-replicaset")
1210

1311
usageClient.get_subscriber_usage("1", effDate, expDate)
1412
assert mock_usage_mongo_run_query.called_once()

0 commit comments

Comments
 (0)