|
42 | 42 | TableAlreadyExistsError, |
43 | 43 | ) |
44 | 44 | from pyiceberg.schema import Schema |
45 | | -from tests.conftest import BUCKET_NAME, TABLE_METADATA_LOCATION_REGEX |
| 45 | +from pyiceberg.typedef import Properties |
| 46 | +from tests.conftest import ( |
| 47 | + BUCKET_NAME, |
| 48 | + DEPRECATED_AWS_SESSION_PROPERTIES, |
| 49 | + TABLE_METADATA_LOCATION_REGEX, |
| 50 | + UNIFIED_AWS_SESSION_PROPERTIES, |
| 51 | +) |
46 | 52 |
|
47 | 53 |
|
48 | 54 | @mock_aws |
@@ -579,6 +585,60 @@ def test_passing_provided_profile() -> None: |
579 | 585 | assert test_catalog.dynamodb is mock_session().client() |
580 | 586 |
|
581 | 587 |
|
| 588 | +@mock_aws |
| 589 | +def test_passing_glue_session_properties() -> None: |
| 590 | + session_properties: Properties = { |
| 591 | + "dynamodb.access-key-id": "dynamodb.access-key-id", |
| 592 | + "dynamodb.secret-access-key": "dynamodb.secret-access-key", |
| 593 | + "dynamodb.profile-name": "dynamodb.profile-name", |
| 594 | + "dynamodb.region": "dynamodb.region", |
| 595 | + "dynamodb.session-token": "dynamodb.session-token", |
| 596 | + **UNIFIED_AWS_SESSION_PROPERTIES, |
| 597 | + **DEPRECATED_AWS_SESSION_PROPERTIES, |
| 598 | + } |
| 599 | + |
| 600 | + with mock.patch("boto3.Session") as mock_session: |
| 601 | + mock_client = mock.Mock() |
| 602 | + mock_session.return_value.client.return_value = mock_client |
| 603 | + mock_client.describe_table.return_value = {"Table": {"TableStatus": "ACTIVE"}} |
| 604 | + test_catalog = DynamoDbCatalog("dynamodb", **session_properties) |
| 605 | + |
| 606 | + mock_session.assert_called_with( |
| 607 | + aws_access_key_id="dynamodb.access-key-id", |
| 608 | + aws_secret_access_key="dynamodb.secret-access-key", |
| 609 | + aws_session_token="dynamodb.session-token", |
| 610 | + region_name="dynamodb.region", |
| 611 | + profile_name="dynamodb.profile-name", |
| 612 | + botocore_session=None, |
| 613 | + ) |
| 614 | + assert test_catalog.dynamodb is mock_session().client() |
| 615 | + |
| 616 | + |
| 617 | +@mock_aws |
| 618 | +def test_passing_unified_session_properties_to_dynamodb() -> None: |
| 619 | + session_properties: Properties = { |
| 620 | + "dynamodb.profile-name": "dynamodb.profile-name", |
| 621 | + **UNIFIED_AWS_SESSION_PROPERTIES, |
| 622 | + **DEPRECATED_AWS_SESSION_PROPERTIES, |
| 623 | + } |
| 624 | + |
| 625 | + with mock.patch("boto3.Session") as mock_session: |
| 626 | + mock_client = mock.Mock() |
| 627 | + mock_session.return_value.client.return_value = mock_client |
| 628 | + mock_client.describe_table.return_value = {"Table": {"TableStatus": "ACTIVE"}} |
| 629 | + test_catalog = DynamoDbCatalog("dynamodb", **session_properties) |
| 630 | + |
| 631 | + mock_session.assert_called_with( |
| 632 | + aws_access_key_id="client.access-key-id", |
| 633 | + aws_secret_access_key="client.secret-access-key", |
| 634 | + aws_session_token="client.session-token", |
| 635 | + region_name="client.region", |
| 636 | + profile_name="dynamodb.profile-name", |
| 637 | + botocore_session=None, |
| 638 | + ) |
| 639 | + assert test_catalog.dynamodb is mock_session().client() |
| 640 | + |
| 641 | + |
582 | 642 | @mock_aws |
583 | 643 | def test_table_exists( |
584 | 644 | _bucket_initialize: None, moto_endpoint_url: str, table_schema_nested: Schema, database_name: str, table_name: str |
|
0 commit comments