require 'db/mongo/models/provider_accounts/ec2_provider_account' require 'db/mongo/models/provider_accounts/openstack_provider_account' require 'db/mongo/connectors/provider_account' require 'spec/connectors/tester_connector/provider_account' RSpec.describe Connectors::ProviderAccount, type: :connector do set_tester_connector TesterConnector::ProviderAccount include_examples 'mongo connector', { model_name: :provider_account, factory_name: :ec2_provider_account, only: [:insert, :delete], field_to_update: :description } describe '#provider_accounts', cleanup_after: :all do before(:all) do @tester_connector.create(id: 'foo', provider: 'ec2') @tester_connector.create(id: 'bar', provider: 'openstack') end it 'returns array of Ec2ProviderAccount if @provider is ec2' do expect( @connector.provider_accounts('ec2') ).to be_an_array_of(Devops::Model::Ec2ProviderAccount).and have_size(1) end it 'returns array of Ec2ProviderAccount if @provider is openstack' do expect( @connector.provider_accounts('openstack') ).to be_an_array_of(Devops::Model::OpenstackProviderAccount).and have_size(1) end end describe '#provider_account', cleanup_after: :all do before(:all) do @tester_connector.create(id: 'foo', provider: 'ec2') @tester_connector.create(id: 'bar', provider: 'openstack') end it 'returns ec2 provider account' do acc = @connector.provider_account('ec2', 'foo') expect(acc).to be_a(Devops::Model::Ec2ProviderAccount) expect(acc.account_name).to eq 'foo' end it 'returns openstack provider account' do acc = @connector.provider_account('openstack', 'bar') expect(acc).to be_a(Devops::Model::OpenstackProviderAccount) expect(acc.account_name).to eq 'bar' end it 'raises error if account is missing' do expect{@connector.provider_account('ec2', 'missing')}.to raise_error(RecordNotFound) end end end