add few project specs
This commit is contained in:
parent
1b66ca88ad
commit
c320edaa71
@ -213,7 +213,8 @@ module Devops
|
||||
end
|
||||
|
||||
def self.create_roles_response roles
|
||||
if !roles || roles.is_a?(String)
|
||||
return "error in creating roles" unless roles
|
||||
if roles.is_a?(String)
|
||||
roles
|
||||
else
|
||||
info = ""
|
||||
|
||||
@ -2,11 +2,22 @@ require 'db/mongo/models/project'
|
||||
|
||||
FactoryGirl.define do
|
||||
factory :project, class: Devops::Model::Project do
|
||||
transient do
|
||||
with_deploy_env_identifier false
|
||||
with_deploy_env_identifiers ['foo']
|
||||
end
|
||||
|
||||
id 'my_project'
|
||||
deploy_envs {
|
||||
[build(:deploy_env_ec2)]
|
||||
}
|
||||
run_list []
|
||||
description 'desc'
|
||||
|
||||
after(:build) do |project, evaluator|
|
||||
unless project.deploy_envs
|
||||
project.deploy_envs = []
|
||||
evaluator.with_deploy_env_identifiers.each do |env_id|
|
||||
project.deploy_envs << build(:deploy_env_ec2, identifier: env_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -12,17 +12,17 @@ RSpec.describe Devops::Model::Project, type: :model do
|
||||
include_examples 'field type validation', :run_list, :not_nil, :maybe_empty_array, :run_list
|
||||
|
||||
it "isn't valid when has envs with same identifier" do
|
||||
project.deploy_envs << build(:deploy_env_ec2)
|
||||
project = build(:project, with_deploy_env_identifiers: %w(foo foo))
|
||||
expect(project).not_to be_valid
|
||||
end
|
||||
|
||||
it "is valid when all envs have uniq identifiers" do
|
||||
project.deploy_envs << build(:deploy_env_ec2, identifier: 'new')
|
||||
project = build(:project, with_deploy_env_identifiers: %w(foo bar))
|
||||
expect(project).to be_valid
|
||||
end
|
||||
|
||||
it "isn't valid when at least one of envs isn't valid" do
|
||||
project.deploy_envs << build(:deploy_env_ec2, identifier: nil)
|
||||
project = build(:project, with_deploy_env_identifiers: ['foo', nil])
|
||||
expect(project).not_to be_valid
|
||||
end
|
||||
end
|
||||
@ -44,6 +44,74 @@ RSpec.describe Devops::Model::Project, type: :model do
|
||||
it 'sets run_list to empty_array by default' do
|
||||
expect(described_class.new.run_list).to eq []
|
||||
end
|
||||
|
||||
describe 'deploy envs building' do
|
||||
let(:params) { {'deploy_envs' => [ {'provider' => @env_provider, 'identifier' => 'foo'} ]} }
|
||||
|
||||
it 'builds envs array from given params' do
|
||||
@env_provider = 'ec2'
|
||||
expect(
|
||||
described_class.new(params).deploy_envs
|
||||
).to be_an_array_of(Devops::Model::DeployEnvEc2).and have_size(1)
|
||||
end
|
||||
|
||||
it 'builds ec2 deploy envs from given params' do
|
||||
@env_provider = 'ec2'
|
||||
builded_env = described_class.new(params).deploy_envs.first
|
||||
expect(builded_env).to be_a(Devops::Model::DeployEnvEc2)
|
||||
expect(builded_env.identifier).to eq 'foo'
|
||||
end
|
||||
|
||||
it 'build openstack deploy envs from given params' do
|
||||
@env_provider = 'openstack'
|
||||
builded_env = described_class.new(params).deploy_envs.first
|
||||
expect(builded_env).to be_a(Devops::Model::DeployEnvOpenstack)
|
||||
end
|
||||
|
||||
it 'build static deploy envs from given params' do
|
||||
@env_provider = 'static'
|
||||
builded_env = described_class.new(params).deploy_envs.first
|
||||
expect(builded_env).to be_a(Devops::Model::DeployEnvStatic)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#deploy_env' do
|
||||
let(:project) { project = build(:project, with_deploy_env_identifiers: %w(foo bar)) }
|
||||
|
||||
it 'returns found env' do
|
||||
expect(project.deploy_env('bar')).to be_an(Devops::Model::DeployEnvEc2)
|
||||
end
|
||||
|
||||
it 'raises RecordNotFound if there is no such env' do
|
||||
expect {
|
||||
project.deploy_env('missing')
|
||||
}.to raise_error RecordNotFound
|
||||
end
|
||||
end
|
||||
|
||||
describe '#add_deploy_env', stub_logger: true do
|
||||
let(:env) {build(:deploy_env_ec2)}
|
||||
subject { project.add_deploy_env(env) }
|
||||
before do
|
||||
allow(Devops::Db).to receive_message_chain('connector.add_deploy_env_to_project')
|
||||
end
|
||||
|
||||
it 'inserts deploy env into mongo via connector' do
|
||||
expect(
|
||||
Devops::Db
|
||||
).to receive_message_chain('connector.add_deploy_env_to_project').with(project.id, env)
|
||||
subject
|
||||
end
|
||||
|
||||
it 'creates chef role' do
|
||||
expect(env).to receive(:create_role).with(project.id)
|
||||
subject
|
||||
end
|
||||
|
||||
it 'returns string' do
|
||||
expect(subject).to be_a(String)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@ -11,3 +11,11 @@ RSpec.shared_context 'stubbed calls to connector in env validators' do
|
||||
allow_any_instance_of(Validators::FieldValidator::Image).to receive(:available_images).and_return([{'id' => 'image'}])
|
||||
end
|
||||
end
|
||||
|
||||
RSpec.shared_context 'stubbed calls to logger', stub_logger: true do
|
||||
before do
|
||||
allow(DevopsLogger).to receive_message_chain('logger.debug')
|
||||
allow(DevopsLogger).to receive_message_chain('logger.info')
|
||||
allow(DevopsLogger).to receive_message_chain('logger.error')
|
||||
end
|
||||
end
|
||||
|
||||
@ -103,10 +103,9 @@ RSpec.shared_examples 'deploy env' do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#create_role' do
|
||||
describe '#create_role', stub_logger: true do
|
||||
subject { env.create_role('project_name') }
|
||||
before do
|
||||
stub_loggers
|
||||
allow(env).to receive_message_chain('knife_instance.role_name') { 'role_name' }
|
||||
end
|
||||
|
||||
@ -153,7 +152,7 @@ RSpec.shared_examples 'deploy env' do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#rename' do
|
||||
describe '#rename', stub_logger: true do
|
||||
subject { env.rename('project_id', 'new_name') }
|
||||
let(:old_role_name) {'project_id_name'}
|
||||
let(:new_role_name) {'project_id_new_name'}
|
||||
@ -161,7 +160,6 @@ RSpec.shared_examples 'deploy env' do
|
||||
let(:suggested_new_roles) {["role[#{new_role_name}]"]}
|
||||
|
||||
before do
|
||||
stub_loggers
|
||||
# simulate correct start conditions
|
||||
env.run_list = suggested_old_roles
|
||||
|
||||
|
||||
@ -9,7 +9,9 @@ RSpec.shared_examples 'field type validation' do |field, *properties|
|
||||
|
||||
describe field do
|
||||
it 'should not be nil' do
|
||||
expect(build(validated_model_name, field => nil)).not_to be_valid
|
||||
model = build(validated_model_name)
|
||||
model.send("#{field}=", nil)
|
||||
expect(model).not_to be_valid
|
||||
end if properties.include?(:not_nil)
|
||||
|
||||
it 'may be nil' do
|
||||
|
||||
@ -4,13 +4,6 @@ module SpecSupport
|
||||
ROOT = File.join(__dir__, '../../')
|
||||
BLANK_FILE = File.join(ROOT, 'spec/support/blank_file')
|
||||
|
||||
|
||||
def stub_loggers
|
||||
allow(DevopsLogger).to receive_message_chain('logger.debug')
|
||||
allow(DevopsLogger).to receive_message_chain('logger.info')
|
||||
allow(DevopsLogger).to receive_message_chain('logger.error')
|
||||
end
|
||||
|
||||
def self.db_params
|
||||
@db ||= begin
|
||||
conf = config['mongo']
|
||||
|
||||
Loading…
Reference in New Issue
Block a user