add few project specs
This commit is contained in:
parent
1b66ca88ad
commit
c320edaa71
@ -213,7 +213,8 @@ module Devops
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.create_roles_response roles
|
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
|
roles
|
||||||
else
|
else
|
||||||
info = ""
|
info = ""
|
||||||
|
|||||||
@ -2,11 +2,22 @@ require 'db/mongo/models/project'
|
|||||||
|
|
||||||
FactoryGirl.define do
|
FactoryGirl.define do
|
||||||
factory :project, class: Devops::Model::Project do
|
factory :project, class: Devops::Model::Project do
|
||||||
|
transient do
|
||||||
|
with_deploy_env_identifier false
|
||||||
|
with_deploy_env_identifiers ['foo']
|
||||||
|
end
|
||||||
|
|
||||||
id 'my_project'
|
id 'my_project'
|
||||||
deploy_envs {
|
|
||||||
[build(:deploy_env_ec2)]
|
|
||||||
}
|
|
||||||
run_list []
|
run_list []
|
||||||
description 'desc'
|
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
|
||||||
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
|
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
|
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
|
expect(project).not_to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
it "is valid when all envs have uniq identifiers" do
|
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
|
expect(project).to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
it "isn't valid when at least one of envs isn't valid" do
|
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
|
expect(project).not_to be_valid
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -44,6 +44,74 @@ RSpec.describe Devops::Model::Project, type: :model do
|
|||||||
it 'sets run_list to empty_array by default' do
|
it 'sets run_list to empty_array by default' do
|
||||||
expect(described_class.new.run_list).to eq []
|
expect(described_class.new.run_list).to eq []
|
||||||
end
|
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
|
||||||
|
|
||||||
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'}])
|
allow_any_instance_of(Validators::FieldValidator::Image).to receive(:available_images).and_return([{'id' => 'image'}])
|
||||||
end
|
end
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#create_role' do
|
describe '#create_role', stub_logger: true do
|
||||||
subject { env.create_role('project_name') }
|
subject { env.create_role('project_name') }
|
||||||
before do
|
before do
|
||||||
stub_loggers
|
|
||||||
allow(env).to receive_message_chain('knife_instance.role_name') { 'role_name' }
|
allow(env).to receive_message_chain('knife_instance.role_name') { 'role_name' }
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -153,7 +152,7 @@ RSpec.shared_examples 'deploy env' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#rename' do
|
describe '#rename', stub_logger: true do
|
||||||
subject { env.rename('project_id', 'new_name') }
|
subject { env.rename('project_id', 'new_name') }
|
||||||
let(:old_role_name) {'project_id_name'}
|
let(:old_role_name) {'project_id_name'}
|
||||||
let(:new_role_name) {'project_id_new_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}]"]}
|
let(:suggested_new_roles) {["role[#{new_role_name}]"]}
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_loggers
|
|
||||||
# simulate correct start conditions
|
# simulate correct start conditions
|
||||||
env.run_list = suggested_old_roles
|
env.run_list = suggested_old_roles
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,9 @@ RSpec.shared_examples 'field type validation' do |field, *properties|
|
|||||||
|
|
||||||
describe field do
|
describe field do
|
||||||
it 'should not be nil' 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)
|
end if properties.include?(:not_nil)
|
||||||
|
|
||||||
it 'may be nil' do
|
it 'may be nil' do
|
||||||
|
|||||||
@ -4,13 +4,6 @@ module SpecSupport
|
|||||||
ROOT = File.join(__dir__, '../../')
|
ROOT = File.join(__dir__, '../../')
|
||||||
BLANK_FILE = File.join(ROOT, 'spec/support/blank_file')
|
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
|
def self.db_params
|
||||||
@db ||= begin
|
@db ||= begin
|
||||||
conf = config['mongo']
|
conf = config['mongo']
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user