Add CheckGCPProjectBillingService
This commit is contained in:
parent
84d8ca1171
commit
87f01506cb
2 changed files with 38 additions and 0 deletions
8
app/services/check_gcp_project_billing_service.rb
Normal file
8
app/services/check_gcp_project_billing_service.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
class CheckGCPProjectBillingService
|
||||
def execute(token)
|
||||
client = GoogleApi::CloudPlatform::Client.new(token, nil)
|
||||
client.projects_list.any? do |project|
|
||||
client.projects_get_billing_info(project.name).billingEnabled
|
||||
end
|
||||
end
|
||||
end
|
30
spec/services/check_gcp_project_billing_service_spec.rb
Normal file
30
spec/services/check_gcp_project_billing_service_spec.rb
Normal file
|
@ -0,0 +1,30 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe CheckGCPProjectBillingService do
|
||||
let(:service) { described_class.new }
|
||||
|
||||
describe '#execute' do
|
||||
before do
|
||||
expect_any_instance_of(GoogleApi::CloudPlatform::Client)
|
||||
.to receive(:projects_list).and_return([double(name: 'project_name')])
|
||||
|
||||
expect_any_instance_of(GoogleApi::CloudPlatform::Client)
|
||||
.to receive_message_chain(:projects_get_billing_info, :billingEnabled)
|
||||
.and_return(project_billing_enabled)
|
||||
end
|
||||
|
||||
subject { service.execute('bogustoken') }
|
||||
|
||||
context 'google account has a billing enabled gcp project' do
|
||||
let(:project_billing_enabled) { true }
|
||||
|
||||
it { is_expected.to eq(true) }
|
||||
end
|
||||
|
||||
context 'google account does not have a billing enabled gcp project' do
|
||||
let(:project_billing_enabled) { false }
|
||||
|
||||
it { is_expected.to eq(false) }
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue