Skip to content

Commit

Permalink
Added specs
Browse files Browse the repository at this point in the history
  • Loading branch information
masayag committed Feb 21, 2018
1 parent 4944f37 commit e373ef2
Show file tree
Hide file tree
Showing 3 changed files with 272 additions and 0 deletions.
132 changes: 132 additions & 0 deletions spec/controllers/ems_container_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -244,5 +244,137 @@
end
end

describe "Kubevirt Disabled/Enabled" do
let(:zone) { FactoryGirl.build(:zone) }
let!(:server) { EvmSpecHelper.local_miq_server(:zone => zone) }

before do
allow(controller).to receive(:check_privileges).and_return(true)
allow(controller).to receive(:assert_privileges).and_return(true)
end

context "Provider creation" do
it "Creates a provider with only one endpoint if kubevirt is disabled" do
post :create, :params => {
"button" => "add",
"cred_type" => "kubevirt",
"name" => "openshift_no_kubevirt",
"emstype" => "openshift",
"zone" => 'default',
"default_security_protocol" => "ssl-without-validation",
"default_hostname" => "openstack.default.example.com",
"default_api_port" => "5000",
"default_userid" => "",
"default_password" => "",
"provider_region" => "",
"virtualization_selection" => "disabled"
}
expect(response.status).to eq(200)
ems_openshift = ManageIQ::Providers::ContainerManager.first
expect(ems_openshift.endpoints.pluck(:role)).to contain_exactly('default')
end

it "Creates a provider with two endpoints if kubevirt is enabled" do
post :create, :params => {
"button" => "add",
"cred_type" => "kubevirt",
"name" => "openshift_with_kubevirt",
"emstype" => "openshift",
"zone" => 'default',
"default_security_protocol" => "ssl-without-validation",
"default_hostname" => "server.example.com",
"default_api_port" => "5000",
"default_userid" => "",
"default_password" => "",
"provider_region" => "",
"virtualization_selection" => "kubevirt",
"kubevirt_security_protocol" => "ssl-without-validation",
"kubevirt_hostname" => "server.example.com",
"kubevirt_api_port" => "5000",
}
expect(response.status).to eq(200)
ems_openshift = ManageIQ::Providers::ContainerManager.first
expect(ems_openshift.endpoints.count).to be(2)
expect(ems_openshift.endpoints.pluck(:role)).to contain_exactly('default', 'kubevirt')
end
end

context "Provider update with kubevirt provider" do
context "update when virtualization selection is enabled" do
before :each do
stub_user(:features => :all)
session[:edit] = assigns(:edit)
end

def test_setting_many_fields
controller.instance_variable_set(:@_params,
:name => 'EMS 2',
:default_userid => '_',
:default_hostname => '10.10.10.11',
:default_api_port => '5000',
:default_security_protocol => 'ssl-with-validation-custom-ca',
:default_tls_ca_certs => '-----BEGIN DUMMY...',
:default_password => 'valid-token',
:virtualization_selection => 'kubevirt',
:kubevirt_hostname => '10.10.10.11',
:kubevirt_api_port => '5000',
:kubevirt_security_protocol => 'ssl-with-validation-custom-ca',
:kubevirt_tls_ca_certs => '-----BEGIN DUMMY...',
:kubevirt_password => 'other-valid-token',
:emstype => @type)
controller.send(:set_ems_record_vars, @ems)
expect(@flash_array).to be_nil
cc = @ems.connection_configurations

# verify default endpoint expectations
expect(cc.default.endpoint.hostname).to eq('10.10.10.11')
expect(cc.default.endpoint.port).to eq(5000)
expect(cc.default.endpoint.security_protocol).to eq('ssl-with-validation-custom-ca')
expect(cc.default.endpoint.verify_ssl?).to eq(true)
expect(cc.default.endpoint.certificate_authority).to eq('-----BEGIN DUMMY...')

# verify kubevirt endpoint expectations
expect(cc.kubevirt.endpoint.hostname).to eq('10.10.10.11')
expect(cc.kubevirt.endpoint.port).to eq(5000)
expect(cc.kubevirt.endpoint.security_protocol).to eq('ssl-with-validation-custom-ca')
expect(cc.kubevirt.endpoint.verify_ssl?).to eq(true)
expect(cc.kubevirt.endpoint.certificate_authority).to eq('-----BEGIN DUMMY...')

# verify authentications for default and kubevirt providers
expect(@ems.authentication_token("default")).to eq('valid-token')
expect(@ems.authentication_token("kubevirt")).to eq('other-valid-token')
expect(@ems.hostname).to eq('10.10.10.11')
end

def test_setting_few_fields
controller.remove_instance_variable(:@_params)
controller.instance_variable_set(:@_params, :name => 'EMS 3', :default_userid => '_')
controller.send(:set_ems_record_vars, @ems)
expect(@flash_array).to be_nil
expect(@ems.authentication_token("default")).to eq('valid-token')
expect(@ems.authentication_type("default")).to be_nil
end

it "when editing kubernetes EMS" do
@type = 'kubernetes'
@ems = ManageIQ::Providers::Kubernetes::ContainerManager.new
test_setting_many_fields

test_setting_few_fields
expect(@ems.connection_configurations.kubevirt.endpoint.hostname).to eq('10.10.10.11')
end

it "when editing openshift EMS" do
@type = 'openshift'
@ems = ManageIQ::Providers::Openshift::ContainerManager.new
test_setting_many_fields

test_setting_few_fields
expect(@ems.connection_configurations.kubevirt.endpoint.hostname).to eq('10.10.10.11')
end
end
end
end

include_examples '#download_summary_pdf', :ems_kubernetes
end
77 changes: 77 additions & 0 deletions spec/controllers/ems_infra_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,83 @@
end
end

describe "Kubevirt - update" do
before do
allow(controller).to receive(:check_privileges).and_return(true)
allow(controller).to receive(:assert_privileges).and_return(true)
login_as FactoryGirl.create(:user, :features => "ems_infra_new")
end

render_views

it 'creates ems container with virtualization endpoint on post' do
expect do
post :create, :params => {
"button" => "add",
"cred_type" => "kubevirt",
"name" => "openshift_with_kubevirt",
"emstype" => "openshift",
"zone" => 'default',
"default_security_protocol" => "ssl-without-validation",
"default_hostname" => "server.example.com",
"default_api_port" => "5000",
"default_userid" => "",
"default_password" => "",
"provider_region" => "",
"virtualization_selection" => "kubevirt",
"kubevirt_security_protocol" => "ssl-without-validation",
"kubevirt_hostname" => "server.example.com",
"kubevirt_api_port" => "5000",
}
end.to change { ManageIQ::Providers::Kubevirt::InfraManager.count }.by(1)
end

it 'creates and updates an authentication record on post' do
expect do
post :create, :params => {
"button" => "add",
"cred_type" => "kubevirt",
"name" => "openshift_with_kubevirt",
"emstype" => "openshift",
"zone" => 'default',
"default_security_protocol" => "ssl-without-validation",
"default_hostname" => "server.example.com",
"default_api_port" => "5000",
"default_userid" => "",
"default_password" => "",
"provider_region" => "",
"virtualization_selection" => "kubevirt",
"kubevirt_security_protocol" => "ssl-without-validation",
"kubevirt_hostname" => "server.example.com",
"kubevirt_api_port" => "5000",
"kubevirt_password" => "[FILTERED]"
}
end.to change { ManageIQ::Providers::Kubevirt::InfraManager.count }.by(1)

expect(response.status).to eq(200)
kubevirt = ManageIQ::Providers::Kubevirt::InfraManager.where(:name => "openshift_with_kubevirt Virtualization Manager").first
expect(kubevirt.authentications.size).to eq(2)
expect(kubevirt.authentication_token(:kubevirt)).to eq('[FILTERED]')

expect do
post :update, :params => {
"id" => kubevirt.id,
"button" => "save",
"name" => "foo_kubevirt_name_changed",
"emstype" => "kubevirt",
"cred_type" => "kubevirt",
"kubevirt_password" => "XXXXXX",
}
end.not_to change { Authentication.count }

expect(response.status).to eq(200)

kubevirt.reload
expect(kubevirt.name).to eq('foo_kubevirt_name_changed')
expect(kubevirt.authentication_token(:kubevirt)).to eq('XXXXXX')
end
end

describe "VMWare - create, update" do
before do
allow(controller).to receive(:check_privileges).and_return(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -843,6 +843,69 @@ describe('emsCommonFormController in the context of ems infra provider', functio
expect($scope.emsCommonModel.default_api_port).toEqual('');
});
});

describe('when the emsCommonFormId is a Kubevirt Id', function () {
var emsCommonFormResponse = {
id: 12345,
name: 'myKubevirt',
kubevirt_hostname: '10.22.33.44',
emstype: 'kubevirt',
zone: 'default',
kubevirt_api_port: '8443',
kubevirt_password_exists: true,
kubevirt_security_protocol: 'ssl-with-validation-custom-ca',
kubevirt_tls_ca_certs: '-----BEGIN DUMMY...',
};

beforeEach(inject(function (_$controller_) {
$httpBackend.whenGET('/ems_infra/ems_infra_form_fields/12345').respond(emsCommonFormResponse);

$controller = _$controller_('emsCommonFormController',
{
$scope: $scope,
$attrs: {
'formFieldsUrl': '/ems_infra/ems_infra_form_fields/',
'updateUrl': '/ems_infra/update/'
},
emsCommonFormId: 12345,
miqService: miqService,
API: API
});
$httpBackend.flush();
}));

it('sets the name to the Kubevirt Provider', function () {
expect($scope.emsCommonModel.name).toEqual('myKubevirt');
});

it('sets the type to kubevirt', function () {
expect($scope.emsCommonModel.emstype).toEqual('kubevirt');
});

it('sets the hostname', function () {
expect($scope.emsCommonModel.kubevirt_hostname).toEqual('10.22.33.44');
});

it('sets the zone to default', function () {
expect($scope.emsCommonModel.zone).toEqual('default');
});

it('sets the password', function () {
expect($scope.emsCommonModel.kubevirt_password).toEqual(miqService.storedPasswordPlaceholder);
});

it('sets the kubevirt api port', function () {
expect($scope.emsCommonModel.kubevirt_api_port).toEqual('8443');
});

it('sets the kubevirt security protocol', function () {
expect($scope.emsCommonModel.kubevirt_security_protocol).toEqual('ssl-with-validation-custom-ca');
});

it('sets the kubevirt certificate', function () {
expect($scope.emsCommonModel.kubevirt_tls_ca_certs).toEqual('-----BEGIN DUMMY...');
});
});
});

describe('emsCommonFormController in the context of ems middleware provider', function () {
Expand Down

0 comments on commit e373ef2

Please sign in to comment.