Skip to content

chore(unittests): if not defined set a default region in boto3_proxy.py #232

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/cloudformation_cli_python_lib/boto3_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def __init__(self, session: Session):


def _get_boto_session(
credentials: Optional[Credentials], region: Optional[str] = None
credentials: Optional[Credentials], region: Optional[str] = "us-east-1"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the default being something other than None.

Wondering though.... why not

if not credentials or not region:
  return None

Seems weird to get credentials not be None but then have no region?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added the check for region being explicitly set to none and tests around it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure we want to have this be the default but I'm still trying to think through it all. While I get we are fixing for this for testing purposes I'm afraid of what will happen under normal operations:

So I'll try my best to explain. For a resource we are going to call _get_boto_session with the credentials and provide no region. If this resource lives in us-west-2 are we resetting the session to be in us-east-1? Is the region picked up from the environment variables provided in the Lambda runtime?

caller_sess = _get_boto_session(event.requestData.callerCredentials)
provider_sess = _get_boto_session(event.requestData.providerCredentials)

Those values are a class defined by either None or:

@dataclass
class Credentials:
accessKeyId: str
secretAccessKey: str
sessionToken: str

That being said from what I can tell we should not be testing for region being none.

) -> Optional[SessionProxy]:
if not credentials:
return None
Expand Down