feat: support GDC-H Credentials #1642
Conversation
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java
Outdated
Show resolved
Hide resolved
gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java
Outdated
Show resolved
Hide resolved
gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
| GdchCredentials fromClient = | ||
| (GdchCredentials) client.getSettings().getCredentialsProvider().getCredentials(); | ||
|
|
||
| assertSame(credentials, fromClient); |
There was a problem hiding this comment.
I thought the credential would be different since it now has an additional field gdchApiAudience?
There was a problem hiding this comment.
So the provider is not modified when creating the ClientContext. In fact, ClientContext.create() retrieves the Credentials from the provider, then modifies them accordingly (e.g. re-create with gdchApiAudience or any other type of `Credentials) and stores them as an internal property.
I'm just describing what happens with ClientContext creation.
For example,
Modifies the Credentials object and then a new ClientContext is created with such Credentials
Should ClientContext.create() alter the Credentials provided by CredentialsProvider?
There was a problem hiding this comment.
While the logic above is correct, the test seems not validating what it declares (Blake's point from different angle). The test description WithAudience - is is not tested.
Instead, test validates that the original credential stay in credential provider as is.
Also, this is effectively a unit test, not integration, right?
There was a problem hiding this comment.
Also, this is effectively a unit test, not integration, right?
We want to test that the audience set through ClientSetting in a client library is being properly propagated to ClientContext and set to Credentials, which we cannot test through unit tests, only through showcase clients. So yeah this is not a true integration tests that interact with servers, more like a component test only verifying the client behaviors.
That being said, I agree with you that this test does not verify the audience, which we should.
gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Outdated
Show resolved
Hide resolved
.../src/test/java/com/google/showcase/v1beta1/it/util/InterceptingMockTokenServerTransport.java
Outdated
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITGdch.java
Show resolved
Hide resolved
showcase/gapic-showcase/src/test/resources/META-INF/native-image/resource-config.json
Outdated
Show resolved
Hide resolved
blakeli0
left a comment
There was a problem hiding this comment.
LGTM with one minor comment. Feel free to merge it after the comment is resolved.
|
[gapic-generator-java-root] Kudos, SonarCloud Quality Gate passed! |
|
[java_showcase_integration_tests] SonarCloud Quality Gate failed.
|
|
[java_showcase_unit_tests] Kudos, SonarCloud Quality Gate passed! |
* chore: initial additions to handle GDC-H API audience * chore: add unit tests for GDC-H * chore: cleanup of logic * chore: decompose tests into separate methods * chore: fix clirr diff check * chore: fmt:format * chore: add support in `ClientSettings` * chore: add showcase IT for GDCH credentials * chore: comments * chore: improve tests * chore: add partial IT for testing context credential * chore: recreate GdchCredentials with audience using convenience method * chore: more readable api audience logic * chore: no wildcard imports * chore: javadoc for public methods * chore: gdch test to use default null initialization * chore: tear down for gdch IT * chore: `assertThrows` for gdch ITs * chore: mvn fmt:format * test: remove context test * docs: explain that audience will be overriden if set through client/stub settings * test: test audience setting should modify initial credentials * chore: clirr check * chore: ignore gdch changes * chore: format * chore: default to endpoint if audience not provided * test: refresh gdch creds to confirm audience works * chore: fmt * chore: fmt * chore: better test names in ClientContextTest * chore: better test names for showcase tests * chore: simplify refresh verification logic * chore: include outcome in gdch it test names * chore: expand comments in GDCH ITs * test: intercept mock transport to verify audience * chore: fmt * chore: move auth test-jar to shared dependencies * chore: cleanup * chore: use inferred version for auth library * deps: update google-auth-java-library to 1.19.0 * choreL fmt ITGdch.java * chore: import auth test-jar using common version variable * chore: remove auth test-jar import from first-party-dependencies * chore: add license headers to new files * chore: revert google-auth-version to be obtained from main branch * chore: correct showcase parent pom indentation * chore: remove resource declaration for native test build
* fix: Use bindings for resolving multi pattern resources * chore: Fix lint issues * chore: Add unit tests for the behavior * chore: Add comments for the tests * chore: Remove unused comment * feat: support GDC-H Credentials (#1642) * chore: initial additions to handle GDC-H API audience * chore: add unit tests for GDC-H * chore: cleanup of logic * chore: decompose tests into separate methods * chore: fix clirr diff check * chore: fmt:format * chore: add support in `ClientSettings` * chore: add showcase IT for GDCH credentials * chore: comments * chore: improve tests * chore: add partial IT for testing context credential * chore: recreate GdchCredentials with audience using convenience method * chore: more readable api audience logic * chore: no wildcard imports * chore: javadoc for public methods * chore: gdch test to use default null initialization * chore: tear down for gdch IT * chore: `assertThrows` for gdch ITs * chore: mvn fmt:format * test: remove context test * docs: explain that audience will be overriden if set through client/stub settings * test: test audience setting should modify initial credentials * chore: clirr check * chore: ignore gdch changes * chore: format * chore: default to endpoint if audience not provided * test: refresh gdch creds to confirm audience works * chore: fmt * chore: fmt * chore: better test names in ClientContextTest * chore: better test names for showcase tests * chore: simplify refresh verification logic * chore: include outcome in gdch it test names * chore: expand comments in GDCH ITs * test: intercept mock transport to verify audience * chore: fmt * chore: move auth test-jar to shared dependencies * chore: cleanup * chore: use inferred version for auth library * deps: update google-auth-java-library to 1.19.0 * choreL fmt ITGdch.java * chore: import auth test-jar using common version variable * chore: remove auth test-jar import from first-party-dependencies * chore: add license headers to new files * chore: revert google-auth-version to be obtained from main branch * chore: correct showcase parent pom indentation * chore: remove resource declaration for native test build * fix: [gapic-generator-java] handle response and metadata type ambiguity in LRO parsing (#1726) * chore: Bump grpc-java version to 1.55.3 (#1829) * chore: Bump gapic-showcase version to 0.28.2 (#1830) * build(deps): Bump guava version to 32.1.1-jre (#1832) * chore: Bump guava version to 32.1.1-jre * chore: Add guava to gradle template * chore: Add j2obc-annotations to shared-dependencies (#1834) * ci: fix showcase-clirr check on release PRs (#1835) Install sdk-platform-java before performing final clirr check, so version changes are available in the local repository * chore(main): release 2.23.0 (#1806) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> * chore(main): release 2.23.1-SNAPSHOT (#1836) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> * chore: Implement gRPC and HttpJson showcase tests for IAM (#1789) * chore: Add framework for iam showcase tests * chore: Generate clients with IAM stubs * chore: Add IAM showcase tests * chore: Add samples * chore: Exclude httpjson tests * chore: Use @before to create the resource * chore: Use constant for policy * chore: Log resource name * chore: Test use setPolicyRequest's resourceName * chore: run mvn clean before showcase tests * chore: Attempt again with cache deleted * chore: Add logging for test * chore: Sleep for 1s * chore: Use resource from setPolicyRequest * chore: Ignore failing HttpJson test for now * chore: Un-ignore test * chore: Fix lint issues * chore: Test with rooms/ prefix * chore: Use Identity client for Users * chore: Create user resource to assign policy to * chore: Use user's name as resource id * chore: Change resource name before each test * chore: Add iam-grpc in pom * chore: Resolve sonar issues * chore: Add comment for testIamPolicy * chore: Address PR comments * ci: showcase native check (#1833) * ci: showcase native check * fix: add explicit java version * fix: adjust syntax * fix: add resource-config entry for ITGdch * fix: copy file to temp folder so it can be accessed by path * chore: formatting * fix: prevent shutdown warnings with client.awaitTermination * ci: fix build file location for downstream test * chore: use static imports for Truth assertions * chore: Resolve merge conflicts * chore: Use bindings for any matching resource patterns * chore: Fix lint issues * chore: Remove unused code * chore: Fix lint issues * chore: Add test for resourceName matching bindings * chore: Fix lint issues --------- Co-authored-by: Diego Alonso Marquez Palacios <diegomarquezp@google.com> Co-authored-by: Emily Wang <emmwang@google.com> Co-authored-by: Burke Davison <40617934+burkedavison@users.noreply.github.com> Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>












This PR adds support for GDC-H credentials.
Mainly, it adds the option to have
gdchApiAudienceinClientContextandStubSettings.ClientContext.create(StubSettings)will verify that:gdchApiAudienceis set, then only aGdchCredentialreturned from theCredentialProvideris acceptedgdchApiAudienceis a valid URI