Skip to content
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

fix: Fix string length checks for UTF-8 fields for aws_cognito_identity_provider, aws_cognito_user_group, and aws_cognito_user_pool_client #41187

Conversation

acwwat
Copy link
Contributor

@acwwat acwwat commented Feb 2, 2025

Description

This PR fixes the string length validation logic to account for UTF-8 characters for the following resources and argument:

  • For aws_cognito_identity_provider, the provider_name argument
  • For aws_cognito_user_group, the name argument
  • For aws_cognito_user_pool_client, the callback_urls, default_redirect_uri, logout_urls, and supported_identity_providers arguments

Relations

Closes #41171

References

Referred to CreateIdentityProvider, CreateGroup , and CreateUserPoolClient for specs.

Output from Acceptance Testing

For aws_cognito_identity_provider:

$ make testacc TESTS="TestAccCognitoIDPIdentityProvider_basic|TestAccCognitoIDPIdentityProvider_saml" PKG=cognitoidp
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.23.5 test ./internal/service/cognitoidp/... -v -count 1 -parallel 20 -run='TestAccCognitoIDPIdentityProvider_basic|TestAccCognitoIDPIdentityProvider_saml'  -timeout 360m -vet=off
2025/02/01 18:58:34 Initializing Terraform AWS Provider...
=== RUN   TestAccCognitoIDPIdentityProvider_basic
=== PAUSE TestAccCognitoIDPIdentityProvider_basic
=== RUN   TestAccCognitoIDPIdentityProvider_saml
=== PAUSE TestAccCognitoIDPIdentityProvider_saml
=== CONT  TestAccCognitoIDPIdentityProvider_basic
=== CONT  TestAccCognitoIDPIdentityProvider_saml
--- PASS: TestAccCognitoIDPIdentityProvider_basic (29.91s)
--- PASS: TestAccCognitoIDPIdentityProvider_saml (40.27s)
PASS
ok      github.com/hashicorp/terraform-provider-aws/internal/service/cognitoidp 40.517s

$

For aws_cognito_user_group:

$ make testacc TESTS=TestAccCognitoIDPUserGroup_basic PKG=cognitoidp
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.23.5 test ./internal/service/cognitoidp/... -v -count 1 -parallel 20 -run='TestAccCognitoIDPUserGroup_basic'  -timeout 360m -vet=off
2025/02/01 19:39:54 Initializing Terraform AWS Provider...
=== RUN   TestAccCognitoIDPUserGroup_basic
=== PAUSE TestAccCognitoIDPUserGroup_basic
=== CONT  TestAccCognitoIDPUserGroup_basic
--- PASS: TestAccCognitoIDPUserGroup_basic (40.66s)
PASS
ok      github.com/hashicorp/terraform-provider-aws/internal/service/cognitoidp 40.931s

$

For aws_cognito_user_pool_client:

$ make testacc TESTS="TestAccCognitoIDPUserPoolClient_basic|TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8|TestAccCognitoIDPUserPoolClient_urls_utf8" PKG=cognitoidp
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.23.5 test ./internal/service/cognitoidp/... -v -count 1 -parallel 20 -run='TestAccCognitoIDPUserPoolClient_basic|TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8|TestAccCognitoIDPUserPoolClient_urls_utf8'  -timeout 360m -vet=off
2025/02/01 19:05:02 Initializing Terraform AWS Provider...
=== RUN   TestAccCognitoIDPUserPoolClient_basic
=== PAUSE TestAccCognitoIDPUserPoolClient_basic
=== RUN   TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8
=== PAUSE TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8
=== RUN   TestAccCognitoIDPUserPoolClient_urls_utf8
=== PAUSE TestAccCognitoIDPUserPoolClient_urls_utf8
=== CONT  TestAccCognitoIDPUserPoolClient_basic
=== CONT  TestAccCognitoIDPUserPoolClient_urls_utf8
=== CONT  TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8
--- PASS: TestAccCognitoIDPUserPoolClient_urls_utf8 (19.41s)
--- PASS: TestAccCognitoIDPUserPoolClient_basic (19.91s)
--- PASS: TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8 (20.56s)
PASS
ok      github.com/hashicorp/terraform-provider-aws/internal/service/cognitoidp 20.815s

$

For validate.go:

$ make testacc TESTS="TestValidIdentityProviderName|TestValidUserGroupName" PKG=cognitoidp
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.23.5 test ./internal/service/cognitoidp/... -v -count 1 -parallel 20 -run='TestValidIdentityProviderName|TestValidUserGroupName'  -timeout 360m -vet=off
2025/02/01 19:37:36 Initializing Terraform AWS Provider...
=== RUN   TestValidIdentityProviderName
=== PAUSE TestValidIdentityProviderName
=== RUN   TestValidUserGroupName
=== PAUSE TestValidUserGroupName
=== CONT  TestValidIdentityProviderName
=== CONT  TestValidUserGroupName
--- PASS: TestValidIdentityProviderName (0.00s)
--- PASS: TestValidUserGroupName (0.00s)
PASS
ok      github.com/hashicorp/terraform-provider-aws/internal/service/cognitoidp 0.199s

$

@acwwat acwwat requested a review from a team as a code owner February 2, 2025 00:12
Copy link

github-actions bot commented Feb 2, 2025

Community Note

Voting for Prioritization

  • Please vote on this pull request by adding a 👍 reaction to the original post to help the community and maintainers prioritize this pull request.
  • Please see our prioritization guide for information on how we prioritize.
  • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request.

For Submitters

  • Review the contribution guide relating to the type of change you are making to ensure all of the necessary steps have been taken.
  • For new resources and data sources, use skaff to generate scaffolding with comments detailing common expectations.
  • Whether or not the branch has been rebased will not impact prioritization, but doing so is always a welcome surprise.

@github-actions github-actions bot added tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure. service/cognitoidp Issues and PRs that pertain to the cognitoidp service. needs-triage Waiting for first response or review from a maintainer. external-maintainer Contribution from a trusted external contributor. labels Feb 2, 2025
@acwwat acwwat force-pushed the b-aws_cognito_user_pool_client-fix_utf8_str_len_checks branch 3 times, most recently from 3ea628c to 77e5c40 Compare February 2, 2025 00:24
@acwwat acwwat changed the title fix: Fix string length checks for UTF-8 fields for aws_cognito_identity_provider and aws_cognito_user_pool_client fix: Fix string length checks for UTF-8 fields for aws_cognito_identity_provider, aws_cognito_user_group, and aws_cognito_user_pool_client Feb 2, 2025
…ty_provider and aws_cognito_user_pool_client
@acwwat acwwat force-pushed the b-aws_cognito_user_pool_client-fix_utf8_str_len_checks branch from 77e5c40 to a0c5787 Compare February 2, 2025 00:41
@ewbankkit ewbankkit added bug Addresses a defect in current functionality. and removed needs-triage Waiting for first response or review from a maintainer. labels Feb 3, 2025
@ewbankkit ewbankkit self-assigned this Feb 3, 2025
@github-actions github-actions bot added the prioritized Part of the maintainer teams immediate focus. To be addressed within the current quarter. label Feb 3, 2025
Copy link
Contributor

@ewbankkit ewbankkit left a comment

Choose a reason for hiding this comment

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

LGTM 🚀.

% make testacc TESTARGS='-run=TestAccCognitoIDPIdentityProvider_\|TestAccCognitoIDPUserGroup_\|TestAccCognitoIDPUserPoolClient_' PKG=cognitoidp ACCTEST_PARALLELISM=3
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.23.5 test ./internal/service/cognitoidp/... -v -count 1 -parallel 3  -run=TestAccCognitoIDPIdentityProvider_\|TestAccCognitoIDPUserGroup_\|TestAccCognitoIDPUserPoolClient_ -timeout 360m -vet=off
2025/02/03 08:51:30 Initializing Terraform AWS Provider...
=== RUN   TestAccCognitoIDPIdentityProvider_basic
=== PAUSE TestAccCognitoIDPIdentityProvider_basic
=== RUN   TestAccCognitoIDPIdentityProvider_idpIdentifiers
=== PAUSE TestAccCognitoIDPIdentityProvider_idpIdentifiers
=== RUN   TestAccCognitoIDPIdentityProvider_saml
=== PAUSE TestAccCognitoIDPIdentityProvider_saml
=== RUN   TestAccCognitoIDPIdentityProvider_disappears
=== PAUSE TestAccCognitoIDPIdentityProvider_disappears
=== RUN   TestAccCognitoIDPIdentityProvider_Disappears_userPool
=== PAUSE TestAccCognitoIDPIdentityProvider_Disappears_userPool
=== RUN   TestAccCognitoIDPUserGroup_basic
=== PAUSE TestAccCognitoIDPUserGroup_basic
=== RUN   TestAccCognitoIDPUserGroup_disappears
=== PAUSE TestAccCognitoIDPUserGroup_disappears
=== RUN   TestAccCognitoIDPUserGroup_complex
=== PAUSE TestAccCognitoIDPUserGroup_complex
=== RUN   TestAccCognitoIDPUserGroup_roleARN
=== PAUSE TestAccCognitoIDPUserGroup_roleARN
=== RUN   TestAccCognitoIDPUserPoolClient_basic
=== PAUSE TestAccCognitoIDPUserPoolClient_basic
=== RUN   TestAccCognitoIDPUserPoolClient_enableRevocation
=== PAUSE TestAccCognitoIDPUserPoolClient_enableRevocation
=== RUN   TestAccCognitoIDPUserPoolClient_accessTokenValidity
=== PAUSE TestAccCognitoIDPUserPoolClient_accessTokenValidity
=== RUN   TestAccCognitoIDPUserPoolClient_accessTokenValidity_error
=== PAUSE TestAccCognitoIDPUserPoolClient_accessTokenValidity_error
=== RUN   TestAccCognitoIDPUserPoolClient_idTokenValidity
=== PAUSE TestAccCognitoIDPUserPoolClient_idTokenValidity
=== RUN   TestAccCognitoIDPUserPoolClient_idTokenValidity_error
=== PAUSE TestAccCognitoIDPUserPoolClient_idTokenValidity_error
=== RUN   TestAccCognitoIDPUserPoolClient_refreshTokenValidity
=== PAUSE TestAccCognitoIDPUserPoolClient_refreshTokenValidity
=== RUN   TestAccCognitoIDPUserPoolClient_refreshTokenValidity_error
=== PAUSE TestAccCognitoIDPUserPoolClient_refreshTokenValidity_error
=== RUN   TestAccCognitoIDPUserPoolClient_tokenValidityUnits
=== PAUSE TestAccCognitoIDPUserPoolClient_tokenValidityUnits
=== RUN   TestAccCognitoIDPUserPoolClient_tokenValidityUnits_explicitDefaults
=== PAUSE TestAccCognitoIDPUserPoolClient_tokenValidityUnits_explicitDefaults
=== RUN   TestAccCognitoIDPUserPoolClient_tokenValidityUnits_AccessToken
=== PAUSE TestAccCognitoIDPUserPoolClient_tokenValidityUnits_AccessToken
=== RUN   TestAccCognitoIDPUserPoolClient_tokenValidityUnitsWTokenValidity
=== PAUSE TestAccCognitoIDPUserPoolClient_tokenValidityUnitsWTokenValidity
=== RUN   TestAccCognitoIDPUserPoolClient_name
=== PAUSE TestAccCognitoIDPUserPoolClient_name
=== RUN   TestAccCognitoIDPUserPoolClient_allFields
=== PAUSE TestAccCognitoIDPUserPoolClient_allFields
=== RUN   TestAccCognitoIDPUserPoolClient_allFieldsUpdatingOneField
=== PAUSE TestAccCognitoIDPUserPoolClient_allFieldsUpdatingOneField
=== RUN   TestAccCognitoIDPUserPoolClient_analyticsApplicationID
=== PAUSE TestAccCognitoIDPUserPoolClient_analyticsApplicationID
=== RUN   TestAccCognitoIDPUserPoolClient_analyticsWithARN
=== PAUSE TestAccCognitoIDPUserPoolClient_analyticsWithARN
=== RUN   TestAccCognitoIDPUserPoolClient_authSessionValidity
=== PAUSE TestAccCognitoIDPUserPoolClient_authSessionValidity
=== RUN   TestAccCognitoIDPUserPoolClient_disappears
=== PAUSE TestAccCognitoIDPUserPoolClient_disappears
=== RUN   TestAccCognitoIDPUserPoolClient_Disappears_userPool
=== PAUSE TestAccCognitoIDPUserPoolClient_Disappears_userPool
=== RUN   TestAccCognitoIDPUserPoolClient_emptySets
=== PAUSE TestAccCognitoIDPUserPoolClient_emptySets
=== RUN   TestAccCognitoIDPUserPoolClient_nulls
=== PAUSE TestAccCognitoIDPUserPoolClient_nulls
=== RUN   TestAccCognitoIDPUserPoolClient_frameworkMigration_nulls
=== PAUSE TestAccCognitoIDPUserPoolClient_frameworkMigration_nulls
=== RUN   TestAccCognitoIDPUserPoolClient_frameworkMigration_basic
=== PAUSE TestAccCognitoIDPUserPoolClient_frameworkMigration_basic
=== RUN   TestAccCognitoIDPUserPoolClient_frameworkMigration_emptySet
=== PAUSE TestAccCognitoIDPUserPoolClient_frameworkMigration_emptySet
=== RUN   TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8
=== PAUSE TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8
=== RUN   TestAccCognitoIDPUserPoolClient_urls_utf8
=== PAUSE TestAccCognitoIDPUserPoolClient_urls_utf8
=== CONT  TestAccCognitoIDPIdentityProvider_basic
=== CONT  TestAccCognitoIDPUserPoolClient_tokenValidityUnits_explicitDefaults
=== CONT  TestAccCognitoIDPUserPoolClient_disappears
--- PASS: TestAccCognitoIDPUserPoolClient_tokenValidityUnits_explicitDefaults (13.69s)
=== CONT  TestAccCognitoIDPUserPoolClient_basic
--- PASS: TestAccCognitoIDPUserPoolClient_disappears (13.97s)
=== CONT  TestAccCognitoIDPUserPoolClient_tokenValidityUnits
--- PASS: TestAccCognitoIDPIdentityProvider_basic (24.31s)
=== CONT  TestAccCognitoIDPUserPoolClient_refreshTokenValidity_error
--- PASS: TestAccCognitoIDPUserPoolClient_refreshTokenValidity_error (1.43s)
=== CONT  TestAccCognitoIDPUserPoolClient_refreshTokenValidity
--- PASS: TestAccCognitoIDPUserPoolClient_basic (14.84s)
=== CONT  TestAccCognitoIDPUserPoolClient_idTokenValidity_error
--- PASS: TestAccCognitoIDPUserPoolClient_idTokenValidity_error (1.94s)
=== CONT  TestAccCognitoIDPUserPoolClient_idTokenValidity
--- PASS: TestAccCognitoIDPUserPoolClient_refreshTokenValidity (24.80s)
=== CONT  TestAccCognitoIDPUserPoolClient_accessTokenValidity_error
--- PASS: TestAccCognitoIDPUserPoolClient_tokenValidityUnits (36.97s)
=== CONT  TestAccCognitoIDPUserPoolClient_accessTokenValidity
--- PASS: TestAccCognitoIDPUserPoolClient_accessTokenValidity_error (1.89s)
=== CONT  TestAccCognitoIDPUserPoolClient_enableRevocation
--- PASS: TestAccCognitoIDPUserPoolClient_idTokenValidity (24.32s)
=== CONT  TestAccCognitoIDPUserPoolClient_frameworkMigration_basic
--- PASS: TestAccCognitoIDPUserPoolClient_accessTokenValidity (25.18s)
=== CONT  TestAccCognitoIDPUserPoolClient_urls_utf8
--- PASS: TestAccCognitoIDPUserPoolClient_enableRevocation (25.44s)
=== CONT  TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8
--- PASS: TestAccCognitoIDPUserPoolClient_frameworkMigration_basic (30.06s)
=== CONT  TestAccCognitoIDPUserPoolClient_frameworkMigration_emptySet
--- PASS: TestAccCognitoIDPUserPoolClient_urls_utf8 (15.37s)
=== CONT  TestAccCognitoIDPUserPoolClient_nulls
--- PASS: TestAccCognitoIDPUserPoolClient_supportedIdentityProviders_utf8 (16.63s)
=== CONT  TestAccCognitoIDPUserPoolClient_frameworkMigration_nulls
--- PASS: TestAccCognitoIDPUserPoolClient_nulls (19.83s)
=== CONT  TestAccCognitoIDPUserPoolClient_allFieldsUpdatingOneField
--- PASS: TestAccCognitoIDPUserPoolClient_frameworkMigration_emptySet (29.20s)
=== CONT  TestAccCognitoIDPUserPoolClient_authSessionValidity
--- PASS: TestAccCognitoIDPUserPoolClient_frameworkMigration_nulls (30.00s)
=== CONT  TestAccCognitoIDPUserPoolClient_analyticsWithARN
--- PASS: TestAccCognitoIDPUserPoolClient_allFieldsUpdatingOneField (21.48s)
=== CONT  TestAccCognitoIDPUserPoolClient_analyticsApplicationID
--- PASS: TestAccCognitoIDPUserPoolClient_authSessionValidity (23.96s)
=== CONT  TestAccCognitoIDPUserGroup_basic
--- PASS: TestAccCognitoIDPUserPoolClient_analyticsWithARN (26.85s)
=== CONT  TestAccCognitoIDPUserGroup_roleARN
--- PASS: TestAccCognitoIDPUserGroup_basic (33.89s)
=== CONT  TestAccCognitoIDPUserGroup_complex
--- PASS: TestAccCognitoIDPUserPoolClient_analyticsApplicationID (40.07s)
=== CONT  TestAccCognitoIDPUserPoolClient_name
--- PASS: TestAccCognitoIDPUserGroup_roleARN (25.50s)
=== CONT  TestAccCognitoIDPUserPoolClient_allFields
--- PASS: TestAccCognitoIDPUserPoolClient_allFields (14.88s)
=== CONT  TestAccCognitoIDPUserPoolClient_tokenValidityUnitsWTokenValidity
--- PASS: TestAccCognitoIDPUserGroup_complex (24.07s)
=== CONT  TestAccCognitoIDPIdentityProvider_disappears
--- PASS: TestAccCognitoIDPUserPoolClient_name (24.92s)
=== CONT  TestAccCognitoIDPUserGroup_disappears
--- PASS: TestAccCognitoIDPIdentityProvider_disappears (12.59s)
=== CONT  TestAccCognitoIDPIdentityProvider_saml
--- PASS: TestAccCognitoIDPUserGroup_disappears (12.19s)
=== CONT  TestAccCognitoIDPUserPoolClient_tokenValidityUnits_AccessToken
--- PASS: TestAccCognitoIDPUserPoolClient_tokenValidityUnitsWTokenValidity (25.43s)
=== CONT  TestAccCognitoIDPUserPoolClient_emptySets
--- PASS: TestAccCognitoIDPUserPoolClient_tokenValidityUnits_AccessToken (25.41s)
=== CONT  TestAccCognitoIDPIdentityProvider_idpIdentifiers
--- PASS: TestAccCognitoIDPUserPoolClient_emptySets (18.24s)
=== CONT  TestAccCognitoIDPUserPoolClient_Disappears_userPool
--- PASS: TestAccCognitoIDPIdentityProvider_saml (30.90s)
=== CONT  TestAccCognitoIDPIdentityProvider_Disappears_userPool
--- PASS: TestAccCognitoIDPUserPoolClient_Disappears_userPool (12.03s)
--- PASS: TestAccCognitoIDPIdentityProvider_Disappears_userPool (12.12s)
--- PASS: TestAccCognitoIDPIdentityProvider_idpIdentifiers (22.26s)
PASS
ok  	github.com/hashicorp/terraform-provider-aws/internal/service/cognitoidp	263.381s

@ewbankkit
Copy link
Contributor

@acwwat Thanks for the contribution 🎉 👏.

@ewbankkit ewbankkit merged commit 97d572b into hashicorp:main Feb 3, 2025
55 checks passed
@github-actions github-actions bot added this to the v5.85.0 milestone Feb 3, 2025
@acwwat acwwat deleted the b-aws_cognito_user_pool_client-fix_utf8_str_len_checks branch February 3, 2025 19:08
Copy link

github-actions bot commented Feb 3, 2025

This functionality has been released in v5.85.0 of the Terraform AWS Provider. Please see the Terraform documentation on provider versioning or reach out if you need any assistance upgrading.

For further feature requests or bug reports with this functionality, please create a new GitHub issue following the template. Thank you!

@github-actions github-actions bot removed the prioritized Part of the maintainer teams immediate focus. To be addressed within the current quarter. label Feb 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Addresses a defect in current functionality. external-maintainer Contribution from a trusted external contributor. service/cognitoidp Issues and PRs that pertain to the cognitoidp service. tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: Character count is different from AWS Management Console and method in aws_cognito_user_pool_client.
2 participants