securitycenter: generate new client
Change-Id: I889258d976efdfdf47647e74388b4aa3d07edc69
Reviewed-on: https://code-review.googlesource.com/c/34970
Reviewed-by: Eno Compton <enocom@google.com>
Reviewed-by: kokoro <noreply+kokoro@google.com>
diff --git a/regen-gapic.sh b/regen-gapic.sh
index 91bf069..465ade4 100755
--- a/regen-gapic.sh
+++ b/regen-gapic.sh
@@ -37,6 +37,7 @@
google/cloud/oslogin/artman_oslogin_v1beta.yaml
google/cloud/redis/artman_redis_v1beta1.yaml
google/cloud/redis/artman_redis_v1.yaml
+google/cloud/securitycenter/artman_securitycenter_v1beta1.yaml
google/cloud/speech/artman_speech_v1.yaml
google/cloud/speech/artman_speech_v1p1beta1.yaml
google/cloud/tasks/artman_cloudtasks_v2beta2.yaml
diff --git a/securitycenter/apiv1beta1/doc.go b/securitycenter/apiv1beta1/doc.go
new file mode 100644
index 0000000..3a67da8
--- /dev/null
+++ b/securitycenter/apiv1beta1/doc.go
@@ -0,0 +1,46 @@
+// Copyright 2018 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
+//
+// https://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.
+
+// AUTO-GENERATED CODE. DO NOT EDIT.
+
+// Package securitycenter is an auto-generated package for the
+// Cloud Security Command Center API.
+//
+// NOTE: This package is in alpha. It is not stable, and is likely to change.
+//
+// The public Cloud Security Command Center API.
+package securitycenter // import "cloud.google.com/go/securitycenter/apiv1beta1"
+
+import (
+ "golang.org/x/net/context"
+ "google.golang.org/grpc/metadata"
+)
+
+func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context {
+ out, _ := metadata.FromOutgoingContext(ctx)
+ out = out.Copy()
+ for _, md := range mds {
+ for k, v := range md {
+ out[k] = append(out[k], v...)
+ }
+ }
+ return metadata.NewOutgoingContext(ctx, out)
+}
+
+// DefaultAuthScopes reports the default set of authentication scopes to use with this package.
+func DefaultAuthScopes() []string {
+ return []string{
+ "https://www.googleapis.com/auth/cloud-platform",
+ }
+}
diff --git a/securitycenter/apiv1beta1/mock_test.go b/securitycenter/apiv1beta1/mock_test.go
new file mode 100644
index 0000000..66342b7
--- /dev/null
+++ b/securitycenter/apiv1beta1/mock_test.go
@@ -0,0 +1,1538 @@
+// Copyright 2018 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
+//
+// https://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.
+
+// AUTO-GENERATED CODE. DO NOT EDIT.
+
+package securitycenter
+
+import (
+ emptypb "github.com/golang/protobuf/ptypes/empty"
+ timestamppb "github.com/golang/protobuf/ptypes/timestamp"
+ securitycenterpb "google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1"
+ iampb "google.golang.org/genproto/googleapis/iam/v1"
+ longrunningpb "google.golang.org/genproto/googleapis/longrunning"
+)
+
+import (
+ "flag"
+ "fmt"
+ "io"
+ "log"
+ "net"
+ "os"
+ "strings"
+ "testing"
+
+ "github.com/golang/protobuf/proto"
+ "github.com/golang/protobuf/ptypes"
+ "golang.org/x/net/context"
+ "google.golang.org/api/option"
+ status "google.golang.org/genproto/googleapis/rpc/status"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/metadata"
+ gstatus "google.golang.org/grpc/status"
+)
+
+var _ = io.EOF
+var _ = ptypes.MarshalAny
+var _ status.Status
+
+type mockSecurityCenterServer struct {
+ // Embed for forward compatibility.
+ // Tests will keep working if more methods are added
+ // in the future.
+ securitycenterpb.SecurityCenterServer
+
+ reqs []proto.Message
+
+ // If set, all calls return this error.
+ err error
+
+ // responses to return if err == nil
+ resps []proto.Message
+}
+
+func (s *mockSecurityCenterServer) CreateSource(ctx context.Context, req *securitycenterpb.CreateSourceRequest) (*securitycenterpb.Source, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.Source), nil
+}
+
+func (s *mockSecurityCenterServer) CreateFinding(ctx context.Context, req *securitycenterpb.CreateFindingRequest) (*securitycenterpb.Finding, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.Finding), nil
+}
+
+func (s *mockSecurityCenterServer) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest) (*iampb.Policy, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*iampb.Policy), nil
+}
+
+func (s *mockSecurityCenterServer) GetOrganizationSettings(ctx context.Context, req *securitycenterpb.GetOrganizationSettingsRequest) (*securitycenterpb.OrganizationSettings, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.OrganizationSettings), nil
+}
+
+func (s *mockSecurityCenterServer) GetSource(ctx context.Context, req *securitycenterpb.GetSourceRequest) (*securitycenterpb.Source, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.Source), nil
+}
+
+func (s *mockSecurityCenterServer) GroupAssets(ctx context.Context, req *securitycenterpb.GroupAssetsRequest) (*securitycenterpb.GroupAssetsResponse, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.GroupAssetsResponse), nil
+}
+
+func (s *mockSecurityCenterServer) GroupFindings(ctx context.Context, req *securitycenterpb.GroupFindingsRequest) (*securitycenterpb.GroupFindingsResponse, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.GroupFindingsResponse), nil
+}
+
+func (s *mockSecurityCenterServer) ListAssets(ctx context.Context, req *securitycenterpb.ListAssetsRequest) (*securitycenterpb.ListAssetsResponse, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.ListAssetsResponse), nil
+}
+
+func (s *mockSecurityCenterServer) ListFindings(ctx context.Context, req *securitycenterpb.ListFindingsRequest) (*securitycenterpb.ListFindingsResponse, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.ListFindingsResponse), nil
+}
+
+func (s *mockSecurityCenterServer) ListSources(ctx context.Context, req *securitycenterpb.ListSourcesRequest) (*securitycenterpb.ListSourcesResponse, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.ListSourcesResponse), nil
+}
+
+func (s *mockSecurityCenterServer) RunAssetDiscovery(ctx context.Context, req *securitycenterpb.RunAssetDiscoveryRequest) (*longrunningpb.Operation, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*longrunningpb.Operation), nil
+}
+
+func (s *mockSecurityCenterServer) SetFindingState(ctx context.Context, req *securitycenterpb.SetFindingStateRequest) (*securitycenterpb.Finding, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.Finding), nil
+}
+
+func (s *mockSecurityCenterServer) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest) (*iampb.Policy, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*iampb.Policy), nil
+}
+
+func (s *mockSecurityCenterServer) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest) (*iampb.TestIamPermissionsResponse, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*iampb.TestIamPermissionsResponse), nil
+}
+
+func (s *mockSecurityCenterServer) UpdateFinding(ctx context.Context, req *securitycenterpb.UpdateFindingRequest) (*securitycenterpb.Finding, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.Finding), nil
+}
+
+func (s *mockSecurityCenterServer) UpdateOrganizationSettings(ctx context.Context, req *securitycenterpb.UpdateOrganizationSettingsRequest) (*securitycenterpb.OrganizationSettings, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.OrganizationSettings), nil
+}
+
+func (s *mockSecurityCenterServer) UpdateSource(ctx context.Context, req *securitycenterpb.UpdateSourceRequest) (*securitycenterpb.Source, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.Source), nil
+}
+
+func (s *mockSecurityCenterServer) UpdateSecurityMarks(ctx context.Context, req *securitycenterpb.UpdateSecurityMarksRequest) (*securitycenterpb.SecurityMarks, error) {
+ md, _ := metadata.FromIncomingContext(ctx)
+ if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
+ return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
+ }
+ s.reqs = append(s.reqs, req)
+ if s.err != nil {
+ return nil, s.err
+ }
+ return s.resps[0].(*securitycenterpb.SecurityMarks), nil
+}
+
+// clientOpt is the option tests should use to connect to the test server.
+// It is initialized by TestMain.
+var clientOpt option.ClientOption
+
+var (
+ mockSecurityCenter mockSecurityCenterServer
+)
+
+func TestMain(m *testing.M) {
+ flag.Parse()
+
+ serv := grpc.NewServer()
+ securitycenterpb.RegisterSecurityCenterServer(serv, &mockSecurityCenter)
+
+ lis, err := net.Listen("tcp", "localhost:0")
+ if err != nil {
+ log.Fatal(err)
+ }
+ go serv.Serve(lis)
+
+ conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
+ if err != nil {
+ log.Fatal(err)
+ }
+ clientOpt = option.WithGRPCConn(conn)
+
+ os.Exit(m.Run())
+}
+
+func TestSecurityCenterCreateSource(t *testing.T) {
+ var name string = "name3373707"
+ var displayName string = "displayName1615086568"
+ var description string = "description-1724546052"
+ var expectedResponse = &securitycenterpb.Source{
+ Name: name,
+ DisplayName: displayName,
+ Description: description,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var source *securitycenterpb.Source = &securitycenterpb.Source{}
+ var request = &securitycenterpb.CreateSourceRequest{
+ Parent: formattedParent,
+ Source: source,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.CreateSource(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterCreateSourceError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var source *securitycenterpb.Source = &securitycenterpb.Source{}
+ var request = &securitycenterpb.CreateSourceRequest{
+ Parent: formattedParent,
+ Source: source,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.CreateSource(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterCreateFinding(t *testing.T) {
+ var name string = "name3373707"
+ var parent2 string = "parent21175163357"
+ var resourceName string = "resourceName979421212"
+ var category string = "category50511102"
+ var externalUri string = "externalUri-1385596168"
+ var expectedResponse = &securitycenterpb.Finding{
+ Name: name,
+ Parent: parent2,
+ ResourceName: resourceName,
+ Category: category,
+ ExternalUri: externalUri,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedParent string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var findingId string = "findingId728776081"
+ var finding *securitycenterpb.Finding = &securitycenterpb.Finding{}
+ var request = &securitycenterpb.CreateFindingRequest{
+ Parent: formattedParent,
+ FindingId: findingId,
+ Finding: finding,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.CreateFinding(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterCreateFindingError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedParent string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var findingId string = "findingId728776081"
+ var finding *securitycenterpb.Finding = &securitycenterpb.Finding{}
+ var request = &securitycenterpb.CreateFindingRequest{
+ Parent: formattedParent,
+ FindingId: findingId,
+ Finding: finding,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.CreateFinding(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterGetIamPolicy(t *testing.T) {
+ var version int32 = 351608024
+ var etag []byte = []byte("21")
+ var expectedResponse = &iampb.Policy{
+ Version: version,
+ Etag: etag,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedResource string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var request = &iampb.GetIamPolicyRequest{
+ Resource: formattedResource,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GetIamPolicy(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterGetIamPolicyError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedResource string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var request = &iampb.GetIamPolicyRequest{
+ Resource: formattedResource,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GetIamPolicy(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterGetOrganizationSettings(t *testing.T) {
+ var name2 string = "name2-1052831874"
+ var enableAssetDiscovery bool = false
+ var expectedResponse = &securitycenterpb.OrganizationSettings{
+ Name: name2,
+ EnableAssetDiscovery: enableAssetDiscovery,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedName string = fmt.Sprintf("organizations/%s/organizationSettings", "[ORGANIZATION]")
+ var request = &securitycenterpb.GetOrganizationSettingsRequest{
+ Name: formattedName,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GetOrganizationSettings(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterGetOrganizationSettingsError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedName string = fmt.Sprintf("organizations/%s/organizationSettings", "[ORGANIZATION]")
+ var request = &securitycenterpb.GetOrganizationSettingsRequest{
+ Name: formattedName,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GetOrganizationSettings(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterGetSource(t *testing.T) {
+ var name2 string = "name2-1052831874"
+ var displayName string = "displayName1615086568"
+ var description string = "description-1724546052"
+ var expectedResponse = &securitycenterpb.Source{
+ Name: name2,
+ DisplayName: displayName,
+ Description: description,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedName string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var request = &securitycenterpb.GetSourceRequest{
+ Name: formattedName,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GetSource(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterGetSourceError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedName string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var request = &securitycenterpb.GetSourceRequest{
+ Name: formattedName,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GetSource(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterGroupAssets(t *testing.T) {
+ var nextPageToken string = ""
+ var groupByResultsElement *securitycenterpb.GroupResult = &securitycenterpb.GroupResult{}
+ var groupByResults = []*securitycenterpb.GroupResult{groupByResultsElement}
+ var expectedResponse = &securitycenterpb.GroupAssetsResponse{
+ NextPageToken: nextPageToken,
+ GroupByResults: groupByResults,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var groupBy string = "groupBy506361367"
+ var request = &securitycenterpb.GroupAssetsRequest{
+ Parent: formattedParent,
+ GroupBy: groupBy,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GroupAssets(context.Background(), request).Next()
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ want := (interface{})(expectedResponse.GroupByResults[0])
+ got := (interface{})(resp)
+ var ok bool
+
+ switch want := (want).(type) {
+ case proto.Message:
+ ok = proto.Equal(want, got.(proto.Message))
+ default:
+ ok = want == got
+ }
+ if !ok {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterGroupAssetsError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var groupBy string = "groupBy506361367"
+ var request = &securitycenterpb.GroupAssetsRequest{
+ Parent: formattedParent,
+ GroupBy: groupBy,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GroupAssets(context.Background(), request).Next()
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterGroupFindings(t *testing.T) {
+ var nextPageToken string = ""
+ var groupByResultsElement *securitycenterpb.GroupResult = &securitycenterpb.GroupResult{}
+ var groupByResults = []*securitycenterpb.GroupResult{groupByResultsElement}
+ var expectedResponse = &securitycenterpb.GroupFindingsResponse{
+ NextPageToken: nextPageToken,
+ GroupByResults: groupByResults,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedParent string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var groupBy string = "groupBy506361367"
+ var request = &securitycenterpb.GroupFindingsRequest{
+ Parent: formattedParent,
+ GroupBy: groupBy,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GroupFindings(context.Background(), request).Next()
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ want := (interface{})(expectedResponse.GroupByResults[0])
+ got := (interface{})(resp)
+ var ok bool
+
+ switch want := (want).(type) {
+ case proto.Message:
+ ok = proto.Equal(want, got.(proto.Message))
+ default:
+ ok = want == got
+ }
+ if !ok {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterGroupFindingsError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedParent string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var groupBy string = "groupBy506361367"
+ var request = &securitycenterpb.GroupFindingsRequest{
+ Parent: formattedParent,
+ GroupBy: groupBy,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.GroupFindings(context.Background(), request).Next()
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterListAssets(t *testing.T) {
+ var nextPageToken string = ""
+ var totalSize int32 = 705419236
+ var listAssetsResultsElement *securitycenterpb.ListAssetsResponse_ListAssetsResult = &securitycenterpb.ListAssetsResponse_ListAssetsResult{}
+ var listAssetsResults = []*securitycenterpb.ListAssetsResponse_ListAssetsResult{listAssetsResultsElement}
+ var expectedResponse = &securitycenterpb.ListAssetsResponse{
+ NextPageToken: nextPageToken,
+ TotalSize: totalSize,
+ ListAssetsResults: listAssetsResults,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var request = &securitycenterpb.ListAssetsRequest{
+ Parent: formattedParent,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.ListAssets(context.Background(), request).Next()
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ want := (interface{})(expectedResponse.ListAssetsResults[0])
+ got := (interface{})(resp)
+ var ok bool
+
+ switch want := (want).(type) {
+ case proto.Message:
+ ok = proto.Equal(want, got.(proto.Message))
+ default:
+ ok = want == got
+ }
+ if !ok {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterListAssetsError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var request = &securitycenterpb.ListAssetsRequest{
+ Parent: formattedParent,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.ListAssets(context.Background(), request).Next()
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterListFindings(t *testing.T) {
+ var nextPageToken string = ""
+ var totalSize int32 = 705419236
+ var findingsElement *securitycenterpb.Finding = &securitycenterpb.Finding{}
+ var findings = []*securitycenterpb.Finding{findingsElement}
+ var expectedResponse = &securitycenterpb.ListFindingsResponse{
+ NextPageToken: nextPageToken,
+ TotalSize: totalSize,
+ Findings: findings,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedParent string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var request = &securitycenterpb.ListFindingsRequest{
+ Parent: formattedParent,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.ListFindings(context.Background(), request).Next()
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ want := (interface{})(expectedResponse.Findings[0])
+ got := (interface{})(resp)
+ var ok bool
+
+ switch want := (want).(type) {
+ case proto.Message:
+ ok = proto.Equal(want, got.(proto.Message))
+ default:
+ ok = want == got
+ }
+ if !ok {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterListFindingsError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedParent string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var request = &securitycenterpb.ListFindingsRequest{
+ Parent: formattedParent,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.ListFindings(context.Background(), request).Next()
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterListSources(t *testing.T) {
+ var nextPageToken string = ""
+ var sourcesElement *securitycenterpb.Source = &securitycenterpb.Source{}
+ var sources = []*securitycenterpb.Source{sourcesElement}
+ var expectedResponse = &securitycenterpb.ListSourcesResponse{
+ NextPageToken: nextPageToken,
+ Sources: sources,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var request = &securitycenterpb.ListSourcesRequest{
+ Parent: formattedParent,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.ListSources(context.Background(), request).Next()
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ want := (interface{})(expectedResponse.Sources[0])
+ got := (interface{})(resp)
+ var ok bool
+
+ switch want := (want).(type) {
+ case proto.Message:
+ ok = proto.Equal(want, got.(proto.Message))
+ default:
+ ok = want == got
+ }
+ if !ok {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterListSourcesError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var request = &securitycenterpb.ListSourcesRequest{
+ Parent: formattedParent,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.ListSources(context.Background(), request).Next()
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterRunAssetDiscovery(t *testing.T) {
+ var expectedResponse *emptypb.Empty = &emptypb.Empty{}
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ any, err := ptypes.MarshalAny(expectedResponse)
+ if err != nil {
+ t.Fatal(err)
+ }
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], &longrunningpb.Operation{
+ Name: "longrunning-test",
+ Done: true,
+ Result: &longrunningpb.Operation_Response{Response: any},
+ })
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var request = &securitycenterpb.RunAssetDiscoveryRequest{
+ Parent: formattedParent,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ respLRO, err := c.RunAssetDiscovery(context.Background(), request)
+ if err != nil {
+ t.Fatal(err)
+ }
+ err = respLRO.Wait(context.Background())
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+}
+
+func TestSecurityCenterRunAssetDiscoveryError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], &longrunningpb.Operation{
+ Name: "longrunning-test",
+ Done: true,
+ Result: &longrunningpb.Operation_Error{
+ Error: &status.Status{
+ Code: int32(errCode),
+ Message: "test error",
+ },
+ },
+ })
+
+ var formattedParent string = fmt.Sprintf("organizations/%s", "[ORGANIZATION]")
+ var request = &securitycenterpb.RunAssetDiscoveryRequest{
+ Parent: formattedParent,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ respLRO, err := c.RunAssetDiscovery(context.Background(), request)
+ if err != nil {
+ t.Fatal(err)
+ }
+ err = respLRO.Wait(context.Background())
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+}
+func TestSecurityCenterSetFindingState(t *testing.T) {
+ var name2 string = "name2-1052831874"
+ var parent string = "parent-995424086"
+ var resourceName string = "resourceName979421212"
+ var category string = "category50511102"
+ var externalUri string = "externalUri-1385596168"
+ var expectedResponse = &securitycenterpb.Finding{
+ Name: name2,
+ Parent: parent,
+ ResourceName: resourceName,
+ Category: category,
+ ExternalUri: externalUri,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedName string = fmt.Sprintf("organizations/%s/sources/%s/findings/%s", "[ORGANIZATION]", "[SOURCE]", "[FINDING]")
+ var state securitycenterpb.Finding_State = securitycenterpb.Finding_STATE_UNSPECIFIED
+ var startTime *timestamppb.Timestamp = ×tamppb.Timestamp{}
+ var request = &securitycenterpb.SetFindingStateRequest{
+ Name: formattedName,
+ State: state,
+ StartTime: startTime,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.SetFindingState(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterSetFindingStateError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedName string = fmt.Sprintf("organizations/%s/sources/%s/findings/%s", "[ORGANIZATION]", "[SOURCE]", "[FINDING]")
+ var state securitycenterpb.Finding_State = securitycenterpb.Finding_STATE_UNSPECIFIED
+ var startTime *timestamppb.Timestamp = ×tamppb.Timestamp{}
+ var request = &securitycenterpb.SetFindingStateRequest{
+ Name: formattedName,
+ State: state,
+ StartTime: startTime,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.SetFindingState(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterSetIamPolicy(t *testing.T) {
+ var version int32 = 351608024
+ var etag []byte = []byte("21")
+ var expectedResponse = &iampb.Policy{
+ Version: version,
+ Etag: etag,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedResource string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var policy *iampb.Policy = &iampb.Policy{}
+ var request = &iampb.SetIamPolicyRequest{
+ Resource: formattedResource,
+ Policy: policy,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.SetIamPolicy(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterSetIamPolicyError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedResource string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var policy *iampb.Policy = &iampb.Policy{}
+ var request = &iampb.SetIamPolicyRequest{
+ Resource: formattedResource,
+ Policy: policy,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.SetIamPolicy(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterTestIamPermissions(t *testing.T) {
+ var expectedResponse *iampb.TestIamPermissionsResponse = &iampb.TestIamPermissionsResponse{}
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var formattedResource string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var permissions []string = nil
+ var request = &iampb.TestIamPermissionsRequest{
+ Resource: formattedResource,
+ Permissions: permissions,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.TestIamPermissions(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterTestIamPermissionsError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var formattedResource string = fmt.Sprintf("organizations/%s/sources/%s", "[ORGANIZATION]", "[SOURCE]")
+ var permissions []string = nil
+ var request = &iampb.TestIamPermissionsRequest{
+ Resource: formattedResource,
+ Permissions: permissions,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.TestIamPermissions(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterUpdateFinding(t *testing.T) {
+ var name string = "name3373707"
+ var parent string = "parent-995424086"
+ var resourceName string = "resourceName979421212"
+ var category string = "category50511102"
+ var externalUri string = "externalUri-1385596168"
+ var expectedResponse = &securitycenterpb.Finding{
+ Name: name,
+ Parent: parent,
+ ResourceName: resourceName,
+ Category: category,
+ ExternalUri: externalUri,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var finding *securitycenterpb.Finding = &securitycenterpb.Finding{}
+ var request = &securitycenterpb.UpdateFindingRequest{
+ Finding: finding,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.UpdateFinding(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterUpdateFindingError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var finding *securitycenterpb.Finding = &securitycenterpb.Finding{}
+ var request = &securitycenterpb.UpdateFindingRequest{
+ Finding: finding,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.UpdateFinding(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterUpdateOrganizationSettings(t *testing.T) {
+ var name string = "name3373707"
+ var enableAssetDiscovery bool = false
+ var expectedResponse = &securitycenterpb.OrganizationSettings{
+ Name: name,
+ EnableAssetDiscovery: enableAssetDiscovery,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var organizationSettings *securitycenterpb.OrganizationSettings = &securitycenterpb.OrganizationSettings{}
+ var request = &securitycenterpb.UpdateOrganizationSettingsRequest{
+ OrganizationSettings: organizationSettings,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.UpdateOrganizationSettings(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterUpdateOrganizationSettingsError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var organizationSettings *securitycenterpb.OrganizationSettings = &securitycenterpb.OrganizationSettings{}
+ var request = &securitycenterpb.UpdateOrganizationSettingsRequest{
+ OrganizationSettings: organizationSettings,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.UpdateOrganizationSettings(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterUpdateSource(t *testing.T) {
+ var name string = "name3373707"
+ var displayName string = "displayName1615086568"
+ var description string = "description-1724546052"
+ var expectedResponse = &securitycenterpb.Source{
+ Name: name,
+ DisplayName: displayName,
+ Description: description,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var source *securitycenterpb.Source = &securitycenterpb.Source{}
+ var request = &securitycenterpb.UpdateSourceRequest{
+ Source: source,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.UpdateSource(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterUpdateSourceError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var source *securitycenterpb.Source = &securitycenterpb.Source{}
+ var request = &securitycenterpb.UpdateSourceRequest{
+ Source: source,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.UpdateSource(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
+func TestSecurityCenterUpdateSecurityMarks(t *testing.T) {
+ var name string = "name3373707"
+ var expectedResponse = &securitycenterpb.SecurityMarks{
+ Name: name,
+ }
+
+ mockSecurityCenter.err = nil
+ mockSecurityCenter.reqs = nil
+
+ mockSecurityCenter.resps = append(mockSecurityCenter.resps[:0], expectedResponse)
+
+ var securityMarks *securitycenterpb.SecurityMarks = &securitycenterpb.SecurityMarks{}
+ var request = &securitycenterpb.UpdateSecurityMarksRequest{
+ SecurityMarks: securityMarks,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.UpdateSecurityMarks(context.Background(), request)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if want, got := request, mockSecurityCenter.reqs[0]; !proto.Equal(want, got) {
+ t.Errorf("wrong request %q, want %q", got, want)
+ }
+
+ if want, got := expectedResponse, resp; !proto.Equal(want, got) {
+ t.Errorf("wrong response %q, want %q)", got, want)
+ }
+}
+
+func TestSecurityCenterUpdateSecurityMarksError(t *testing.T) {
+ errCode := codes.PermissionDenied
+ mockSecurityCenter.err = gstatus.Error(errCode, "test error")
+
+ var securityMarks *securitycenterpb.SecurityMarks = &securitycenterpb.SecurityMarks{}
+ var request = &securitycenterpb.UpdateSecurityMarksRequest{
+ SecurityMarks: securityMarks,
+ }
+
+ c, err := NewClient(context.Background(), clientOpt)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ resp, err := c.UpdateSecurityMarks(context.Background(), request)
+
+ if st, ok := gstatus.FromError(err); !ok {
+ t.Errorf("got error %v, expected grpc error", err)
+ } else if c := st.Code(); c != errCode {
+ t.Errorf("got error code %q, want %q", c, errCode)
+ }
+ _ = resp
+}
diff --git a/securitycenter/apiv1beta1/security_center_client.go b/securitycenter/apiv1beta1/security_center_client.go
new file mode 100644
index 0000000..9117fe0
--- /dev/null
+++ b/securitycenter/apiv1beta1/security_center_client.go
@@ -0,0 +1,793 @@
+// Copyright 2018 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
+//
+// https://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.
+
+// AUTO-GENERATED CODE. DO NOT EDIT.
+
+package securitycenter
+
+import (
+ "math"
+ "time"
+
+ "cloud.google.com/go/internal/version"
+ "cloud.google.com/go/longrunning"
+ lroauto "cloud.google.com/go/longrunning/autogen"
+ "github.com/golang/protobuf/proto"
+ gax "github.com/googleapis/gax-go"
+ "golang.org/x/net/context"
+ "google.golang.org/api/iterator"
+ "google.golang.org/api/option"
+ "google.golang.org/api/transport"
+ securitycenterpb "google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1"
+ iampb "google.golang.org/genproto/googleapis/iam/v1"
+ longrunningpb "google.golang.org/genproto/googleapis/longrunning"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/metadata"
+)
+
+// CallOptions contains the retry settings for each method of Client.
+type CallOptions struct {
+ CreateSource []gax.CallOption
+ CreateFinding []gax.CallOption
+ GetIamPolicy []gax.CallOption
+ GetOrganizationSettings []gax.CallOption
+ GetSource []gax.CallOption
+ GroupAssets []gax.CallOption
+ GroupFindings []gax.CallOption
+ ListAssets []gax.CallOption
+ ListFindings []gax.CallOption
+ ListSources []gax.CallOption
+ RunAssetDiscovery []gax.CallOption
+ SetFindingState []gax.CallOption
+ SetIamPolicy []gax.CallOption
+ TestIamPermissions []gax.CallOption
+ UpdateFinding []gax.CallOption
+ UpdateOrganizationSettings []gax.CallOption
+ UpdateSource []gax.CallOption
+ UpdateSecurityMarks []gax.CallOption
+}
+
+func defaultClientOptions() []option.ClientOption {
+ return []option.ClientOption{
+ option.WithEndpoint("securitycenter.googleapis.com:443"),
+ option.WithScopes(DefaultAuthScopes()...),
+ }
+}
+
+func defaultCallOptions() *CallOptions {
+ retry := map[[2]string][]gax.CallOption{
+ {"default", "idempotent"}: {
+ gax.WithRetry(func() gax.Retryer {
+ return gax.OnCodes([]codes.Code{
+ codes.DeadlineExceeded,
+ codes.Unavailable,
+ }, gax.Backoff{
+ Initial: 100 * time.Millisecond,
+ Max: 60000 * time.Millisecond,
+ Multiplier: 1.3,
+ })
+ }),
+ },
+ }
+ return &CallOptions{
+ CreateSource: retry[[2]string{"default", "non_idempotent"}],
+ CreateFinding: retry[[2]string{"default", "non_idempotent"}],
+ GetIamPolicy: retry[[2]string{"default", "idempotent"}],
+ GetOrganizationSettings: retry[[2]string{"default", "idempotent"}],
+ GetSource: retry[[2]string{"default", "idempotent"}],
+ GroupAssets: retry[[2]string{"default", "idempotent"}],
+ GroupFindings: retry[[2]string{"default", "idempotent"}],
+ ListAssets: retry[[2]string{"default", "idempotent"}],
+ ListFindings: retry[[2]string{"default", "idempotent"}],
+ ListSources: retry[[2]string{"default", "idempotent"}],
+ RunAssetDiscovery: retry[[2]string{"default", "non_idempotent"}],
+ SetFindingState: retry[[2]string{"default", "non_idempotent"}],
+ SetIamPolicy: retry[[2]string{"default", "non_idempotent"}],
+ TestIamPermissions: retry[[2]string{"default", "idempotent"}],
+ UpdateFinding: retry[[2]string{"default", "non_idempotent"}],
+ UpdateOrganizationSettings: retry[[2]string{"default", "non_idempotent"}],
+ UpdateSource: retry[[2]string{"default", "non_idempotent"}],
+ UpdateSecurityMarks: retry[[2]string{"default", "non_idempotent"}],
+ }
+}
+
+// Client is a client for interacting with Cloud Security Command Center API.
+//
+// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls.
+type Client struct {
+ // The connection to the service.
+ conn *grpc.ClientConn
+
+ // The gRPC API client.
+ client securitycenterpb.SecurityCenterClient
+
+ // LROClient is used internally to handle longrunning operations.
+ // It is exposed so that its CallOptions can be modified if required.
+ // Users should not Close this client.
+ LROClient *lroauto.OperationsClient
+
+ // The call options for this service.
+ CallOptions *CallOptions
+
+ // The x-goog-* metadata to be sent with each request.
+ xGoogMetadata metadata.MD
+}
+
+// NewClient creates a new security center client.
+//
+// V1 Beta APIs for Security Center service.
+func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
+ conn, err := transport.DialGRPC(ctx, append(defaultClientOptions(), opts...)...)
+ if err != nil {
+ return nil, err
+ }
+ c := &Client{
+ conn: conn,
+ CallOptions: defaultCallOptions(),
+
+ client: securitycenterpb.NewSecurityCenterClient(conn),
+ }
+ c.setGoogleClientInfo()
+
+ c.LROClient, err = lroauto.NewOperationsClient(ctx, option.WithGRPCConn(conn))
+ if err != nil {
+ // This error "should not happen", since we are just reusing old connection
+ // and never actually need to dial.
+ // If this does happen, we could leak conn. However, we cannot close conn:
+ // If the user invoked the function with option.WithGRPCConn,
+ // we would close a connection that's still in use.
+ // TODO(pongad): investigate error conditions.
+ return nil, err
+ }
+ return c, nil
+}
+
+// Connection returns the client's connection to the API service.
+func (c *Client) Connection() *grpc.ClientConn {
+ return c.conn
+}
+
+// Close closes the connection to the API service. The user should invoke this when
+// the client is no longer required.
+func (c *Client) Close() error {
+ return c.conn.Close()
+}
+
+// setGoogleClientInfo sets the name and version of the application in
+// the `x-goog-api-client` header passed on each request. Intended for
+// use by Google-written clients.
+func (c *Client) setGoogleClientInfo(keyval ...string) {
+ kv := append([]string{"gl-go", version.Go()}, keyval...)
+ kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+ c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
+}
+
+// CreateSource creates a source.
+func (c *Client) CreateSource(ctx context.Context, req *securitycenterpb.CreateSourceRequest, opts ...gax.CallOption) (*securitycenterpb.Source, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.CreateSource[0:len(c.CallOptions.CreateSource):len(c.CallOptions.CreateSource)], opts...)
+ var resp *securitycenterpb.Source
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.CreateSource(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// CreateFinding creates a finding. The corresponding source must exist for finding creation
+// to succeed.
+func (c *Client) CreateFinding(ctx context.Context, req *securitycenterpb.CreateFindingRequest, opts ...gax.CallOption) (*securitycenterpb.Finding, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.CreateFinding[0:len(c.CallOptions.CreateFinding):len(c.CallOptions.CreateFinding)], opts...)
+ var resp *securitycenterpb.Finding
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.CreateFinding(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// GetIamPolicy gets the access control policy on the specified Source.
+func (c *Client) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.GetIamPolicy[0:len(c.CallOptions.GetIamPolicy):len(c.CallOptions.GetIamPolicy)], opts...)
+ var resp *iampb.Policy
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.GetIamPolicy(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// GetOrganizationSettings gets the settings for an organization.
+func (c *Client) GetOrganizationSettings(ctx context.Context, req *securitycenterpb.GetOrganizationSettingsRequest, opts ...gax.CallOption) (*securitycenterpb.OrganizationSettings, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.GetOrganizationSettings[0:len(c.CallOptions.GetOrganizationSettings):len(c.CallOptions.GetOrganizationSettings)], opts...)
+ var resp *securitycenterpb.OrganizationSettings
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.GetOrganizationSettings(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// GetSource gets a source.
+func (c *Client) GetSource(ctx context.Context, req *securitycenterpb.GetSourceRequest, opts ...gax.CallOption) (*securitycenterpb.Source, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.GetSource[0:len(c.CallOptions.GetSource):len(c.CallOptions.GetSource)], opts...)
+ var resp *securitycenterpb.Source
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.GetSource(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// GroupAssets filters an organization's assets and groups them by their specified
+// properties.
+func (c *Client) GroupAssets(ctx context.Context, req *securitycenterpb.GroupAssetsRequest, opts ...gax.CallOption) *GroupResultIterator {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.GroupAssets[0:len(c.CallOptions.GroupAssets):len(c.CallOptions.GroupAssets)], opts...)
+ it := &GroupResultIterator{}
+ req = proto.Clone(req).(*securitycenterpb.GroupAssetsRequest)
+ it.InternalFetch = func(pageSize int, pageToken string) ([]*securitycenterpb.GroupResult, string, error) {
+ var resp *securitycenterpb.GroupAssetsResponse
+ req.PageToken = pageToken
+ if pageSize > math.MaxInt32 {
+ req.PageSize = math.MaxInt32
+ } else {
+ req.PageSize = int32(pageSize)
+ }
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.GroupAssets(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, "", err
+ }
+ return resp.GroupByResults, resp.NextPageToken, nil
+ }
+ fetch := func(pageSize int, pageToken string) (string, error) {
+ items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
+ if err != nil {
+ return "", err
+ }
+ it.items = append(it.items, items...)
+ return nextPageToken, nil
+ }
+ it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
+ it.pageInfo.MaxSize = int(req.PageSize)
+ return it
+}
+
+// GroupFindings filters an organization or source's findings and groups them by their
+// specified properties.
+//
+// To group across all sources provide a - as the source id.
+// Example: /v1beta1/organizations/123/sources/-/findings
+func (c *Client) GroupFindings(ctx context.Context, req *securitycenterpb.GroupFindingsRequest, opts ...gax.CallOption) *GroupResultIterator {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.GroupFindings[0:len(c.CallOptions.GroupFindings):len(c.CallOptions.GroupFindings)], opts...)
+ it := &GroupResultIterator{}
+ req = proto.Clone(req).(*securitycenterpb.GroupFindingsRequest)
+ it.InternalFetch = func(pageSize int, pageToken string) ([]*securitycenterpb.GroupResult, string, error) {
+ var resp *securitycenterpb.GroupFindingsResponse
+ req.PageToken = pageToken
+ if pageSize > math.MaxInt32 {
+ req.PageSize = math.MaxInt32
+ } else {
+ req.PageSize = int32(pageSize)
+ }
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.GroupFindings(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, "", err
+ }
+ return resp.GroupByResults, resp.NextPageToken, nil
+ }
+ fetch := func(pageSize int, pageToken string) (string, error) {
+ items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
+ if err != nil {
+ return "", err
+ }
+ it.items = append(it.items, items...)
+ return nextPageToken, nil
+ }
+ it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
+ it.pageInfo.MaxSize = int(req.PageSize)
+ return it
+}
+
+// ListAssets lists an organization's assets.
+func (c *Client) ListAssets(ctx context.Context, req *securitycenterpb.ListAssetsRequest, opts ...gax.CallOption) *ListAssetsResponse_ListAssetsResultIterator {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.ListAssets[0:len(c.CallOptions.ListAssets):len(c.CallOptions.ListAssets)], opts...)
+ it := &ListAssetsResponse_ListAssetsResultIterator{}
+ req = proto.Clone(req).(*securitycenterpb.ListAssetsRequest)
+ it.InternalFetch = func(pageSize int, pageToken string) ([]*securitycenterpb.ListAssetsResponse_ListAssetsResult, string, error) {
+ var resp *securitycenterpb.ListAssetsResponse
+ req.PageToken = pageToken
+ if pageSize > math.MaxInt32 {
+ req.PageSize = math.MaxInt32
+ } else {
+ req.PageSize = int32(pageSize)
+ }
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.ListAssets(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, "", err
+ }
+ return resp.ListAssetsResults, resp.NextPageToken, nil
+ }
+ fetch := func(pageSize int, pageToken string) (string, error) {
+ items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
+ if err != nil {
+ return "", err
+ }
+ it.items = append(it.items, items...)
+ return nextPageToken, nil
+ }
+ it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
+ it.pageInfo.MaxSize = int(req.PageSize)
+ return it
+}
+
+// ListFindings lists an organization or source's assets.
+//
+// To list across all sources provide a - as the source id.
+// Example: /v1beta1/organizations/123/sources/-/findings
+func (c *Client) ListFindings(ctx context.Context, req *securitycenterpb.ListFindingsRequest, opts ...gax.CallOption) *FindingIterator {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.ListFindings[0:len(c.CallOptions.ListFindings):len(c.CallOptions.ListFindings)], opts...)
+ it := &FindingIterator{}
+ req = proto.Clone(req).(*securitycenterpb.ListFindingsRequest)
+ it.InternalFetch = func(pageSize int, pageToken string) ([]*securitycenterpb.Finding, string, error) {
+ var resp *securitycenterpb.ListFindingsResponse
+ req.PageToken = pageToken
+ if pageSize > math.MaxInt32 {
+ req.PageSize = math.MaxInt32
+ } else {
+ req.PageSize = int32(pageSize)
+ }
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.ListFindings(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, "", err
+ }
+ return resp.Findings, resp.NextPageToken, nil
+ }
+ fetch := func(pageSize int, pageToken string) (string, error) {
+ items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
+ if err != nil {
+ return "", err
+ }
+ it.items = append(it.items, items...)
+ return nextPageToken, nil
+ }
+ it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
+ it.pageInfo.MaxSize = int(req.PageSize)
+ return it
+}
+
+// ListSources lists all sources belonging to an organization.
+func (c *Client) ListSources(ctx context.Context, req *securitycenterpb.ListSourcesRequest, opts ...gax.CallOption) *SourceIterator {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.ListSources[0:len(c.CallOptions.ListSources):len(c.CallOptions.ListSources)], opts...)
+ it := &SourceIterator{}
+ req = proto.Clone(req).(*securitycenterpb.ListSourcesRequest)
+ it.InternalFetch = func(pageSize int, pageToken string) ([]*securitycenterpb.Source, string, error) {
+ var resp *securitycenterpb.ListSourcesResponse
+ req.PageToken = pageToken
+ if pageSize > math.MaxInt32 {
+ req.PageSize = math.MaxInt32
+ } else {
+ req.PageSize = int32(pageSize)
+ }
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.ListSources(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, "", err
+ }
+ return resp.Sources, resp.NextPageToken, nil
+ }
+ fetch := func(pageSize int, pageToken string) (string, error) {
+ items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
+ if err != nil {
+ return "", err
+ }
+ it.items = append(it.items, items...)
+ return nextPageToken, nil
+ }
+ it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
+ it.pageInfo.MaxSize = int(req.PageSize)
+ return it
+}
+
+// RunAssetDiscovery runs asset discovery. The discovery is tracked with a long-running
+// operation.
+//
+// This API can only be called with limited frequency for an organization. If
+// it is called too frequently the caller will receive a TOO_MANY_REQUESTS
+// error.
+func (c *Client) RunAssetDiscovery(ctx context.Context, req *securitycenterpb.RunAssetDiscoveryRequest, opts ...gax.CallOption) (*RunAssetDiscoveryOperation, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.RunAssetDiscovery[0:len(c.CallOptions.RunAssetDiscovery):len(c.CallOptions.RunAssetDiscovery)], opts...)
+ var resp *longrunningpb.Operation
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.RunAssetDiscovery(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return &RunAssetDiscoveryOperation{
+ lro: longrunning.InternalNewOperation(c.LROClient, resp),
+ }, nil
+}
+
+// SetFindingState updates the state of a finding.
+func (c *Client) SetFindingState(ctx context.Context, req *securitycenterpb.SetFindingStateRequest, opts ...gax.CallOption) (*securitycenterpb.Finding, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.SetFindingState[0:len(c.CallOptions.SetFindingState):len(c.CallOptions.SetFindingState)], opts...)
+ var resp *securitycenterpb.Finding
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.SetFindingState(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// SetIamPolicy sets the access control policy on the specified Source.
+func (c *Client) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.SetIamPolicy[0:len(c.CallOptions.SetIamPolicy):len(c.CallOptions.SetIamPolicy)], opts...)
+ var resp *iampb.Policy
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.SetIamPolicy(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// TestIamPermissions returns the permissions that a caller has on the specified source.
+func (c *Client) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.TestIamPermissions[0:len(c.CallOptions.TestIamPermissions):len(c.CallOptions.TestIamPermissions)], opts...)
+ var resp *iampb.TestIamPermissionsResponse
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.TestIamPermissions(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// UpdateFinding creates or updates a finding. The corresponding source must exist for a
+// finding creation to succeed.
+func (c *Client) UpdateFinding(ctx context.Context, req *securitycenterpb.UpdateFindingRequest, opts ...gax.CallOption) (*securitycenterpb.Finding, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.UpdateFinding[0:len(c.CallOptions.UpdateFinding):len(c.CallOptions.UpdateFinding)], opts...)
+ var resp *securitycenterpb.Finding
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.UpdateFinding(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// UpdateOrganizationSettings updates an organization's settings.
+func (c *Client) UpdateOrganizationSettings(ctx context.Context, req *securitycenterpb.UpdateOrganizationSettingsRequest, opts ...gax.CallOption) (*securitycenterpb.OrganizationSettings, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.UpdateOrganizationSettings[0:len(c.CallOptions.UpdateOrganizationSettings):len(c.CallOptions.UpdateOrganizationSettings)], opts...)
+ var resp *securitycenterpb.OrganizationSettings
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.UpdateOrganizationSettings(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// UpdateSource updates a source.
+func (c *Client) UpdateSource(ctx context.Context, req *securitycenterpb.UpdateSourceRequest, opts ...gax.CallOption) (*securitycenterpb.Source, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.UpdateSource[0:len(c.CallOptions.UpdateSource):len(c.CallOptions.UpdateSource)], opts...)
+ var resp *securitycenterpb.Source
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.UpdateSource(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// UpdateSecurityMarks updates security marks.
+func (c *Client) UpdateSecurityMarks(ctx context.Context, req *securitycenterpb.UpdateSecurityMarksRequest, opts ...gax.CallOption) (*securitycenterpb.SecurityMarks, error) {
+ ctx = insertMetadata(ctx, c.xGoogMetadata)
+ opts = append(c.CallOptions.UpdateSecurityMarks[0:len(c.CallOptions.UpdateSecurityMarks):len(c.CallOptions.UpdateSecurityMarks)], opts...)
+ var resp *securitycenterpb.SecurityMarks
+ err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
+ var err error
+ resp, err = c.client.UpdateSecurityMarks(ctx, req, settings.GRPC...)
+ return err
+ }, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+// FindingIterator manages a stream of *securitycenterpb.Finding.
+type FindingIterator struct {
+ items []*securitycenterpb.Finding
+ pageInfo *iterator.PageInfo
+ nextFunc func() error
+
+ // InternalFetch is for use by the Google Cloud Libraries only.
+ // It is not part of the stable interface of this package.
+ //
+ // InternalFetch returns results from a single call to the underlying RPC.
+ // The number of results is no greater than pageSize.
+ // If there are no more results, nextPageToken is empty and err is nil.
+ InternalFetch func(pageSize int, pageToken string) (results []*securitycenterpb.Finding, nextPageToken string, err error)
+}
+
+// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
+func (it *FindingIterator) PageInfo() *iterator.PageInfo {
+ return it.pageInfo
+}
+
+// Next returns the next result. Its second return value is iterator.Done if there are no more
+// results. Once Next returns Done, all subsequent calls will return Done.
+func (it *FindingIterator) Next() (*securitycenterpb.Finding, error) {
+ var item *securitycenterpb.Finding
+ if err := it.nextFunc(); err != nil {
+ return item, err
+ }
+ item = it.items[0]
+ it.items = it.items[1:]
+ return item, nil
+}
+
+func (it *FindingIterator) bufLen() int {
+ return len(it.items)
+}
+
+func (it *FindingIterator) takeBuf() interface{} {
+ b := it.items
+ it.items = nil
+ return b
+}
+
+// GroupResultIterator manages a stream of *securitycenterpb.GroupResult.
+type GroupResultIterator struct {
+ items []*securitycenterpb.GroupResult
+ pageInfo *iterator.PageInfo
+ nextFunc func() error
+
+ // InternalFetch is for use by the Google Cloud Libraries only.
+ // It is not part of the stable interface of this package.
+ //
+ // InternalFetch returns results from a single call to the underlying RPC.
+ // The number of results is no greater than pageSize.
+ // If there are no more results, nextPageToken is empty and err is nil.
+ InternalFetch func(pageSize int, pageToken string) (results []*securitycenterpb.GroupResult, nextPageToken string, err error)
+}
+
+// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
+func (it *GroupResultIterator) PageInfo() *iterator.PageInfo {
+ return it.pageInfo
+}
+
+// Next returns the next result. Its second return value is iterator.Done if there are no more
+// results. Once Next returns Done, all subsequent calls will return Done.
+func (it *GroupResultIterator) Next() (*securitycenterpb.GroupResult, error) {
+ var item *securitycenterpb.GroupResult
+ if err := it.nextFunc(); err != nil {
+ return item, err
+ }
+ item = it.items[0]
+ it.items = it.items[1:]
+ return item, nil
+}
+
+func (it *GroupResultIterator) bufLen() int {
+ return len(it.items)
+}
+
+func (it *GroupResultIterator) takeBuf() interface{} {
+ b := it.items
+ it.items = nil
+ return b
+}
+
+// ListAssetsResponse_ListAssetsResultIterator manages a stream of *securitycenterpb.ListAssetsResponse_ListAssetsResult.
+type ListAssetsResponse_ListAssetsResultIterator struct {
+ items []*securitycenterpb.ListAssetsResponse_ListAssetsResult
+ pageInfo *iterator.PageInfo
+ nextFunc func() error
+
+ // InternalFetch is for use by the Google Cloud Libraries only.
+ // It is not part of the stable interface of this package.
+ //
+ // InternalFetch returns results from a single call to the underlying RPC.
+ // The number of results is no greater than pageSize.
+ // If there are no more results, nextPageToken is empty and err is nil.
+ InternalFetch func(pageSize int, pageToken string) (results []*securitycenterpb.ListAssetsResponse_ListAssetsResult, nextPageToken string, err error)
+}
+
+// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
+func (it *ListAssetsResponse_ListAssetsResultIterator) PageInfo() *iterator.PageInfo {
+ return it.pageInfo
+}
+
+// Next returns the next result. Its second return value is iterator.Done if there are no more
+// results. Once Next returns Done, all subsequent calls will return Done.
+func (it *ListAssetsResponse_ListAssetsResultIterator) Next() (*securitycenterpb.ListAssetsResponse_ListAssetsResult, error) {
+ var item *securitycenterpb.ListAssetsResponse_ListAssetsResult
+ if err := it.nextFunc(); err != nil {
+ return item, err
+ }
+ item = it.items[0]
+ it.items = it.items[1:]
+ return item, nil
+}
+
+func (it *ListAssetsResponse_ListAssetsResultIterator) bufLen() int {
+ return len(it.items)
+}
+
+func (it *ListAssetsResponse_ListAssetsResultIterator) takeBuf() interface{} {
+ b := it.items
+ it.items = nil
+ return b
+}
+
+// SourceIterator manages a stream of *securitycenterpb.Source.
+type SourceIterator struct {
+ items []*securitycenterpb.Source
+ pageInfo *iterator.PageInfo
+ nextFunc func() error
+
+ // InternalFetch is for use by the Google Cloud Libraries only.
+ // It is not part of the stable interface of this package.
+ //
+ // InternalFetch returns results from a single call to the underlying RPC.
+ // The number of results is no greater than pageSize.
+ // If there are no more results, nextPageToken is empty and err is nil.
+ InternalFetch func(pageSize int, pageToken string) (results []*securitycenterpb.Source, nextPageToken string, err error)
+}
+
+// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
+func (it *SourceIterator) PageInfo() *iterator.PageInfo {
+ return it.pageInfo
+}
+
+// Next returns the next result. Its second return value is iterator.Done if there are no more
+// results. Once Next returns Done, all subsequent calls will return Done.
+func (it *SourceIterator) Next() (*securitycenterpb.Source, error) {
+ var item *securitycenterpb.Source
+ if err := it.nextFunc(); err != nil {
+ return item, err
+ }
+ item = it.items[0]
+ it.items = it.items[1:]
+ return item, nil
+}
+
+func (it *SourceIterator) bufLen() int {
+ return len(it.items)
+}
+
+func (it *SourceIterator) takeBuf() interface{} {
+ b := it.items
+ it.items = nil
+ return b
+}
+
+// RunAssetDiscoveryOperation manages a long-running operation from RunAssetDiscovery.
+type RunAssetDiscoveryOperation struct {
+ lro *longrunning.Operation
+}
+
+// RunAssetDiscoveryOperation returns a new RunAssetDiscoveryOperation from a given name.
+// The name must be that of a previously created RunAssetDiscoveryOperation, possibly from a different process.
+func (c *Client) RunAssetDiscoveryOperation(name string) *RunAssetDiscoveryOperation {
+ return &RunAssetDiscoveryOperation{
+ lro: longrunning.InternalNewOperation(c.LROClient, &longrunningpb.Operation{Name: name}),
+ }
+}
+
+// Wait blocks until the long-running operation is completed, returning any error encountered.
+//
+// See documentation of Poll for error-handling information.
+func (op *RunAssetDiscoveryOperation) Wait(ctx context.Context, opts ...gax.CallOption) error {
+ return op.lro.WaitWithInterval(ctx, nil, 5000*time.Millisecond, opts...)
+}
+
+// Poll fetches the latest state of the long-running operation.
+//
+// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and
+// the operation has completed with failure, the error is returned and op.Done will return true.
+// If Poll succeeds and the operation has completed successfully, op.Done will return true.
+func (op *RunAssetDiscoveryOperation) Poll(ctx context.Context, opts ...gax.CallOption) error {
+ return op.lro.Poll(ctx, nil, opts...)
+}
+
+// Done reports whether the long-running operation has completed.
+func (op *RunAssetDiscoveryOperation) Done() bool {
+ return op.lro.Done()
+}
+
+// Name returns the name of the long-running operation.
+// The name is assigned by the server and is unique within the service from which the operation is created.
+func (op *RunAssetDiscoveryOperation) Name() string {
+ return op.lro.Name()
+}
diff --git a/securitycenter/apiv1beta1/security_center_client_example_test.go b/securitycenter/apiv1beta1/security_center_client_example_test.go
new file mode 100644
index 0000000..9fe941e
--- /dev/null
+++ b/securitycenter/apiv1beta1/security_center_client_example_test.go
@@ -0,0 +1,390 @@
+// Copyright 2018 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
+//
+// https://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.
+
+// AUTO-GENERATED CODE. DO NOT EDIT.
+
+package securitycenter_test
+
+import (
+ "cloud.google.com/go/securitycenter/apiv1beta1"
+ "golang.org/x/net/context"
+ "google.golang.org/api/iterator"
+ securitycenterpb "google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1"
+ iampb "google.golang.org/genproto/googleapis/iam/v1"
+)
+
+func ExampleNewClient() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use client.
+ _ = c
+}
+
+func ExampleClient_CreateSource() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.CreateSourceRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.CreateSource(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_CreateFinding() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.CreateFindingRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.CreateFinding(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_GetIamPolicy() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &iampb.GetIamPolicyRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.GetIamPolicy(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_GetOrganizationSettings() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.GetOrganizationSettingsRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.GetOrganizationSettings(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_GetSource() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.GetSourceRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.GetSource(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_GroupAssets() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.GroupAssetsRequest{
+ // TODO: Fill request struct fields.
+ }
+ it := c.GroupAssets(ctx, req)
+ for {
+ resp, err := it.Next()
+ if err == iterator.Done {
+ break
+ }
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+ }
+}
+
+func ExampleClient_GroupFindings() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.GroupFindingsRequest{
+ // TODO: Fill request struct fields.
+ }
+ it := c.GroupFindings(ctx, req)
+ for {
+ resp, err := it.Next()
+ if err == iterator.Done {
+ break
+ }
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+ }
+}
+
+func ExampleClient_ListAssets() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.ListAssetsRequest{
+ // TODO: Fill request struct fields.
+ }
+ it := c.ListAssets(ctx, req)
+ for {
+ resp, err := it.Next()
+ if err == iterator.Done {
+ break
+ }
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+ }
+}
+
+func ExampleClient_ListFindings() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.ListFindingsRequest{
+ // TODO: Fill request struct fields.
+ }
+ it := c.ListFindings(ctx, req)
+ for {
+ resp, err := it.Next()
+ if err == iterator.Done {
+ break
+ }
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+ }
+}
+
+func ExampleClient_ListSources() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.ListSourcesRequest{
+ // TODO: Fill request struct fields.
+ }
+ it := c.ListSources(ctx, req)
+ for {
+ resp, err := it.Next()
+ if err == iterator.Done {
+ break
+ }
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+ }
+}
+
+func ExampleClient_RunAssetDiscovery() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.RunAssetDiscoveryRequest{
+ // TODO: Fill request struct fields.
+ }
+ op, err := c.RunAssetDiscovery(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ err = op.Wait(ctx)
+ // TODO: Handle error.
+}
+
+func ExampleClient_SetFindingState() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.SetFindingStateRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.SetFindingState(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_SetIamPolicy() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &iampb.SetIamPolicyRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.SetIamPolicy(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_TestIamPermissions() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &iampb.TestIamPermissionsRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.TestIamPermissions(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_UpdateFinding() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.UpdateFindingRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.UpdateFinding(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_UpdateOrganizationSettings() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.UpdateOrganizationSettingsRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.UpdateOrganizationSettings(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_UpdateSource() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.UpdateSourceRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.UpdateSource(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}
+
+func ExampleClient_UpdateSecurityMarks() {
+ ctx := context.Background()
+ c, err := securitycenter.NewClient(ctx)
+ if err != nil {
+ // TODO: Handle error.
+ }
+
+ req := &securitycenterpb.UpdateSecurityMarksRequest{
+ // TODO: Fill request struct fields.
+ }
+ resp, err := c.UpdateSecurityMarks(ctx, req)
+ if err != nil {
+ // TODO: Handle error.
+ }
+ // TODO: Use resp.
+ _ = resp
+}