70 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require 'spec_helper' | ||
|  | 
 | ||
|  | 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 |