1- import logging
1+ #
2+ # Copyright 2025 ABSA Group Limited
3+ #
4+ # Licensed under the Apache License, Version 2.0 (the "License");
5+ # you may not use this file except in compliance with the License.
6+ # You may obtain a copy of the License at
7+ #
8+ # http://www.apache.org/licenses/LICENSE-2.0
9+ #
10+ # Unless required by applicable law or agreed to in writing, software
11+ # distributed under the License is distributed on an "AS IS" BASIS,
12+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ # See the License for the specific language governing permissions and
14+ # limitations under the License.
15+ #
16+
217from unittest .mock import MagicMock
318
419from src .utils .logging_levels import TRACE_LEVEL
5- import src .writers .writer_eventbridge as we
6- import src .writers .writer_kafka as wk
7- import src .writers .writer_postgres as wp
20+ import src .writers .writer_eventbridge as writer_eventbridge
21+ import src .writers .writer_kafka as writer_kafka
22+ import src .writers .writer_postgres as writer_postgres
823
924
1025def test_trace_eventbridge (caplog ):
11- logger = logging .getLogger ("trace.eventbridge" )
12- logger .setLevel (TRACE_LEVEL )
13- we .STATE ["logger" ] = logger
14- we .STATE ["event_bus_arn" ] = "arn:aws:events:region:acct:event-bus/test"
26+ # Set trace level on the module's logger
27+ writer_eventbridge .logger .setLevel (TRACE_LEVEL )
28+ caplog .set_level (TRACE_LEVEL )
29+
30+ writer = writer_eventbridge .WriterEventBridge ({"event_bus_arn" : "arn:aws:events:region:acct:event-bus/test" })
1531 mock_client = MagicMock ()
1632 mock_client .put_events .return_value = {"FailedEntryCount" : 0 , "Entries" : []}
17- we .STATE ["client" ] = mock_client
18- caplog .set_level (TRACE_LEVEL )
19- ok , err = we .write ("topic.eb" , {"k" : 1 })
33+ writer ._client = mock_client
34+
35+ ok , err = writer .write ("topic.eb" , {"k" : 1 })
36+
2037 assert ok and err is None
2138 assert any ("EventBridge payload" in rec .message for rec in caplog .records )
2239
@@ -28,21 +45,23 @@ def produce(self, *a, **kw):
2845 if cb :
2946 cb (None , object ())
3047
31- def flush (self , * a , ** kw ):
48+ def flush (self , timeout = None ):
3249 return 0
3350
34- logger = logging .getLogger ("trace.kafka" )
35- logger .setLevel (TRACE_LEVEL )
36- wk .STATE ["logger" ] = logger
37- wk .STATE ["producer" ] = FakeProducer ()
51+ # Set trace level on the module's logger
52+ writer_kafka .logger .setLevel (TRACE_LEVEL )
3853 caplog .set_level (TRACE_LEVEL )
39- ok , err = wk .write ("topic.kf" , {"k" : 2 })
54+
55+ writer = writer_kafka .WriterKafka ({"kafka_bootstrap_server" : "localhost:9092" })
56+ writer ._producer = FakeProducer ()
57+
58+ ok , err = writer .write ("topic.kf" , {"k" : 2 })
59+
4060 assert ok and err is None
4161 assert any ("Kafka payload" in rec .message for rec in caplog .records )
4262
4363
4464def test_trace_postgres (caplog , monkeypatch ):
45- # Prepare dummy psycopg2 connection machinery
4665 store = []
4766
4867 class DummyCursor :
@@ -72,15 +91,17 @@ class DummyPsycopg2:
7291 def connect (self , ** kwargs ):
7392 return DummyConnection ()
7493
75- monkeypatch .setattr (wp , "psycopg2" , DummyPsycopg2 ())
76-
77- logger = logging .getLogger ("trace.postgres" )
78- logger .setLevel (TRACE_LEVEL )
79- wp .logger = logger
80- wp .POSTGRES = {"database" : "db" , "host" : "h" , "user" : "u" , "password" : "p" , "port" : 5432 }
94+ monkeypatch .setattr (writer_postgres , "psycopg2" , DummyPsycopg2 ())
8195
96+ # Set trace level on the module's logger
97+ writer_postgres .logger .setLevel (TRACE_LEVEL )
8298 caplog .set_level (TRACE_LEVEL )
99+
100+ writer = writer_postgres .WriterPostgres ({})
101+ writer ._db_config = {"database" : "db" , "host" : "h" , "user" : "u" , "password" : "p" , "port" : 5432 }
102+
83103 message = {"event_id" : "e" , "tenant_id" : "t" , "source_app" : "a" , "environment" : "dev" , "timestamp" : 1 }
84- ok , err = wp .write ("public.cps.za.test" , message )
104+ ok , err = writer .write ("public.cps.za.test" , message )
105+
85106 assert ok and err is None
86107 assert any ("Postgres payload" in rec .message for rec in caplog .records )
0 commit comments