@@ -36,6 +36,7 @@ def setUp(self):
3636
3737 # Get a fresh manager instance
3838 self .manager = CustomerSdkStatsManager ()
39+ self .mock_credential = Mock ()
3940
4041 def tearDown (self ):
4142 """Clean up test environment."""
@@ -92,16 +93,20 @@ def test_initialize_success(self, mock_meter_provider, mock_metric_reader, mock_
9293
9394 connection_string = "InstrumentationKey=12345678-1234-5678-abcd-12345678abcd"
9495
95- # Test initialization
96- result = self .manager .initialize (connection_string )
96+ # Test initialization with credential
97+ result = self .manager .initialize (connection_string , credential = self . mock_credential )
9798
9899 self .assertTrue (result )
99100 self .assertEqual (self .manager .status , CustomerSdkStatsStatus .ACTIVE )
100101 self .assertTrue (self .manager .is_initialized )
101102 self .assertFalse (self .manager .is_shutdown )
102103
103104 # Verify mocks were called
104- mock_exporter .assert_called_once ()
105+ mock_exporter .assert_called_once_with (
106+ connection_string = connection_string ,
107+ is_customer_sdkstats = True ,
108+ credential = self .mock_credential ,
109+ )
105110 mock_metric_reader .assert_called_once ()
106111 mock_meter_provider .assert_called_once ()
107112 self .assertEqual (mock_meter .create_observable_gauge .call_count , 3 )
@@ -129,6 +134,49 @@ def test_initialize_empty_connection_string(self):
129134 self .assertFalse (result )
130135 self .assertEqual (self .manager .status , CustomerSdkStatsStatus .UNINITIALIZED )
131136
137+ @patch ("azure.monitor.opentelemetry.exporter.export.metrics._exporter.AzureMonitorMetricExporter" )
138+ @patch ("azure.monitor.opentelemetry.exporter.statsbeat.customer._manager.PeriodicExportingMetricReader" )
139+ @patch ("azure.monitor.opentelemetry.exporter.statsbeat.customer._manager.MeterProvider" )
140+ def test_initialize_with_credential (self , mock_meter_provider , mock_metric_reader , mock_exporter ):
141+ """Test that credential is passed through to the exporter during initialization."""
142+ mock_meter = Mock ()
143+ mock_meter_provider_instance = Mock ()
144+ mock_meter_provider_instance .get_meter .return_value = mock_meter
145+ mock_meter_provider .return_value = mock_meter_provider_instance
146+
147+ connection_string = "InstrumentationKey=12345678-1234-5678-abcd-12345678abcd"
148+ mock_credential = Mock ()
149+
150+ result = self .manager .initialize (connection_string , credential = mock_credential )
151+
152+ self .assertTrue (result )
153+ self .assertTrue (self .manager .is_initialized )
154+ mock_exporter .assert_called_once_with (
155+ connection_string = connection_string ,
156+ is_customer_sdkstats = True ,
157+ credential = mock_credential ,
158+ )
159+
160+ @patch ("azure.monitor.opentelemetry.exporter.export.metrics._exporter.AzureMonitorMetricExporter" )
161+ @patch ("azure.monitor.opentelemetry.exporter.statsbeat.customer._manager.PeriodicExportingMetricReader" )
162+ @patch ("azure.monitor.opentelemetry.exporter.statsbeat.customer._manager.MeterProvider" )
163+ def test_initialize_without_credential (self , mock_meter_provider , mock_metric_reader , mock_exporter ):
164+ """Test that credential is not passed to the exporter when not provided."""
165+ mock_meter = Mock ()
166+ mock_meter_provider_instance = Mock ()
167+ mock_meter_provider_instance .get_meter .return_value = mock_meter
168+ mock_meter_provider .return_value = mock_meter_provider_instance
169+
170+ connection_string = "InstrumentationKey=12345678-1234-5678-abcd-12345678abcd"
171+
172+ result = self .manager .initialize (connection_string )
173+
174+ self .assertTrue (result )
175+ mock_exporter .assert_called_once_with (
176+ connection_string = connection_string ,
177+ is_customer_sdkstats = True ,
178+ )
179+
132180 def test_initialize_multiple_calls (self ):
133181 """Test that multiple initialization calls are handled correctly."""
134182 with patch ("azure.monitor.opentelemetry.exporter.export.metrics._exporter.AzureMonitorMetricExporter" ), patch (
0 commit comments