Skip to content

Commit

Permalink
add unit tests for glue and dynamodb
Browse files Browse the repository at this point in the history
  • Loading branch information
HonahX committed Jul 14, 2024
1 parent 996c874 commit ce5b604
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 0 deletions.
69 changes: 69 additions & 0 deletions tests/catalog/test_dynamodb.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
TableAlreadyExistsError,
)
from pyiceberg.schema import Schema
from pyiceberg.typedef import Properties
from tests.conftest import BUCKET_NAME, TABLE_METADATA_LOCATION_REGEX


Expand Down Expand Up @@ -579,6 +580,74 @@ def test_passing_provided_profile() -> None:
assert test_catalog.dynamodb is mock_session().client()


@mock_aws
def test_passing_glue_session_properties() -> None:
session_properties: Properties = {
"dynamodb.access-key-id": "dynamodb.access-key-id",
"dynamodb.secret-access-key": "dynamodb.secret-access-key",
"dynamodb.profile-name": "dynamodb.profile-name",
"dynamodb.region": "dynamodb.region",
"dynamodb.session-token": "dynamodb.session-token",
"client.access-key-id": "client.access-key-id",
"client.secret-access-key": "client.secret-access-key",
"client.region": "client.region",
"client.session-token": "client.session-token",
"aws_access_key_id": "aws_access_key_id",
"aws_secret_access_key": "aws_secret_access_key",
"aws_session_token": "aws_session_token",
"region_name": "region_name",
"profile_name": "profile_name",
}

with mock.patch("boto3.Session") as mock_session:
mock_client = mock.Mock()
mock_session.return_value.client.return_value = mock_client
mock_client.describe_table.return_value = {"Table": {"TableStatus": "ACTIVE"}}
test_catalog = DynamoDbCatalog("dynamodb", **session_properties)

mock_session.assert_called_with(
aws_access_key_id="dynamodb.access-key-id",
aws_secret_access_key="dynamodb.secret-access-key",
aws_session_token="dynamodb.session-token",
region_name="dynamodb.region",
profile_name="dynamodb.profile-name",
botocore_session=None,
)
assert test_catalog.dynamodb is mock_session().client()


@mock_aws
def test_passing_unified_session_properties_to_dynamodb() -> None:
session_properties: Properties = {
"dynamodb.profile-name": "dynamodb.profile-name",
"client.access-key-id": "client.access-key-id",
"client.secret-access-key": "client.secret-access-key",
"client.region": "client.region",
"client.session-token": "client.session-token",
"aws_access_key_id": "aws_access_key_id",
"aws_secret_access_key": "aws_secret_access_key",
"aws_session_token": "aws_session_token",
"region_name": "region_name",
"profile_name": "profile_name",
}

with mock.patch("boto3.Session") as mock_session:
mock_client = mock.Mock()
mock_session.return_value.client.return_value = mock_client
mock_client.describe_table.return_value = {"Table": {"TableStatus": "ACTIVE"}}
test_catalog = DynamoDbCatalog("dynamodb", **session_properties)

mock_session.assert_called_with(
aws_access_key_id="client.access-key-id",
aws_secret_access_key="client.secret-access-key",
aws_session_token="client.session-token",
region_name="client.region",
profile_name="dynamodb.profile-name",
botocore_session=None,
)
assert test_catalog.dynamodb is mock_session().client()


@mock_aws
def test_table_exists(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested: Schema, database_name: str, table_name: str
Expand Down
63 changes: 63 additions & 0 deletions tests/catalog/test_glue.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
from pyiceberg.partitioning import PartitionField, PartitionSpec
from pyiceberg.schema import Schema
from pyiceberg.transforms import IdentityTransform
from pyiceberg.typedef import Properties
from pyiceberg.types import IntegerType
from tests.conftest import BUCKET_NAME, TABLE_METADATA_LOCATION_REGEX

Expand Down Expand Up @@ -638,6 +639,68 @@ def test_passing_profile_name() -> None:
assert test_catalog.glue is mock_session().client()


@mock_aws
def test_passing_glue_session_properties() -> None:
session_properties: Properties = {
"glue.access-key-id": "glue.access-key-id",
"glue.secret-access-key": "glue.secret-access-key",
"glue.profile-name": "glue.profile-name",
"glue.region": "glue.region",
"glue.session-token": "glue.session-token",
"client.access-key-id": "client.access-key-id",
"client.secret-access-key": "client.secret-access-key",
"client.region": "client.region",
"client.session-token": "client.session-token",
"aws_access_key_id": "aws_access_key_id",
"aws_secret_access_key": "aws_secret_access_key",
"aws_session_token": "aws_session_token",
"region_name": "region_name",
"profile_name": "profile_name",
}

with mock.patch("boto3.Session") as mock_session:
test_catalog = GlueCatalog("glue", **session_properties)

mock_session.assert_called_with(
aws_access_key_id="glue.access-key-id",
aws_secret_access_key="glue.secret-access-key",
aws_session_token="glue.session-token",
region_name="glue.region",
profile_name="glue.profile-name",
botocore_session=None,
)
assert test_catalog.glue is mock_session().client()


@mock_aws
def test_passing_unified_session_properties_to_glue() -> None:
session_properties: Properties = {
"glue.profile-name": "glue.profile-name",
"client.access-key-id": "client.access-key-id",
"client.secret-access-key": "client.secret-access-key",
"client.region": "client.region",
"client.session-token": "client.session-token",
"aws_access_key_id": "aws_access_key_id",
"aws_secret_access_key": "aws_secret_access_key",
"aws_session_token": "aws_session_token",
"region_name": "region_name",
"profile_name": "profile_name",
}

with mock.patch("boto3.Session") as mock_session:
test_catalog = GlueCatalog("glue", **session_properties)

mock_session.assert_called_with(
aws_access_key_id="client.access-key-id",
aws_secret_access_key="client.secret-access-key",
aws_session_token="client.session-token",
region_name="client.region",
profile_name="glue.profile-name",
botocore_session=None,
)
assert test_catalog.glue is mock_session().client()


@mock_aws
def test_commit_table_update_schema(
_glue: boto3.client,
Expand Down

0 comments on commit ce5b604

Please sign in to comment.