"""Unit tests for SnowflakeAPIConnector.""" from unittest import mock import pytest from analytics_aggregation.util import snowflake_db def test_auth(): """Test Snowflake authentication.""" connector = snowflake_db.SnowflakeMetadataConnector() connector.authenticate() connector.session.post.assert_called_once_with( 'https://account.snowflakecomputing.com/session/v1/login-request', json={ 'data': { 'ACCOUNT_NAME': 'account', 'PASSWORD': 'password', 'LOGIN_NAME': 'user', } }) def test_cold_scan_bytes_number_fetch(): """Test successful fetch of cold Snowflake query.""" connector = snowflake_db.SnowflakeMetadataConnector() connector.session.get.return_value.json.return_value = { 'data': {'queries': [{'stats': {'ioRemoteFdnReadBytes': 42}}]} } cursor = mock.MagicMock(sfqid='123-456') assert connector.get_query_scan_bytes_number(cursor) == 42 connector.session.get.assert_called_once_with( 'https://account.snowflakecomputing.com/monitoring/queries/123-456') def test_hot_scan_bytes_number_fetch(): """Test successful fetch of hot Snowflake query.""" connector = snowflake_db.SnowflakeMetadataConnector() connector.session.get.return_value.json.return_value = { 'data': {'queries': [{'stats': {}}]} } cursor = mock.MagicMock(sfqid='123-456') assert connector.get_query_scan_bytes_number(cursor) == 0 connector.session.get.assert_called_once_with( 'https://account.snowflakecomputing.com/monitoring/queries/123-456') def test_bad_response_from_snowflake(): """Test bad response from Snowflake raises SnowflakeBadResponse.""" connector = snowflake_db.SnowflakeMetadataConnector() connector.session.post.return_value.ok = False with pytest.raises(snowflake_db.SnowflakeBadResponse): connector.authenticate()