add specs for ServerExecutor#delete_server and #roll_back
This commit is contained in:
parent
a88fa8e2f6
commit
db1ccc2e33
@ -37,6 +37,8 @@ RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connec
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe '.symbolic_error_code' do
|
describe '.symbolic_error_code' do
|
||||||
it 'returns symbol given an integer' do
|
it 'returns symbol given an integer' do
|
||||||
expect(described_class.symbolic_error_code(2)).to eq :server_bootstrap_fail
|
expect(described_class.symbolic_error_code(2)).to eq :server_bootstrap_fail
|
||||||
@ -47,6 +49,8 @@ RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connec
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe '#create_server_object' do
|
describe '#create_server_object' do
|
||||||
it 'builds Server object' do
|
it 'builds Server object' do
|
||||||
server = executor.create_server_object('created_by' => 'me')
|
server = executor.create_server_object('created_by' => 'me')
|
||||||
@ -57,6 +61,8 @@ RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connec
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe '#create_server' do
|
describe '#create_server' do
|
||||||
let!(:without_bootstrap) { @without_bootstrap = true }
|
let!(:without_bootstrap) { @without_bootstrap = true }
|
||||||
let!(:run_list) { @run_list = %w(role[asd]) }
|
let!(:run_list) { @run_list = %w(role[asd]) }
|
||||||
@ -266,6 +272,8 @@ RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connec
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe '#two_phase_bootstrap', stubbed_knife: true do
|
describe '#two_phase_bootstrap', stubbed_knife: true do
|
||||||
subject { executor.two_phase_bootstrap({}) }
|
subject { executor.two_phase_bootstrap({}) }
|
||||||
|
|
||||||
@ -376,6 +384,8 @@ RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connec
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe '#deploy_server_with_tags', stubbed_knife: true do
|
describe '#deploy_server_with_tags', stubbed_knife: true do
|
||||||
let(:current_tags) { @current_tags }
|
let(:current_tags) { @current_tags }
|
||||||
let(:initial_tags) { %w(a b) }
|
let(:initial_tags) { %w(a b) }
|
||||||
@ -430,6 +440,8 @@ RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connec
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe '#deploy_server', stubbed_knife: true, stubbed_connector: true do
|
describe '#deploy_server', stubbed_knife: true, stubbed_connector: true do
|
||||||
let(:deploy_info) { @deploy_info }
|
let(:deploy_info) { @deploy_info }
|
||||||
let(:json_file_name) { 'json.json' }
|
let(:json_file_name) { 'json.json' }
|
||||||
@ -564,7 +576,126 @@ RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connec
|
|||||||
expect(subject).to eq 1
|
expect(subject).to eq 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe '#delete_from_chef_server', stubbed_knife: true do
|
||||||
|
subject { executor.delete_from_chef_server('foo') }
|
||||||
|
before do
|
||||||
|
allow(stubbed_knife).to receive(:chef_client_delete)
|
||||||
|
allow(stubbed_knife).to receive(:chef_node_delete)
|
||||||
|
subject
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns hash with :chef_node and :chef_client keys' do
|
||||||
|
expect(subject).to be_a(Hash).and include(:chef_node, :chef_client)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'calls to :chef_node_delete and :chef_client_delete' do
|
||||||
|
expect(stubbed_knife).to have_received(:chef_client_delete)
|
||||||
|
expect(stubbed_knife).to have_received(:chef_node_delete)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe '#delete_server' do
|
||||||
|
let(:delete_server) { executor.delete_server }
|
||||||
|
|
||||||
|
context 'when server is static' do
|
||||||
|
before do
|
||||||
|
server.provider = 'static'
|
||||||
|
allow(stubbed_connector).to receive(:server_delete).with(server.id)
|
||||||
|
allow(executor).to receive(:unbootstrap)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'performs unbootstrap' do
|
||||||
|
expect(executor).to receive(:unbootstrap)
|
||||||
|
delete_server
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'deletes server from mongo' do
|
||||||
|
expect(stubbed_connector).to receive(:server_delete).with(server.id)
|
||||||
|
delete_server
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns message and nil' do
|
||||||
|
expect(delete_server.first).to be_a(String)
|
||||||
|
expect(delete_server.last).to be nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't try to remove it from cloud" do
|
||||||
|
expect{delete_server}.not_to raise_error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when server isn't static", stubbed_knife: true do
|
||||||
|
before do
|
||||||
|
allow(server).to receive_message_chain('provider_instance.delete_server')
|
||||||
|
allow(stubbed_connector).to receive(:server_delete).with(server.id)
|
||||||
|
allow(stubbed_knife).to receive(:chef_node_delete)
|
||||||
|
allow(stubbed_knife).to receive(:chef_client_delete)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'deletes from info about note chef server' do
|
||||||
|
allow(executor).to receive(:delete_from_chef_server).and_call_original
|
||||||
|
expect(executor).to receive(:delete_from_chef_server)
|
||||||
|
delete_server
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't unbootstrap server" do
|
||||||
|
expect(executor).not_to receive(:unbootstrap)
|
||||||
|
delete_server
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'deletes server from cloud' do
|
||||||
|
expect(server).to receive_message_chain('provider_instance.delete_server').with(server)
|
||||||
|
delete_server
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't raise error if server wasn't found in cloud" do
|
||||||
|
allow(server).to receive_message_chain('provider_instance.name')
|
||||||
|
allow(server).to receive_message_chain('provider_instance.delete_server') {
|
||||||
|
raise Fog::Compute::OpenStack::NotFound
|
||||||
|
}
|
||||||
|
expect { delete_server }.not_to raise_error
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'deletes server from mongo' do
|
||||||
|
expect(stubbed_connector).to receive(:server_delete).with(server.id)
|
||||||
|
delete_server
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns message and hash with :chef_node, :chef_client and :server keys' do
|
||||||
|
expect(delete_server.first).to be_a(String)
|
||||||
|
expect(delete_server.last).to be_a(Hash).and include(:chef_client, :chef_node, :server)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe '#rollback' do
|
||||||
|
before do
|
||||||
|
allow(executor).to receive(:delete_from_chef_server) { {} }
|
||||||
|
allow(server).to receive_message_chain('provider_instance.delete_server')
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does nothing if server.id is nil" do
|
||||||
|
server.id = nil
|
||||||
|
expect(executor).not_to receive(:delete_from_chef_server)
|
||||||
|
expect(server).not_to receive(:provider_instance)
|
||||||
|
executor.roll_back
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'deletes node from chef server and instance from cloud' do
|
||||||
|
expect(executor).to receive(:delete_from_chef_server)
|
||||||
|
expect(server).to receive_message_chain('provider_instance.delete_server')
|
||||||
|
executor.roll_back
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't raise if deleting server in cloud raises an error" do
|
||||||
|
allow(server).to receive_message_chain('provider_instance.delete_server') { raise }
|
||||||
|
expect { executor.roll_back }.not_to raise_error
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -1,5 +1,5 @@
|
|||||||
RSpec.shared_context 'stubbed calls to connector', stubbed_connector: true do
|
RSpec.shared_context 'stubbed calls to connector', stubbed_connector: true do
|
||||||
let(:stubbed_connector) { double('Connector') }
|
let(:stubbed_connector) { instance_double(MongoConnector) }
|
||||||
before do
|
before do
|
||||||
allow(Devops::Db).to receive(:connector) { stubbed_connector }
|
allow(Devops::Db).to receive(:connector) { stubbed_connector }
|
||||||
end
|
end
|
||||||
|
|||||||
@ -3,5 +3,6 @@ RSpec.shared_context 'stubbed calls to logger', stubbed_logger: true do
|
|||||||
allow(DevopsLogger).to receive_message_chain('logger.debug')
|
allow(DevopsLogger).to receive_message_chain('logger.debug')
|
||||||
allow(DevopsLogger).to receive_message_chain('logger.info')
|
allow(DevopsLogger).to receive_message_chain('logger.info')
|
||||||
allow(DevopsLogger).to receive_message_chain('logger.error')
|
allow(DevopsLogger).to receive_message_chain('logger.error')
|
||||||
|
allow(DevopsLogger).to receive_message_chain('logger.warn')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Loading…
Reference in New Issue
Block a user