diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg
index 01e096004..175a89c71 100644
--- a/.kokoro/presubmit/samples.cfg
+++ b/.kokoro/presubmit/samples.cfg
@@ -29,5 +29,5 @@ env_vars: {
env_vars: {
key: "SECRET_MANAGER_KEYS"
- value: "java-docs-samples-service-account"
-}
\ No newline at end of file
+ value: "java-docs-samples-service-account,java-scc-samples-secrets"
+}
diff --git a/README.md b/README.md
index 6b69ee3c0..738b140ab 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,11 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file
google-cloud-pubsub
+
+ com.google.cloud
+ google-cloud-bigquery
+
+
```
If you are using Maven without BOM, add this to your dependencies:
@@ -118,6 +123,11 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-securitycente
| List Notification Config Snippets | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/ListNotificationConfigSnippets.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/ListNotificationConfigSnippets.java) |
| Notification Receiver | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/NotificationReceiver.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/NotificationReceiver.java) |
| Update Notification Config Snippets | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/UpdateNotificationConfigSnippets.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/UpdateNotificationConfigSnippets.java) |
+| Create Big Query Export | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java) |
+| Delete Big Query Export | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java) |
+| Get Big Query Export | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java) |
+| List Big Query Exports | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java) |
+| Update Big Query Export | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java) |
| Bulk Mute Findings | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/BulkMuteFindings.java) |
| Create Mute Rule | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/CreateMuteRule.java) |
| Delete Mute Rule | [source code](https://github.com/googleapis/java-securitycenter/blob/main/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-securitycenter&page=editor&open_in_editor=samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/muteconfig/DeleteMuteRule.java) |
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 7b9195e59..40dbf715d 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -55,6 +55,12 @@
1.1.3
test
+
+ com.google.cloud
+ google-cloud-bigquery
+ 2.9.3
+ test
+
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 30c5dc678..efe062f33 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -48,6 +48,11 @@
com.google.cloud
google-cloud-pubsub
+
+
+ com.google.cloud
+ google-cloud-bigquery
+
diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java
new file mode 100644
index 000000000..b4ebf520f
--- /dev/null
+++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/CreateBigQueryExport.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.cloud.examples.securitycenter.snippets.bigqueryexport;
+
+// [START securitycenter_create_bigquery_export]
+
+import com.google.cloud.securitycenter.v1.BigQueryExport;
+import com.google.cloud.securitycenter.v1.CreateBigQueryExportRequest;
+import com.google.cloud.securitycenter.v1.SecurityCenterClient;
+import java.io.IOException;
+import java.util.UUID;
+
+public class CreateBigQueryExport {
+
+ public static void main(String[] args) throws IOException {
+ // TODO(Developer): Modify the following variable values.
+
+ // parent: Use any one of the following resource paths:
+ // - organizations/{organization_id}
+ // - folders/{folder_id}
+ // - projects/{project_id}
+ String parent = String.format("projects/%s", "your-google-cloud-project-id");
+
+ // filter: Expression that defines the filter to apply across create/update events of findings.
+ String filter =
+ "severity=\"LOW\" OR severity=\"MEDIUM\" AND "
+ + "category=\"Persistence: IAM Anomalous Grant\" AND "
+ + "-resource.type:\"compute\"";
+
+ // bigQueryDatasetId: The BigQuery dataset to write findings' updates to.
+ String bigQueryDatasetId = "your-bigquery-dataset-id";
+
+ // bigQueryExportId: Unique identifier provided by the client.
+ // For more info, see:
+ // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
+ String bigQueryExportId = "default-" + UUID.randomUUID().toString().split("-")[0];
+
+ createBigQueryExport(parent, filter, bigQueryDatasetId, bigQueryExportId);
+ }
+
+ // Create export configuration to export findings from a project to a BigQuery dataset.
+ // Optionally specify filter to export certain findings only.
+ public static void createBigQueryExport(
+ String parent, String filter, String bigQueryDatasetId, String bigQueryExportId)
+ throws IOException {
+ // Initialize client that will be used to send requests. This client only needs to be created
+ // once, and can be reused for multiple requests. After completing all of your requests, call
+ // the "close" method on the client to safely clean up any remaining background resources.
+ try (SecurityCenterClient client = SecurityCenterClient.create()) {
+
+ // Create the BigQuery export configuration.
+ BigQueryExport bigQueryExport =
+ BigQueryExport.newBuilder()
+ .setDescription(
+ "Export low and medium findings if the compute resource "
+ + "has an IAM anomalous grant")
+ .setFilter(filter)
+ .setDataset(String.format("%s/datasets/%s", parent, bigQueryDatasetId))
+ .build();
+
+ CreateBigQueryExportRequest bigQueryExportRequest =
+ CreateBigQueryExportRequest.newBuilder()
+ .setParent(parent)
+ .setBigQueryExport(bigQueryExport)
+ .setBigQueryExportId(bigQueryExportId)
+ .build();
+
+ // Create the export request.
+ BigQueryExport response = client.createBigQueryExport(bigQueryExportRequest);
+
+ System.out.printf("BigQuery export request created successfully: %s\n", response.getName());
+ }
+ }
+}
+// [END securitycenter_create_bigquery_export]
diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java
new file mode 100644
index 000000000..69236fd37
--- /dev/null
+++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/DeleteBigQueryExport.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.cloud.examples.securitycenter.snippets.bigqueryexport;
+
+// [START securitycenter_delete_bigquery_export]
+
+import com.google.cloud.securitycenter.v1.DeleteBigQueryExportRequest;
+import com.google.cloud.securitycenter.v1.SecurityCenterClient;
+import java.io.IOException;
+
+public class DeleteBigQueryExport {
+
+ public static void main(String[] args) throws IOException {
+ // TODO(Developer): Modify the following variable values.
+
+ // parent: Use any one of the following resource paths:
+ // - organizations/{organization_id}
+ // - folders/{folder_id}
+ // - projects/{project_id}
+ String parent = String.format("projects/%s", "your-google-cloud-project-id");
+
+ // bigQueryExportId: Unique identifier that is used to identify the export.
+ String bigQueryExportId = "export-id";
+
+ deleteBigQueryExport(parent, bigQueryExportId);
+ }
+
+ // Delete an existing BigQuery export.
+ public static void deleteBigQueryExport(String parent, String bigQueryExportId)
+ throws IOException {
+ // Initialize client that will be used to send requests. This client only needs to be created
+ // once, and can be reused for multiple requests. After completing all of your requests, call
+ // the "close" method on the client to safely clean up any remaining background resources.
+ try (SecurityCenterClient client = SecurityCenterClient.create()) {
+
+ DeleteBigQueryExportRequest bigQueryExportRequest =
+ DeleteBigQueryExportRequest.newBuilder()
+ .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
+ .build();
+
+ client.deleteBigQueryExport(bigQueryExportRequest);
+ System.out.printf("BigQuery export request deleted successfully: %s", bigQueryExportId);
+ }
+ }
+}
+// [END securitycenter_delete_bigquery_export]
diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java
new file mode 100644
index 000000000..7eac38053
--- /dev/null
+++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/GetBigQueryExport.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.cloud.examples.securitycenter.snippets.bigqueryexport;
+
+// [START securitycenter_get_bigquery_export]
+
+import com.google.cloud.securitycenter.v1.BigQueryExport;
+import com.google.cloud.securitycenter.v1.GetBigQueryExportRequest;
+import com.google.cloud.securitycenter.v1.SecurityCenterClient;
+import java.io.IOException;
+
+public class GetBigQueryExport {
+
+ public static void main(String[] args) throws IOException {
+ // TODO(Developer): Modify the following variable values.
+
+ // parent: Use any one of the following resource paths:
+ // - organizations/{organization_id}
+ // - folders/{folder_id}
+ // - projects/{project_id}
+ String parent = String.format("projects/%s", "your-google-cloud-project-id");
+
+ // bigQueryExportId: Unique identifier that is used to identify the export.
+ String bigQueryExportId = "export-id";
+
+ getBigQueryExport(parent, bigQueryExportId);
+ }
+
+ // Retrieve an existing BigQuery export.
+ public static void getBigQueryExport(String parent, String bigQueryExportId) throws IOException {
+ // Initialize client that will be used to send requests. This client only needs to be created
+ // once, and can be reused for multiple requests. After completing all of your requests, call
+ // the "close" method on the client to safely clean up any remaining background resources.
+ try (SecurityCenterClient client = SecurityCenterClient.create()) {
+
+ GetBigQueryExportRequest bigQueryExportRequest =
+ GetBigQueryExportRequest.newBuilder()
+ .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
+ .build();
+
+ BigQueryExport response = client.getBigQueryExport(bigQueryExportRequest);
+ System.out.printf("Retrieved the BigQuery export: %s", response.getName());
+ }
+ }
+}
+// [END securitycenter_get_bigquery_export]
diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java
new file mode 100644
index 000000000..bec01c674
--- /dev/null
+++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/ListBigQueryExports.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.cloud.examples.securitycenter.snippets.bigqueryexport;
+
+// [START securitycenter_list_bigquery_export]
+
+import com.google.cloud.securitycenter.v1.BigQueryExport;
+import com.google.cloud.securitycenter.v1.ListBigQueryExportsRequest;
+import com.google.cloud.securitycenter.v1.SecurityCenterClient;
+import com.google.cloud.securitycenter.v1.SecurityCenterClient.ListBigQueryExportsPagedResponse;
+import java.io.IOException;
+
+public class ListBigQueryExports {
+
+ public static void main(String[] args) throws IOException {
+ // TODO(Developer): Modify the following variable values.
+
+ // parent: The parent, which owns the collection of BigQuery exports.
+ // Use any one of the following resource paths:
+ // - organizations/{organization_id}
+ // - folders/{folder_id}
+ // - projects/{project_id}
+ String parent = String.format("projects/%s", "your-google-cloud-project-id");
+
+ listBigQueryExports(parent);
+ }
+
+ // List BigQuery exports in the given parent.
+ public static void listBigQueryExports(String parent) throws IOException {
+ // Initialize client that will be used to send requests. This client only needs to be created
+ // once, and can be reused for multiple requests. After completing all of your requests, call
+ // the "close" method on the client to safely clean up any remaining background resources.
+ try (SecurityCenterClient client = SecurityCenterClient.create()) {
+
+ ListBigQueryExportsRequest request =
+ ListBigQueryExportsRequest.newBuilder().setParent(parent).build();
+
+ ListBigQueryExportsPagedResponse response = client.listBigQueryExports(request);
+
+ System.out.println("Listing BigQuery exports:");
+ for (BigQueryExport bigQueryExport : response.iterateAll()) {
+ System.out.println(bigQueryExport.getName());
+ }
+ }
+ }
+}
+// [END securitycenter_list_bigquery_export]
diff --git a/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java
new file mode 100644
index 000000000..c0e302d2a
--- /dev/null
+++ b/samples/snippets/src/main/java/com/google/cloud/examples/securitycenter/snippets/bigqueryexport/UpdateBigQueryExport.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.cloud.examples.securitycenter.snippets.bigqueryexport;
+
+// [START securitycenter_update_bigquery_export]
+
+import com.google.cloud.securitycenter.v1.BigQueryExport;
+import com.google.cloud.securitycenter.v1.SecurityCenterClient;
+import com.google.cloud.securitycenter.v1.UpdateBigQueryExportRequest;
+import com.google.protobuf.FieldMask;
+import java.io.IOException;
+import java.util.UUID;
+
+public class UpdateBigQueryExport {
+
+ public static void main(String[] args) throws IOException {
+ // TODO(Developer): Modify the following variable values.
+
+ // parent: Use any one of the following resource paths:
+ // - organizations/{organization_id}
+ // - folders/{folder_id}
+ // - projects/{project_id}
+ String parent = String.format("projects/%s", "your-google-cloud-project-id");
+
+ // filter: Expression that defines the filter to apply across create/update events of findings.
+ String filter =
+ "severity=\"LOW\" OR severity=\"MEDIUM\" AND "
+ + "category=\"Persistence: IAM Anomalous Grant\" AND "
+ + "-resource.type:\"compute\"";
+
+ // bigQueryExportId: Unique identifier provided by the client.
+ // For more info, see:
+ // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
+ String bigQueryExportId = "big-query-export-id";
+
+ updateBigQueryExport(parent, filter, bigQueryExportId);
+ }
+
+ // Updates an existing BigQuery export.
+ public static void updateBigQueryExport(String parent, String filter, String bigQueryExportId)
+ throws IOException {
+ // Initialize client that will be used to send requests. This client only needs to be created
+ // once, and can be reused for multiple requests. After completing all of your requests, call
+ // the "close" method on the client to safely clean up any remaining background resources.
+ try (SecurityCenterClient client = SecurityCenterClient.create()) {
+
+ // Set the new values for export configuration.
+ BigQueryExport bigQueryExport =
+ BigQueryExport.newBuilder()
+ .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
+ .setFilter(filter)
+ .build();
+
+ UpdateBigQueryExportRequest request =
+ UpdateBigQueryExportRequest.newBuilder()
+ .setBigQueryExport(bigQueryExport)
+ // Set the update mask to specify which properties should be updated.
+ // If empty, all mutable fields will be updated.
+ // For more info on constructing field mask path, see the proto or:
+ // https://cloud.google.com/java/docs/reference/protobuf/latest/com.google.protobuf.FieldMask
+ .setUpdateMask(FieldMask.newBuilder().addPaths("filter").build())
+ .build();
+
+ BigQueryExport response = client.updateBigQueryExport(request);
+ if (!response.getFilter().equalsIgnoreCase(filter)) {
+ System.out.println("Failed to update BigQueryExport!");
+ return;
+ }
+ System.out.println("BigQueryExport updated successfully!");
+ }
+ }
+}
+// [END securitycenter_update_bigquery_export]
diff --git a/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java
new file mode 100644
index 000000000..18dcdc683
--- /dev/null
+++ b/samples/snippets/src/test/java/com/google/cloud/examples/securitycenter/snippets/BigQueryExportIT.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.cloud.examples.securitycenter.snippets;
+
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.BigQueryException;
+import com.google.cloud.bigquery.BigQueryOptions;
+import com.google.cloud.bigquery.Dataset;
+import com.google.cloud.bigquery.DatasetInfo;
+import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.CreateBigQueryExport;
+import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.DeleteBigQueryExport;
+import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.GetBigQueryExport;
+import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.ListBigQueryExports;
+import com.google.cloud.examples.securitycenter.snippets.bigqueryexport.UpdateBigQueryExport;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.UUID;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+@RunWith(JUnit4.class)
+public class BigQueryExportIT {
+
+ // TODO(Developer): Replace the below variables.
+ private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT");
+ private static final String BQ_DATASET_NAME = "sampledataset";
+ private static final String BQ_EXPORT_ID =
+ "default-" + UUID.randomUUID().toString().split("-")[0];
+
+ private static ByteArrayOutputStream stdOut;
+
+ // Check if the required environment variables are set.
+ public static void requireEnvVar(String envVarName) {
+ assertWithMessage(String.format("Missing environment variable '%s' ", envVarName))
+ .that(System.getenv(envVarName))
+ .isNotEmpty();
+ }
+
+ @BeforeClass
+ public static void setUp() throws IOException {
+ final PrintStream out = System.out;
+ stdOut = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(stdOut));
+
+ requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS");
+ requireEnvVar("GOOGLE_CLOUD_PROJECT");
+
+ // Create a BigQuery dataset.
+ createBigQueryDataset(BQ_DATASET_NAME);
+ // Create export request.
+ String filter = "severity=\"LOW\" OR severity=\"MEDIUM\"";
+ CreateBigQueryExport.createBigQueryExport(
+ String.format("projects/%s", PROJECT_ID), filter, BQ_DATASET_NAME, BQ_EXPORT_ID);
+
+ stdOut = null;
+ System.setOut(out);
+ }
+
+ @AfterClass
+ public static void cleanUp() throws IOException {
+ final PrintStream out = System.out;
+ stdOut = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(stdOut));
+
+ // Delete BigQuery Dataset and export request.
+ deleteBigQueryDataset(BQ_DATASET_NAME);
+ DeleteBigQueryExport.deleteBigQueryExport(
+ String.format("projects/%s", PROJECT_ID), BQ_EXPORT_ID);
+ assertThat(stdOut.toString())
+ .contains(String.format("BigQuery export request deleted successfully: %s", BQ_EXPORT_ID));
+
+ stdOut = null;
+ System.setOut(out);
+ }
+
+ private static void createBigQueryDataset(String datasetName) {
+ try {
+ BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
+
+ DatasetInfo datasetInfo = DatasetInfo.newBuilder(datasetName).build();
+
+ Dataset newDataset = bigquery.create(datasetInfo);
+ String newDatasetName = newDataset.getDatasetId().getDataset();
+ System.out.println(newDatasetName + " created successfully");
+ } catch (BigQueryException e) {
+ Assert.fail("Dataset was not created. \n" + e);
+ }
+ }
+
+ private static void deleteBigQueryDataset(String datasetName) {
+ try {
+ BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
+ Assert.assertTrue("Deleted BigQuery dataset", bigquery.delete(datasetName));
+ } catch (BigQueryException e) {
+ Assert.fail("Dataset was not deleted. \n" + e);
+ }
+ }
+
+ @Before
+ public void beforeEach() {
+ stdOut = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(stdOut));
+ }
+
+ @After
+ public void afterEach() {
+ stdOut = null;
+ System.setOut(null);
+ }
+
+ @Test
+ public void testGetBigQueryExport() throws IOException {
+ GetBigQueryExport.getBigQueryExport(String.format("projects/%s", PROJECT_ID), BQ_EXPORT_ID);
+ assertThat(stdOut.toString()).contains(BQ_EXPORT_ID);
+ }
+
+ @Test
+ public void testListBigQueryExports() throws IOException {
+ ListBigQueryExports.listBigQueryExports(String.format("projects/%s", PROJECT_ID));
+ assertThat(stdOut.toString()).contains(BQ_EXPORT_ID);
+ }
+
+ @Test
+ public void testUpdateBigQueryExport() throws IOException {
+ String filter = "severity=\"MEDIUM\"";
+ UpdateBigQueryExport.updateBigQueryExport(
+ String.format("projects/%s", PROJECT_ID), filter, BQ_EXPORT_ID);
+ assertThat(stdOut.toString()).contains("BigQueryExport updated successfully!");
+ }
+}