From 0a43295dcb6b5311a7e64550526577b362ea282d Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Wed, 27 Mar 2019 02:31:19 -0700 Subject: [PATCH] Regenerate iamcredentials client (#4746) --- .../credentials/v1/IamCredentialsClient.java | 282 ++++++++++++++---- .../iam/credentials/v1/package-info.java | 4 +- .../v1/IamCredentialsClientTest.java | 54 ++-- .../synth.metadata | 10 +- 4 files changed, 248 insertions(+), 102 deletions(-) diff --git a/google-cloud-clients/google-cloud-iamcredentials/src/main/java/com/google/cloud/iam/credentials/v1/IamCredentialsClient.java b/google-cloud-clients/google-cloud-iamcredentials/src/main/java/com/google/cloud/iam/credentials/v1/IamCredentialsClient.java index c914b58778ba..58f66c3ad587 100644 --- a/google-cloud-clients/google-cloud-iamcredentials/src/main/java/com/google/cloud/iam/credentials/v1/IamCredentialsClient.java +++ b/google-cloud-clients/google-cloud-iamcredentials/src/main/java/com/google/cloud/iam/credentials/v1/IamCredentialsClient.java @@ -18,7 +18,6 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; import com.google.api.gax.rpc.UnaryCallable; -import com.google.api.pathtemplate.PathTemplate; import com.google.cloud.iam.credentials.v1.stub.IamCredentialsStub; import com.google.cloud.iam.credentials.v1.stub.IamCredentialsStubSettings; import com.google.protobuf.ByteString; @@ -45,11 +44,11 @@ *
  * 
  * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
- *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+ *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
  *   List<String> delegates = new ArrayList<>();
  *   List<String> scope = new ArrayList<>();
  *   Duration lifetime = Duration.newBuilder().build();
- *   GenerateAccessTokenResponse response = iamCredentialsClient.generateAccessToken(formattedName, delegates, scope, lifetime);
+ *   GenerateAccessTokenResponse response = iamCredentialsClient.generateAccessToken(name, delegates, scope, lifetime);
  * }
  * 
  * 
@@ -110,34 +109,6 @@ public class IamCredentialsClient implements BackgroundResource { private final IamCredentialsSettings settings; private final IamCredentialsStub stub; - private static final PathTemplate SERVICE_ACCOUNT_PATH_TEMPLATE = - PathTemplate.createWithoutUrlEncoding("projects/{project}/serviceAccounts/{service_account}"); - - /** - * Formats a string containing the fully-qualified path to represent a service_account resource. - */ - public static final String formatServiceAccountName(String project, String serviceAccount) { - return SERVICE_ACCOUNT_PATH_TEMPLATE.instantiate( - "project", project, - "service_account", serviceAccount); - } - - /** - * Parses the project from the given fully-qualified path which represents a service_account - * resource. - */ - public static final String parseProjectFromServiceAccountName(String serviceAccountName) { - return SERVICE_ACCOUNT_PATH_TEMPLATE.parse(serviceAccountName).get("project"); - } - - /** - * Parses the service_account from the given fully-qualified path which represents a - * service_account resource. - */ - public static final String parseServiceAccountFromServiceAccountName(String serviceAccountName) { - return SERVICE_ACCOUNT_PATH_TEMPLATE.parse(serviceAccountName).get("service_account"); - } - /** Constructs an instance of IamCredentialsClient with default settings. */ public static final IamCredentialsClient create() throws IOException { return create(IamCredentialsSettings.newBuilder().build()); @@ -194,11 +165,57 @@ public IamCredentialsStub getStub() { * *

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> delegates = new ArrayList<>();
    *   List<String> scope = new ArrayList<>();
    *   Duration lifetime = Duration.newBuilder().build();
-   *   GenerateAccessTokenResponse response = iamCredentialsClient.generateAccessToken(formattedName, delegates, scope, lifetime);
+   *   GenerateAccessTokenResponse response = iamCredentialsClient.generateAccessToken(name, delegates, scope, lifetime);
+   * }
+   * 
+ * + * @param name The resource name of the service account for which the credentials are requested, + * in the following format: `projects/-/serviceAccounts/{ACCOUNT_EMAIL_OR_UNIQUEID}`. + * @param delegates The sequence of service accounts in a delegation chain. Each service account + * must be granted the `roles/iam.serviceAccountTokenCreator` role on its next service account + * in the chain. The last service account in the chain must be granted the + * `roles/iam.serviceAccountTokenCreator` role on the service account that is specified in the + * `name` field of the request. + *

The delegates must have the following format: + * `projects/-/serviceAccounts/{ACCOUNT_EMAIL_OR_UNIQUEID}` + * @param scope Code to identify the scopes to be included in the OAuth 2.0 access token. See + * https://developers.google.com/identity/protocols/googlescopes for more information. At + * least one value required. + * @param lifetime The desired lifetime duration of the access token in seconds. Must be set to a + * value less than or equal to 3600 (1 hour). If a value is not specified, the token's + * lifetime will be set to a default value of one hour. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final GenerateAccessTokenResponse generateAccessToken( + ServiceAccountName name, List delegates, List scope, Duration lifetime) { + + GenerateAccessTokenRequest request = + GenerateAccessTokenRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .addAllDelegates(delegates) + .addAllScope(scope) + .setLifetime(lifetime) + .build(); + return generateAccessToken(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Generates an OAuth 2.0 access token for a service account. + * + *

Sample code: + * + *


+   * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   List<String> delegates = new ArrayList<>();
+   *   List<String> scope = new ArrayList<>();
+   *   Duration lifetime = Duration.newBuilder().build();
+   *   GenerateAccessTokenResponse response = iamCredentialsClient.generateAccessToken(name.toString(), delegates, scope, lifetime);
    * }
    * 
* @@ -221,7 +238,7 @@ public IamCredentialsStub getStub() { */ public final GenerateAccessTokenResponse generateAccessToken( String name, List delegates, List scope, Duration lifetime) { - SERVICE_ACCOUNT_PATH_TEMPLATE.validate(name, "generateAccessToken"); + GenerateAccessTokenRequest request = GenerateAccessTokenRequest.newBuilder() .setName(name) @@ -240,10 +257,10 @@ public final GenerateAccessTokenResponse generateAccessToken( * *

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> scope = new ArrayList<>();
    *   GenerateAccessTokenRequest request = GenerateAccessTokenRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .addAllScope(scope)
    *     .build();
    *   GenerateAccessTokenResponse response = iamCredentialsClient.generateAccessToken(request);
@@ -265,10 +282,10 @@ public final GenerateAccessTokenResponse generateAccessToken(GenerateAccessToken
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> scope = new ArrayList<>();
    *   GenerateAccessTokenRequest request = GenerateAccessTokenRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .addAllScope(scope)
    *     .build();
    *   ApiFuture<GenerateAccessTokenResponse> future = iamCredentialsClient.generateAccessTokenCallable().futureCall(request);
@@ -290,11 +307,55 @@ public final GenerateAccessTokenResponse generateAccessToken(GenerateAccessToken
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   List<String> delegates = new ArrayList<>();
+   *   String audience = "";
+   *   boolean includeEmail = false;
+   *   GenerateIdTokenResponse response = iamCredentialsClient.generateIdToken(name, delegates, audience, includeEmail);
+   * }
+   * 
+ * + * @param name The resource name of the service account for which the credentials are requested, + * in the following format: `projects/-/serviceAccounts/{ACCOUNT_EMAIL_OR_UNIQUEID}`. + * @param delegates The sequence of service accounts in a delegation chain. Each service account + * must be granted the `roles/iam.serviceAccountTokenCreator` role on its next service account + * in the chain. The last service account in the chain must be granted the + * `roles/iam.serviceAccountTokenCreator` role on the service account that is specified in the + * `name` field of the request. + *

The delegates must have the following format: + * `projects/-/serviceAccounts/{ACCOUNT_EMAIL_OR_UNIQUEID}` + * @param audience The audience for the token, such as the API or account that this token grants + * access to. + * @param includeEmail Include the service account email in the token. If set to `true`, the token + * will contain `email` and `email_verified` claims. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final GenerateIdTokenResponse generateIdToken( + ServiceAccountName name, List delegates, String audience, boolean includeEmail) { + + GenerateIdTokenRequest request = + GenerateIdTokenRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .addAllDelegates(delegates) + .setAudience(audience) + .setIncludeEmail(includeEmail) + .build(); + return generateIdToken(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Generates an OpenID Connect ID token for a service account. + * + *

Sample code: + * + *


+   * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> delegates = new ArrayList<>();
    *   String audience = "";
    *   boolean includeEmail = false;
-   *   GenerateIdTokenResponse response = iamCredentialsClient.generateIdToken(formattedName, delegates, audience, includeEmail);
+   *   GenerateIdTokenResponse response = iamCredentialsClient.generateIdToken(name.toString(), delegates, audience, includeEmail);
    * }
    * 
* @@ -315,7 +376,7 @@ public final GenerateAccessTokenResponse generateAccessToken(GenerateAccessToken */ public final GenerateIdTokenResponse generateIdToken( String name, List delegates, String audience, boolean includeEmail) { - SERVICE_ACCOUNT_PATH_TEMPLATE.validate(name, "generateIdToken"); + GenerateIdTokenRequest request = GenerateIdTokenRequest.newBuilder() .setName(name) @@ -334,10 +395,10 @@ public final GenerateIdTokenResponse generateIdToken( * *

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   String audience = "";
    *   GenerateIdTokenRequest request = GenerateIdTokenRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .setAudience(audience)
    *     .build();
    *   GenerateIdTokenResponse response = iamCredentialsClient.generateIdToken(request);
@@ -359,10 +420,10 @@ public final GenerateIdTokenResponse generateIdToken(GenerateIdTokenRequest requ
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   String audience = "";
    *   GenerateIdTokenRequest request = GenerateIdTokenRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .setAudience(audience)
    *     .build();
    *   ApiFuture<GenerateIdTokenResponse> future = iamCredentialsClient.generateIdTokenCallable().futureCall(request);
@@ -384,10 +445,49 @@ public final GenerateIdTokenResponse generateIdToken(GenerateIdTokenRequest requ
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> delegates = new ArrayList<>();
    *   ByteString payload = ByteString.copyFromUtf8("");
-   *   SignBlobResponse response = iamCredentialsClient.signBlob(formattedName, delegates, payload);
+   *   SignBlobResponse response = iamCredentialsClient.signBlob(name, delegates, payload);
+   * }
+   * 
+ * + * @param name The resource name of the service account for which the credentials are requested, + * in the following format: `projects/-/serviceAccounts/{ACCOUNT_EMAIL_OR_UNIQUEID}`. + * @param delegates The sequence of service accounts in a delegation chain. Each service account + * must be granted the `roles/iam.serviceAccountTokenCreator` role on its next service account + * in the chain. The last service account in the chain must be granted the + * `roles/iam.serviceAccountTokenCreator` role on the service account that is specified in the + * `name` field of the request. + *

The delegates must have the following format: + * `projects/-/serviceAccounts/{ACCOUNT_EMAIL_OR_UNIQUEID}` + * @param payload The bytes to sign. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final SignBlobResponse signBlob( + ServiceAccountName name, List delegates, ByteString payload) { + + SignBlobRequest request = + SignBlobRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .addAllDelegates(delegates) + .setPayload(payload) + .build(); + return signBlob(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Signs a blob using a service account's system-managed private key. + * + *

Sample code: + * + *


+   * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   List<String> delegates = new ArrayList<>();
+   *   ByteString payload = ByteString.copyFromUtf8("");
+   *   SignBlobResponse response = iamCredentialsClient.signBlob(name.toString(), delegates, payload);
    * }
    * 
* @@ -404,7 +504,7 @@ public final GenerateIdTokenResponse generateIdToken(GenerateIdTokenRequest requ * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final SignBlobResponse signBlob(String name, List delegates, ByteString payload) { - SERVICE_ACCOUNT_PATH_TEMPLATE.validate(name, "signBlob"); + SignBlobRequest request = SignBlobRequest.newBuilder() .setName(name) @@ -422,10 +522,10 @@ public final SignBlobResponse signBlob(String name, List delegates, Byte * *

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   ByteString payload = ByteString.copyFromUtf8("");
    *   SignBlobRequest request = SignBlobRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .setPayload(payload)
    *     .build();
    *   SignBlobResponse response = iamCredentialsClient.signBlob(request);
@@ -447,10 +547,10 @@ public final SignBlobResponse signBlob(SignBlobRequest request) {
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   ByteString payload = ByteString.copyFromUtf8("");
    *   SignBlobRequest request = SignBlobRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .setPayload(payload)
    *     .build();
    *   ApiFuture<SignBlobResponse> future = iamCredentialsClient.signBlobCallable().futureCall(request);
@@ -471,7 +571,7 @@ public final UnaryCallable signBlobCallable()
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   String formattedName = ServiceAccountName.format("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> delegates = new ArrayList<>();
    *   String payload = "";
    *   SignJwtResponse response = iamCredentialsClient.signJwt(formattedName, delegates, payload);
@@ -491,7 +591,7 @@ public final UnaryCallable signBlobCallable()
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final SignJwtResponse signJwt(String name, List delegates, String payload) {
-    SERVICE_ACCOUNT_PATH_TEMPLATE.validate(name, "signJwt");
+
     SignJwtRequest request =
         SignJwtRequest.newBuilder()
             .setName(name)
@@ -509,7 +609,7 @@ public final SignJwtResponse signJwt(String name, List delegates, String
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   String formattedName = ServiceAccountName.format("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   String payload = "";
    *   SignJwtRequest request = SignJwtRequest.newBuilder()
    *     .setName(formattedName)
@@ -534,7 +634,7 @@ public final SignJwtResponse signJwt(SignJwtRequest request) {
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   String formattedName = ServiceAccountName.format("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   String payload = "";
    *   SignJwtRequest request = SignJwtRequest.newBuilder()
    *     .setName(formattedName)
@@ -558,10 +658,66 @@ public final UnaryCallable signJwtCallable() {
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> scope = new ArrayList<>();
    *   String jwt = "";
-   *   GenerateIdentityBindingAccessTokenResponse response = iamCredentialsClient.generateIdentityBindingAccessToken(formattedName, scope, jwt);
+   *   GenerateIdentityBindingAccessTokenResponse response = iamCredentialsClient.generateIdentityBindingAccessToken(name, scope, jwt);
+   * }
+   * 
+ * + * @param name The resource name of the service account for which the credentials are requested, + * in the following format: `projects/-/serviceAccounts/{ACCOUNT_EMAIL_OR_UNIQUEID}`. + * @param scope Code to identify the scopes to be included in the OAuth 2.0 access token. See + * https://developers.google.com/identity/protocols/googlescopes for more information. At + * least one value required. + * @param jwt Required. Input token. Must be in JWT format according to RFC7523 + * (https://tools.ietf.org/html/rfc7523) and must have 'kid' field in the header. Supported + * signing algorithms: RS256 (RS512, ES256, ES512 coming soon). Mandatory payload fields + * (along the lines of RFC 7523, section 3): - iss: issuer of the token. Must provide a + * discovery document at $iss/.well-known/openid-configuration . The document needs to be + * formatted according to section 4.2 of the OpenID Connect Discovery 1.0 specification. - + * iat: Issue time in seconds since epoch. Must be in the past. - exp: Expiration time in + * seconds since epoch. Must be less than 48 hours after iat. We recommend to create tokens + * that last shorter than 6 hours to improve security unless business reasons mandate longer + * expiration times. Shorter token lifetimes are generally more secure since tokens that have + * been exfiltrated by attackers can be used for a shorter time. you can configure the maximum + * lifetime of the incoming token in the configuration of the mapper. The resulting Google + * token will expire within an hour or at "exp", whichever is earlier. - sub: JWT subject, + * identity asserted in the JWT. - aud: Configured in the mapper policy. By default the + * service account email. + *

Claims from the incoming token can be transferred into the output token accoding to the + * mapper configuration. The outgoing claim size is limited. Outgoing claims size must be less + * than 4kB serialized as JSON without whitespace. + *

Example header: { "alg": "RS256", "kid": "92a4265e14ab04d4d228a48d10d4ca31610936f8" } + * Example payload: { "iss": "https://accounts.google.com", "iat": 1517963104, "exp": + * 1517966704, "aud": "https://iamcredentials.googleapis.com/", "sub": + * "113475438248934895348", "my_claims": { "additional_claim": "value" } } + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final GenerateIdentityBindingAccessTokenResponse generateIdentityBindingAccessToken( + ServiceAccountName name, List scope, String jwt) { + + GenerateIdentityBindingAccessTokenRequest request = + GenerateIdentityBindingAccessTokenRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .addAllScope(scope) + .setJwt(jwt) + .build(); + return generateIdentityBindingAccessToken(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Exchange a JWT signed by third party identity provider to an OAuth 2.0 access token + * + *

Sample code: + * + *


+   * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   List<String> scope = new ArrayList<>();
+   *   String jwt = "";
+   *   GenerateIdentityBindingAccessTokenResponse response = iamCredentialsClient.generateIdentityBindingAccessToken(name.toString(), scope, jwt);
    * }
    * 
* @@ -596,7 +752,7 @@ public final UnaryCallable signJwtCallable() { */ public final GenerateIdentityBindingAccessTokenResponse generateIdentityBindingAccessToken( String name, List scope, String jwt) { - SERVICE_ACCOUNT_PATH_TEMPLATE.validate(name, "generateIdentityBindingAccessToken"); + GenerateIdentityBindingAccessTokenRequest request = GenerateIdentityBindingAccessTokenRequest.newBuilder() .setName(name) @@ -614,11 +770,11 @@ public final GenerateIdentityBindingAccessTokenResponse generateIdentityBindingA * *

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> scope = new ArrayList<>();
    *   String jwt = "";
    *   GenerateIdentityBindingAccessTokenRequest request = GenerateIdentityBindingAccessTokenRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .addAllScope(scope)
    *     .setJwt(jwt)
    *     .build();
@@ -642,11 +798,11 @@ public final GenerateIdentityBindingAccessTokenResponse generateIdentityBindingA
    *
    * 

    * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
-   *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+   *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
    *   List<String> scope = new ArrayList<>();
    *   String jwt = "";
    *   GenerateIdentityBindingAccessTokenRequest request = GenerateIdentityBindingAccessTokenRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .addAllScope(scope)
    *     .setJwt(jwt)
    *     .build();
diff --git a/google-cloud-clients/google-cloud-iamcredentials/src/main/java/com/google/cloud/iam/credentials/v1/package-info.java b/google-cloud-clients/google-cloud-iamcredentials/src/main/java/com/google/cloud/iam/credentials/v1/package-info.java
index 61f2ddfa4165..a004cb641506 100644
--- a/google-cloud-clients/google-cloud-iamcredentials/src/main/java/com/google/cloud/iam/credentials/v1/package-info.java
+++ b/google-cloud-clients/google-cloud-iamcredentials/src/main/java/com/google/cloud/iam/credentials/v1/package-info.java
@@ -35,11 +35,11 @@
  * 
  * 
  * try (IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create()) {
- *   String formattedName = IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]");
+ *   ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]");
  *   List<String> delegates = new ArrayList<>();
  *   List<String> scope = new ArrayList<>();
  *   Duration lifetime = Duration.newBuilder().build();
- *   GenerateAccessTokenResponse response = iamCredentialsClient.generateAccessToken(formattedName, delegates, scope, lifetime);
+ *   GenerateAccessTokenResponse response = iamCredentialsClient.generateAccessToken(name, delegates, scope, lifetime);
  * }
  * 
  * 
diff --git a/google-cloud-clients/google-cloud-iamcredentials/src/test/java/com/google/cloud/iam/credentials/v1/IamCredentialsClientTest.java b/google-cloud-clients/google-cloud-iamcredentials/src/test/java/com/google/cloud/iam/credentials/v1/IamCredentialsClientTest.java index c84bf6668005..f6e3d117291e 100644 --- a/google-cloud-clients/google-cloud-iamcredentials/src/test/java/com/google/cloud/iam/credentials/v1/IamCredentialsClientTest.java +++ b/google-cloud-clients/google-cloud-iamcredentials/src/test/java/com/google/cloud/iam/credentials/v1/IamCredentialsClientTest.java @@ -83,21 +83,20 @@ public void generateAccessTokenTest() { GenerateAccessTokenResponse.newBuilder().setAccessToken(accessToken).build(); mockIAMCredentials.addResponse(expectedResponse); - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]"); List delegates = new ArrayList<>(); List scope = new ArrayList<>(); Duration lifetime = Duration.newBuilder().build(); GenerateAccessTokenResponse actualResponse = - client.generateAccessToken(formattedName, delegates, scope, lifetime); + client.generateAccessToken(name, delegates, scope, lifetime); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockIAMCredentials.getRequests(); Assert.assertEquals(1, actualRequests.size()); GenerateAccessTokenRequest actualRequest = (GenerateAccessTokenRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ServiceAccountName.parse(actualRequest.getName())); Assert.assertEquals(delegates, actualRequest.getDelegatesList()); Assert.assertEquals(scope, actualRequest.getScopeList()); Assert.assertEquals(lifetime, actualRequest.getLifetime()); @@ -114,13 +113,12 @@ public void generateAccessTokenExceptionTest() throws Exception { mockIAMCredentials.addException(exception); try { - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]"); List delegates = new ArrayList<>(); List scope = new ArrayList<>(); Duration lifetime = Duration.newBuilder().build(); - client.generateAccessToken(formattedName, delegates, scope, lifetime); + client.generateAccessToken(name, delegates, scope, lifetime); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -135,21 +133,20 @@ public void generateIdTokenTest() { GenerateIdTokenResponse.newBuilder().setToken(token).build(); mockIAMCredentials.addResponse(expectedResponse); - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]"); List delegates = new ArrayList<>(); String audience = "audience975628804"; boolean includeEmail = false; GenerateIdTokenResponse actualResponse = - client.generateIdToken(formattedName, delegates, audience, includeEmail); + client.generateIdToken(name, delegates, audience, includeEmail); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockIAMCredentials.getRequests(); Assert.assertEquals(1, actualRequests.size()); GenerateIdTokenRequest actualRequest = (GenerateIdTokenRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ServiceAccountName.parse(actualRequest.getName())); Assert.assertEquals(delegates, actualRequest.getDelegatesList()); Assert.assertEquals(audience, actualRequest.getAudience()); Assert.assertEquals(includeEmail, actualRequest.getIncludeEmail()); @@ -166,13 +163,12 @@ public void generateIdTokenExceptionTest() throws Exception { mockIAMCredentials.addException(exception); try { - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]"); List delegates = new ArrayList<>(); String audience = "audience975628804"; boolean includeEmail = false; - client.generateIdToken(formattedName, delegates, audience, includeEmail); + client.generateIdToken(name, delegates, audience, includeEmail); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -188,19 +184,18 @@ public void signBlobTest() { SignBlobResponse.newBuilder().setKeyId(keyId).setSignedBlob(signedBlob).build(); mockIAMCredentials.addResponse(expectedResponse); - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]"); List delegates = new ArrayList<>(); ByteString payload = ByteString.copyFromUtf8("-114"); - SignBlobResponse actualResponse = client.signBlob(formattedName, delegates, payload); + SignBlobResponse actualResponse = client.signBlob(name, delegates, payload); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockIAMCredentials.getRequests(); Assert.assertEquals(1, actualRequests.size()); SignBlobRequest actualRequest = (SignBlobRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ServiceAccountName.parse(actualRequest.getName())); Assert.assertEquals(delegates, actualRequest.getDelegatesList()); Assert.assertEquals(payload, actualRequest.getPayload()); Assert.assertTrue( @@ -216,12 +211,11 @@ public void signBlobExceptionTest() throws Exception { mockIAMCredentials.addException(exception); try { - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]"); List delegates = new ArrayList<>(); ByteString payload = ByteString.copyFromUtf8("-114"); - client.signBlob(formattedName, delegates, payload); + client.signBlob(name, delegates, payload); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -237,8 +231,7 @@ public void signJwtTest() { SignJwtResponse.newBuilder().setKeyId(keyId).setSignedJwt(signedJwt).build(); mockIAMCredentials.addResponse(expectedResponse); - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + String formattedName = ServiceAccountName.format("[PROJECT]", "[SERVICE_ACCOUNT]"); List delegates = new ArrayList<>(); String payload = "-114"; @@ -265,8 +258,7 @@ public void signJwtExceptionTest() throws Exception { mockIAMCredentials.addException(exception); try { - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + String formattedName = ServiceAccountName.format("[PROJECT]", "[SERVICE_ACCOUNT]"); List delegates = new ArrayList<>(); String payload = "-114"; @@ -285,13 +277,12 @@ public void generateIdentityBindingAccessTokenTest() { GenerateIdentityBindingAccessTokenResponse.newBuilder().setAccessToken(accessToken).build(); mockIAMCredentials.addResponse(expectedResponse); - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]"); List scope = new ArrayList<>(); String jwt = "jwt105671"; GenerateIdentityBindingAccessTokenResponse actualResponse = - client.generateIdentityBindingAccessToken(formattedName, scope, jwt); + client.generateIdentityBindingAccessToken(name, scope, jwt); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockIAMCredentials.getRequests(); @@ -299,7 +290,7 @@ public void generateIdentityBindingAccessTokenTest() { GenerateIdentityBindingAccessTokenRequest actualRequest = (GenerateIdentityBindingAccessTokenRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ServiceAccountName.parse(actualRequest.getName())); Assert.assertEquals(scope, actualRequest.getScopeList()); Assert.assertEquals(jwt, actualRequest.getJwt()); Assert.assertTrue( @@ -315,12 +306,11 @@ public void generateIdentityBindingAccessTokenExceptionTest() throws Exception { mockIAMCredentials.addException(exception); try { - String formattedName = - IamCredentialsClient.formatServiceAccountName("[PROJECT]", "[SERVICE_ACCOUNT]"); + ServiceAccountName name = ServiceAccountName.of("[PROJECT]", "[SERVICE_ACCOUNT]"); List scope = new ArrayList<>(); String jwt = "jwt105671"; - client.generateIdentityBindingAccessToken(formattedName, scope, jwt); + client.generateIdentityBindingAccessToken(name, scope, jwt); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception diff --git a/google-cloud-clients/google-cloud-iamcredentials/synth.metadata b/google-cloud-clients/google-cloud-iamcredentials/synth.metadata index b8c86d207514..afafe9fbe18e 100644 --- a/google-cloud-clients/google-cloud-iamcredentials/synth.metadata +++ b/google-cloud-clients/google-cloud-iamcredentials/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-03-01T08:44:56.923289Z", + "updateTime": "2019-03-27T07:47:22.536681Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.14", - "dockerImage": "googleapis/artman@sha256:f3d61ae45abaeefb6be5f228cda22732c2f1b00fb687c79c4bd4f2c42bb1e1a7" + "version": "0.16.19", + "dockerImage": "googleapis/artman@sha256:70ba28fda87e032ae44e6df41b7fc342c1b0cce1ed90658c4890eb4f613038c2" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "41d72d444fbe445f4da89e13be02078734fb7875", - "internalRef": "236230004" + "sha": "d4d57d766601105478c661132f2687e6984b92d5", + "internalRef": "240469931" } } ],