spanner/spec/spanner_enable_fine_grained_access_spec.rb (37 lines of code) (raw):
# Copyright 2022 Google, Inc
#
# 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.
require_relative "./spec_helper"
require "google/apis/iam_v1"
require_relative "../spanner_enable_fine_grained_access"
describe "Google Cloud Spanner Database roles" do
before :each do
@client = Google::Apis::IamV1::IamService.new
scopes = ["https://www.googleapis.com/auth/cloud-platform"]
@client.authorization = Google::Auth.get_application_default(scopes)
@service_account = create_service_account
cleanup_database_resources
end
after :each do
cleanup_service_account
cleanup_database_resources
cleanup_instance_resources
end
example "Enable fine grained access" do
create_singers_albums_database
capture do
spanner_enable_fine_grained_access project_id: @project_id,
instance_id: @instance_id,
database_id: @database_id,
iam_member: "serviceAccount:#{@service_account.email}",
database_role: "new_parent",
title: "Test condition"
end
expect(captured_output).to include "Enabled fine-grained access in IAM"
end
def create_service_account
request = Google::Apis::IamV1::CreateServiceAccountRequest.new
request.account_id = "test-sample-1234"
@client.create_service_account "projects/#{@project_id}", request
end
def cleanup_service_account
@client.delete_project_service_account @service_account.name
end
end