71 lines
2.4 KiB
Ruby
71 lines
2.4 KiB
Ruby
require 'spec_helper'
|
|
require_relative '../shared_models_context'
|
|
|
|
RSpec.describe Devops::Model::Ec2ProviderAccount, type: :model do
|
|
let(:provider_account) { build(:ec2_provider_account) }
|
|
|
|
|
|
describe 'validation rules', stubbed_connector: true do
|
|
before do
|
|
allow(Provider::ProviderFactory).to receive(:providers).and_return(%w(ec2 openstack))
|
|
allow(stubbed_connector).to receive(:key)
|
|
end
|
|
|
|
it 'set validators' do
|
|
expect(provider_account).to respond_to(:validate_access_key_id!)
|
|
end
|
|
|
|
it 'is valid with valid attrs' do
|
|
provider_account.validate!
|
|
expect(provider_account).to be_valid
|
|
end
|
|
|
|
include_examples 'field type validation', :account_name, :not_nil, :non_empty_string
|
|
include_examples 'field type validation', :description, :maybe_nil, :non_empty_string
|
|
include_examples 'field type validation', :ssh_key, :not_nil, :non_empty_string
|
|
include_examples 'field type validation', :access_key_id, :not_nil, :non_empty_string
|
|
include_examples 'field type validation', :secret_access_key, :not_nil, :non_empty_string
|
|
|
|
it "isn't valid if description length is more than 500" do
|
|
provider_account.description = 'a' * 501
|
|
expect(provider_account).not_to be_valid
|
|
expect{ provider_account.validate_description! }.to raise_error InvalidRecord
|
|
end
|
|
|
|
it "isn't valid if keys collection doesn't include given key" do
|
|
allow(stubbed_connector).to receive(:key) { raise RecordNotFound}
|
|
expect(provider_account).not_to be_valid
|
|
end
|
|
end
|
|
|
|
describe '#initialize' do
|
|
it 'sets provider to ec2' do
|
|
expect(described_class.new.provider).to eq 'ec2'
|
|
end
|
|
end
|
|
|
|
describe '#to_mongo_hash' do
|
|
it 'returns hash with several keys' do
|
|
expect(
|
|
provider_account.to_mongo_hash.keys
|
|
).to include(*%w(availability_zone access_key_id secret_access_key _id description ssh_key provider))
|
|
end
|
|
end
|
|
|
|
describe '.build_from_bson' do
|
|
subject { described_class.build_from_bson('_id' => 'asd') }
|
|
|
|
it 'returns an instance of Devops::Model::Ec2ProviderAccount' do
|
|
expect(subject).to be_an_instance_of(described_class)
|
|
expect(subject.account_name).to eq 'asd'
|
|
end
|
|
end
|
|
|
|
describe '.account_fields' do
|
|
it 'returns hash with several keys' do
|
|
expect(
|
|
described_class.account_fields.keys
|
|
).to include(*%i(availability_zone access_key_id secret_access_key description ssh_key account_name))
|
|
end
|
|
end
|
|
end |