diff --git a/devops-service/app/api2/handlers/provider.rb b/devops-service/app/api2/handlers/provider.rb index 8e5445d..7e74f27 100644 --- a/devops-service/app/api2/handlers/provider.rb +++ b/devops-service/app/api2/handlers/provider.rb @@ -27,14 +27,14 @@ module Devops def add_account provider account = ::Provider::ProviderFactory.get_accounts_factory(provider).create_account(parser.account) account.validate_fields! - Devops::Db.connector.provider_accounts_insert(account) + Devops::Db.connector.provider_account_insert(account) ::Provider::ProviderFactory.add_account(provider, account) account.to_hash end def delete_account name, provider account = Devops::Db.connector.provider_account(provider, name) - Devops::Db.connector.provider_accounts_delete(name) + Devops::Db.connector.provider_account_delete(name) ::Provider::ProviderFactory.delete_account(provider, account) account.to_hash end diff --git a/devops-service/db/mongo/connectors/provider_accounts.rb b/devops-service/db/mongo/connectors/provider_account.rb similarity index 96% rename from devops-service/db/mongo/connectors/provider_accounts.rb rename to devops-service/db/mongo/connectors/provider_account.rb index 4bd235a..5d51558 100644 --- a/devops-service/db/mongo/connectors/provider_accounts.rb +++ b/devops-service/db/mongo/connectors/provider_account.rb @@ -1,5 +1,5 @@ module Connectors - class ProviderAccounts < Base + class ProviderAccount < Base include Helpers::InsertCommand, Helpers::DeleteCommand diff --git a/devops-service/db/mongo/models/provider_accounts/provider_account.rb b/devops-service/db/mongo/models/provider_accounts/provider_account.rb index d3c9c42..efc6dd1 100644 --- a/devops-service/db/mongo/models/provider_accounts/provider_account.rb +++ b/devops-service/db/mongo/models/provider_accounts/provider_account.rb @@ -61,6 +61,12 @@ module Devops } end + # absent of "id" attribute can cause some inconviniences. + # for example, we have "record.id" call in InsertCommand + def id + account_name + end + end end end diff --git a/devops-service/db/mongo/mongo_connector.rb b/devops-service/db/mongo/mongo_connector.rb index baa47ff..60deaa7 100644 --- a/devops-service/db/mongo/mongo_connector.rb +++ b/devops-service/db/mongo/mongo_connector.rb @@ -33,7 +33,7 @@ class MongoConnector [:keys, :key, :key_insert, :key_delete] => :keys_connector, [:save_report, :report, :reports, :set_report_status, :set_report_server_data, :add_report_subreports] => :reports_connector, [:insert_statistic, :search_statistic] => :statistics_connector, - [:provider_accounts, :provider_accounts_insert, :provider_accounts_delete, :provider_account] => :provider_accounts_connector + [:provider_accounts, :provider_account_insert, :provider_account_delete, :provider_account] => :provider_accounts_connector ) def initialize(db, host, port=27017, user=nil, password=nil) @@ -48,7 +48,7 @@ class MongoConnector private def provider_accounts_connector - @provider_accounts_connector ||= Connectors::ProviderAccounts.new(@db) + @provider_accounts_connector ||= Connectors::ProviderAccount.new(@db) end def images_connector diff --git a/devops-service/spec/connectors/provider_accounts_connector_spec.rb b/devops-service/spec/connectors/provider_accounts_connector_spec.rb new file mode 100644 index 0000000..994ca89 --- /dev/null +++ b/devops-service/spec/connectors/provider_accounts_connector_spec.rb @@ -0,0 +1,35 @@ +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(account_name: 'foo', provider: 'ec2') + @tester_connector.create(account_name: '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 + +end diff --git a/devops-service/spec/connectors/tester_connector/provider_account.rb b/devops-service/spec/connectors/tester_connector/provider_account.rb new file mode 100644 index 0000000..38a8feb --- /dev/null +++ b/devops-service/spec/connectors/tester_connector/provider_account.rb @@ -0,0 +1,6 @@ +require_relative 'base' + +module TesterConnector + class ProviderAccount < Base + end +end \ No newline at end of file