summaryrefslogtreecommitdiffstats
path: root/spec/classes
diff options
context:
space:
mode:
Diffstat (limited to 'spec/classes')
-rw-r--r--spec/classes/tripleo_certmonger_etcd.rb60
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb26
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_spec.rb25
-rw-r--r--spec/classes/tripleo_profile_base_gnocchi_api_spec.rb109
-rw-r--r--spec/classes/tripleo_profile_base_sshd_spec.rb118
5 files changed, 281 insertions, 57 deletions
diff --git a/spec/classes/tripleo_certmonger_etcd.rb b/spec/classes/tripleo_certmonger_etcd.rb
new file mode 100644
index 0000000..fc0aad3
--- /dev/null
+++ b/spec/classes/tripleo_certmonger_etcd.rb
@@ -0,0 +1,60 @@
+#
+# Copyright (C) 2017 Red Hat Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# Unit tests for tripleo
+#
+
+require 'spec_helper'
+
+describe 'tripleo::certmonger::etcd' do
+
+ shared_examples_for 'tripleo::certmonger::etcd' do
+ let :params do
+ {
+ :hostname => 'localhost',
+ :service_certificate => '/etc/pki/cert.crt',
+ :service_key => '/etc/pki/key.pem',
+ }
+ end
+
+ it 'should include the base for using certmonger' do
+ is_expected.to contain_class('certmonger')
+ end
+
+ it 'should request a certificate' do
+ is_expected.to contain_certmonger_certificate('etcd').with(
+ :ensure => 'present',
+ :certfile => '/etc/pki/cert.crt',
+ :keyfile => '/etc/pki/key.pem',
+ :hostname => 'localhost',
+ :dnsname => 'localhost',
+ :ca => 'local',
+ :wait => true,
+ )
+ is_expected.to contain_file('/etc/pki/cert.crt')
+ is_expected.to contain_file('/etc/pki/key.pem')
+ end
+ end
+
+ on_supported_os.each do |os, facts|
+ context "on #{os}" do
+ let(:facts) do
+ facts.merge({})
+ end
+
+ it_behaves_like 'tripleo::certmonger::etcd'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
index 0f9aad7..23b198a 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
@@ -128,32 +128,6 @@ describe 'tripleo::profile::base::ceilometer::collector' do
is_expected.to contain_class('ceilometer::dispatcher::gnocchi')
end
end
-
- context 'with step 5 on bootstrap node' do
- let(:params) { {
- :step => 5,
- :bootstrap_node => 'node.example.com',
- :mongodb_node_ips => ['127.0.0.1',],
- :mongodb_replset => 'replicaset'
- } }
-
- it 'should trigger complete configuration' do
- is_expected.to contain_exec('ceilometer-db-upgrade')
- end
- end
-
- context 'with step 5 not on bootstrap node' do
- let(:params) { {
- :step => 5,
- :bootstrap_node => 'somethingelse.example.com',
- :mongodb_node_ips => ['127.0.0.1',],
- :mongodb_replset => 'replicaset'
- } }
-
- it 'should trigger complete configuration' do
- is_expected.to_not contain_exec('ceilometer-db-upgrade')
- end
- end
end
diff --git a/spec/classes/tripleo_profile_base_ceilometer_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_spec.rb
index 9173203..8c1d507 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_spec.rb
@@ -42,6 +42,31 @@ describe 'tripleo::profile::base::ceilometer' do
is_expected.to contain_class('ceilometer::config')
end
end
+
+ context 'with step 5 with bootstrap node' do
+ let(:params) { {
+ :bootstrap_node => 'node.example.com',
+ :step => 5,
+ :oslomsg_rpc_hosts => [ '127.0.0.1' ],
+ :oslomsg_rpc_username => 'ceilometer',
+ :oslomsg_rpc_password => 'foo',
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_exec('ceilometer-db-upgrade')
+ end
+ end
+
+ context 'with step 5 without bootstrap node' do
+ let(:params) { {
+ :bootstrap_node => 'somethingelse.example.com',
+ :step => 5,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to_not contain_exec('ceilometer-db-upgrade')
+ end
+ end
end
diff --git a/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb b/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
index 805a28e..6c04e9d 100644
--- a/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
+++ b/spec/classes/tripleo_profile_base_gnocchi_api_spec.rb
@@ -23,7 +23,11 @@ describe 'tripleo::profile::base::gnocchi::api' do
end
context 'with step less than 3' do
- let(:params) { { :step => 2 } }
+ let(:params) { {
+ :step => 2,
+ :gnocchi_redis_password => 'gnocchi',
+ :redis_vip => '127.0.0.1'
+ } }
it {
is_expected.to contain_class('tripleo::profile::base::gnocchi::api')
@@ -36,6 +40,8 @@ describe 'tripleo::profile::base::gnocchi::api' do
let(:params) { {
:step => 3,
:bootstrap_node => 'node.example.com',
+ :gnocchi_redis_password => 'gnocchi',
+ :redis_vip => '127.0.0.1'
} }
it {
@@ -48,6 +54,8 @@ describe 'tripleo::profile::base::gnocchi::api' do
context 'with step 3' do
let(:params) { {
:step => 3,
+ :gnocchi_redis_password => 'gnocchi',
+ :redis_vip => '127.0.0.1'
} }
it {
@@ -57,35 +65,76 @@ describe 'tripleo::profile::base::gnocchi::api' do
}
end
- # TODO(aschultz): fix profile class to not include hiera look ups in the
- # step 4 so we can properly test it
- #context 'with step 4' do
- # let(:params) { {
- # :step => 4,
- # } }
- #
- # it {
- # is_expected.to contain_class('gnocchi::api')
- # is_expected.to contain_class('gnocchi::wsgi::apache')
- # is_expected.to contain_class('gnocchi::storage')
- # }
- #end
- #
- #context 'with step 5 on bootstrap' do
- # let(:params) { {
- # :step => 5,
- # :bootstrap_node => 'node.example.com'
- # } }
- #
- # it {
- # is_expected.to contain_class('gnocchi::api')
- # is_expected.to contain_class('gnocchi::wsgi::apache')
- # is_expected.to contain_exec('run gnocchi upgrade with storage').with(
- # :command => 'gnocchi-upgrade --config-file=/etc/gnocchi/gnocchi.conf',
- # :path => ['/usr/bin', '/usr/sbin']
- # )
- # }
- #end
+ context 'with step 4' do
+ let(:params) { {
+ :step => 4,
+ :gnocchi_redis_password => 'gnocchi',
+ :redis_vip => '127.0.0.1'
+ } }
+
+ it {
+ is_expected.to contain_class('gnocchi::api')
+ is_expected.to contain_class('gnocchi::wsgi::apache')
+ is_expected.to contain_class('gnocchi::storage').with(
+ :coordination_url => 'redis://:gnocchi@127.0.0.1:6379/'
+ )
+ is_expected.to contain_class('gnocchi::storage::swift')
+ }
+ end
+
+ context 'with step 4 with file backend' do
+ let(:params) { {
+ :step => 4,
+ :gnocchi_backend => 'file',
+ :gnocchi_redis_password => 'gnocchi',
+ :redis_vip => '127.0.0.1'
+ } }
+
+ it {
+ is_expected.to contain_class('gnocchi::api')
+ is_expected.to contain_class('gnocchi::wsgi::apache')
+ is_expected.to contain_class('gnocchi::storage').with(
+ :coordination_url => 'redis://:gnocchi@127.0.0.1:6379/'
+ )
+ is_expected.to contain_class('gnocchi::storage::file')
+ }
+ end
+
+ context 'with step 4 with ceph backend' do
+ let(:params) { {
+ :step => 4,
+ :gnocchi_backend => 'rbd',
+ :gnocchi_redis_password => 'gnocchi',
+ :redis_vip => '127.0.0.1'
+ } }
+
+ it {
+ is_expected.to contain_class('gnocchi::api')
+ is_expected.to contain_class('gnocchi::wsgi::apache')
+ is_expected.to contain_class('gnocchi::storage').with(
+ :coordination_url => 'redis://:gnocchi@127.0.0.1:6379/'
+ )
+ is_expected.to contain_class('gnocchi::storage::ceph')
+ }
+ end
+
+ context 'with step 5 on bootstrap' do
+ let(:params) { {
+ :step => 5,
+ :bootstrap_node => 'node.example.com',
+ :gnocchi_redis_password => 'gnocchi',
+ :redis_vip => '127.0.0.1'
+ } }
+
+ it {
+ is_expected.to contain_class('gnocchi::api')
+ is_expected.to contain_class('gnocchi::wsgi::apache')
+ is_expected.to contain_exec('run gnocchi upgrade with storage').with(
+ :command => 'gnocchi-upgrade --config-file=/etc/gnocchi/gnocchi.conf',
+ :path => ['/usr/bin', '/usr/sbin']
+ )
+ }
+ end
end
diff --git a/spec/classes/tripleo_profile_base_sshd_spec.rb b/spec/classes/tripleo_profile_base_sshd_spec.rb
index e84a1f5..58b271f 100644
--- a/spec/classes/tripleo_profile_base_sshd_spec.rb
+++ b/spec/classes/tripleo_profile_base_sshd_spec.rb
@@ -24,7 +24,23 @@ describe 'tripleo::profile::base::sshd' do
context 'it should do nothing' do
it do
- is_expected.to contain_class('ssh::server')
+ is_expected.to contain_class('ssh::server').with({
+ 'storeconfigs_enabled' => false,
+ 'options' => {}
+ })
+ is_expected.to_not contain_file('/etc/issue')
+ is_expected.to_not contain_file('/etc/issue.net')
+ is_expected.to_not contain_file('/etc/motd')
+ end
+ end
+
+ context 'it should do nothing with empty strings' do
+ let(:params) {{ :bannertext => '', :motd => '' }}
+ it do
+ is_expected.to contain_class('ssh::server').with({
+ 'storeconfigs_enabled' => false,
+ 'options' => {}
+ })
is_expected.to_not contain_file('/etc/issue')
is_expected.to_not contain_file('/etc/issue.net')
is_expected.to_not contain_file('/etc/motd')
@@ -34,6 +50,12 @@ describe 'tripleo::profile::base::sshd' do
context 'with issue and issue.net configured' do
let(:params) {{ :bannertext => 'foo' }}
it do
+ is_expected.to contain_class('ssh::server').with({
+ 'storeconfigs_enabled' => false,
+ 'options' => {
+ 'Banner' => '/etc/issue.net'
+ }
+ })
is_expected.to contain_file('/etc/issue').with({
'content' => 'foo',
'owner' => 'root',
@@ -53,6 +75,12 @@ describe 'tripleo::profile::base::sshd' do
context 'with motd configured' do
let(:params) {{ :motd => 'foo' }}
it do
+ is_expected.to contain_class('ssh::server').with({
+ 'storeconfigs_enabled' => false,
+ 'options' => {
+ 'PrintMotd' => 'yes'
+ }
+ })
is_expected.to contain_file('/etc/motd').with({
'content' => 'foo',
'owner' => 'root',
@@ -63,6 +91,94 @@ describe 'tripleo::profile::base::sshd' do
is_expected.to_not contain_file('/etc/issue.net')
end
end
+
+ context 'with options configured' do
+ let(:params) {{ :options => {'X11Forwarding' => 'no'} }}
+ it do
+ is_expected.to contain_class('ssh::server').with({
+ 'storeconfigs_enabled' => false,
+ 'options' => {
+ 'X11Forwarding' => 'no'
+ }
+ })
+ is_expected.to_not contain_file('/etc/motd')
+ is_expected.to_not contain_file('/etc/issue')
+ is_expected.to_not contain_file('/etc/issue.net')
+ end
+ end
+
+ context 'with motd and issue configured' do
+ let(:params) {{
+ :bannertext => 'foo',
+ :motd => 'foo'
+ }}
+ it do
+ is_expected.to contain_class('ssh::server').with({
+ 'storeconfigs_enabled' => false,
+ 'options' => {
+ 'Banner' => '/etc/issue.net',
+ 'PrintMotd' => 'yes'
+ }
+ })
+ is_expected.to contain_file('/etc/motd').with({
+ 'content' => 'foo',
+ 'owner' => 'root',
+ 'group' => 'root',
+ 'mode' => '0644',
+ })
+ is_expected.to contain_file('/etc/issue').with({
+ 'content' => 'foo',
+ 'owner' => 'root',
+ 'group' => 'root',
+ 'mode' => '0644',
+ })
+ is_expected.to contain_file('/etc/issue.net').with({
+ 'content' => 'foo',
+ 'owner' => 'root',
+ 'group' => 'root',
+ 'mode' => '0644',
+ })
+ end
+ end
+
+ context 'with motd and issue and options configured' do
+ let(:params) {{
+ :bannertext => 'foo',
+ :motd => 'foo',
+ :options => {
+ 'PrintMotd' => 'no', # this should be overridden
+ 'X11Forwarding' => 'no'
+ }
+ }}
+ it do
+ is_expected.to contain_class('ssh::server').with({
+ 'storeconfigs_enabled' => false,
+ 'options' => {
+ 'Banner' => '/etc/issue.net',
+ 'PrintMotd' => 'yes',
+ 'X11Forwarding' => 'no'
+ }
+ })
+ is_expected.to contain_file('/etc/motd').with({
+ 'content' => 'foo',
+ 'owner' => 'root',
+ 'group' => 'root',
+ 'mode' => '0644',
+ })
+ is_expected.to contain_file('/etc/issue').with({
+ 'content' => 'foo',
+ 'owner' => 'root',
+ 'group' => 'root',
+ 'mode' => '0644',
+ })
+ is_expected.to contain_file('/etc/issue.net').with({
+ 'content' => 'foo',
+ 'owner' => 'root',
+ 'group' => 'root',
+ 'mode' => '0644',
+ })
+ end
+ end
end
on_supported_os.each do |os, facts|