22
33# pylint: disable=protected-access
44
5+ from types import SimpleNamespace
56from unittest .mock import MagicMock , patch
67
78import pytest
89
910from django .test import override_settings
1011
12+ import enterprise_data .api .v1 .views .lpr_data_source_snowflake as _lpr_module
1113from enterprise_data .api .v1 .views .lpr_data_source_snowflake import (
1214 DEFAULT_COURSE_PASSING_GRADE_CACHE_TIMEOUT ,
1315 DEFAULT_COURSE_PASSING_GRADE_NEGATIVE_CACHE_TIMEOUT ,
1416 DEFAULT_COURSE_PROGRESS_CACHE_TIMEOUT ,
1517 SnowflakeCoursePassingGradeSource ,
1618 SnowflakeCourseProgressSource ,
19+ _get_snowflake_connection ,
1720)
1821from enterprise_data .cache import get_key
1922
2427ENTERPRISE_UUID = "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
2528NORMALIZED_UUID = "a1b2c3d4e5f67890abcdef1234567890"
2629
27- DEFAULT_TABLE = "PROD.ENTERPRISE.LEARNER_PROGRESS_REPORT_INTERNAL "
30+ DEFAULT_TABLE = "PROD.ENTERPRISE.LEARNER_PROGRESS_REPORT_EXTERNAL "
2831DEFAULT_OVERVIEWS_TABLE = "PROD.LMS.COURSE_OVERVIEWS_COURSEOVERVIEW"
2932
3033
@@ -669,24 +672,21 @@ def cache_side_effect(cache_key):
669672class TestGetSnowflakeConnection :
670673 """Tests for the module-level private-key connection factory."""
671674
675+ # _mock_connector is set in the autouse fixture (pytest fixture pattern).
676+ # pylint: disable=attribute-defined-outside-init
677+
672678 @pytest .fixture (autouse = True )
673679 def _patch_crypto_and_connector (self , monkeypatch ):
674680 """Patch crypto libs and Snowflake connector so the real function can be called."""
675- from types import SimpleNamespace
676-
677- import enterprise_data .api .v1 .views .lpr_data_source_snowflake as mod
678-
679681 self ._mock_connector = MagicMock ()
680- monkeypatch .setattr (
681- mod , "_snowflake" , SimpleNamespace (connector = self ._mock_connector )
682- )
682+ monkeypatch .setattr (_lpr_module , "_snowflake" , SimpleNamespace (connector = self ._mock_connector ))
683683
684684 mock_key = MagicMock ()
685685 mock_key .private_bytes .return_value = b"DER_BYTES"
686686 mock_ser = MagicMock ()
687687 mock_ser .load_pem_private_key .return_value = mock_key
688- monkeypatch .setattr (mod , "_serialization" , mock_ser )
689- monkeypatch .setattr (mod , "_default_backend" , MagicMock (return_value = "backend" ))
688+ monkeypatch .setattr (_lpr_module , "_serialization" , mock_ser )
689+ monkeypatch .setattr (_lpr_module , "_default_backend" , MagicMock (return_value = "backend" ))
690690
691691 @pytest .mark .parametrize (
692692 "overrides,missing_field" ,
@@ -698,10 +698,6 @@ def _patch_crypto_and_connector(self, monkeypatch):
698698 )
699699 def test_raises_on_missing_credentials (self , overrides , missing_field ):
700700 """ValueError is raised when any required credential setting is absent."""
701- from django .test import override_settings
702-
703- from enterprise_data .api .v1 .views .lpr_data_source_snowflake import _get_snowflake_connection
704-
705701 base = {
706702 "SNOWFLAKE_SERVICE_USER" : "svc" ,
707703 "SNOWFLAKE_SERVICE_PRIVKEY" : "pem" ,
@@ -714,13 +710,9 @@ def test_raises_on_missing_credentials(self, overrides, missing_field):
714710
715711 def test_loads_pem_key_and_connects (self ):
716712 """Happy path: loads PEM key, converts to DER, calls connector.connect."""
717- from django .test import override_settings
718-
719- from enterprise_data .api .v1 .views .lpr_data_source_snowflake import _get_snowflake_connection
720-
721713 with override_settings (
722714 SNOWFLAKE_SERVICE_USER = "svc_user" ,
723- SNOWFLAKE_SERVICE_PRIVKEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----\n fake\n -----END ENCRYPTED PRIVATE KEY----- " ,
715+ SNOWFLAKE_SERVICE_PRIVKEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----\n fake" ,
724716 SNOWFLAKE_SERVICE_PASSPHRASE = "s3cr3t" ,
725717 SNOWFLAKE_ACCOUNT = "myaccount" ,
726718 SNOWFLAKE_ROLE = "MY_ROLE" ,
@@ -735,10 +727,6 @@ def test_loads_pem_key_and_connects(self):
735727
736728 def test_warehouse_passed_when_provided (self ):
737729 """warehouse kwarg is forwarded to connector.connect when non-None."""
738- from django .test import override_settings
739-
740- from enterprise_data .api .v1 .views .lpr_data_source_snowflake import _get_snowflake_connection
741-
742730 with override_settings (
743731 SNOWFLAKE_SERVICE_USER = "u" ,
744732 SNOWFLAKE_SERVICE_PRIVKEY = "pem" ,
@@ -750,10 +738,6 @@ def test_warehouse_passed_when_provided(self):
750738
751739 def test_warehouse_omitted_when_none (self ):
752740 """No ``warehouse`` key in connector.connect kwargs when warehouse=None."""
753- from django .test import override_settings
754-
755- from enterprise_data .api .v1 .views .lpr_data_source_snowflake import _get_snowflake_connection
756-
757741 with override_settings (
758742 SNOWFLAKE_SERVICE_USER = "u" ,
759743 SNOWFLAKE_SERVICE_PRIVKEY = "pem" ,
@@ -765,10 +749,6 @@ def test_warehouse_omitted_when_none(self):
765749
766750 def test_role_override_forwarded (self ):
767751 """Explicit role kwarg overrides the settings default."""
768- from django .test import override_settings
769-
770- from enterprise_data .api .v1 .views .lpr_data_source_snowflake import _get_snowflake_connection
771-
772752 with override_settings (
773753 SNOWFLAKE_SERVICE_USER = "u" ,
774754 SNOWFLAKE_SERVICE_PRIVKEY = "pem" ,
0 commit comments