From 8989de17fad5d7bdeea96748346e3330168a7873 Mon Sep 17 00:00:00 2001 From: Ulrich Habel Date: Thu, 26 Sep 2013 20:02:54 +0200 Subject: [PATCH] Added rspec test infrastructure, travis-ci, fixed typo --- .fixtures.yml | 3 ++ .travis.yml | 19 +++++++ Gemfile | 11 ++++ Rakefile | 10 ++++ manifests/create.pp | 4 +- spec/defines/nssdb_add_cert_and_key_spec.rb | 29 ++++++++++ spec/defines/nssdb_create_spec.rb | 60 +++++++++++++++++++++ spec/spec_helper.rb | 2 + 8 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 .fixtures.yml create mode 100644 .travis.yml create mode 100644 Gemfile create mode 100644 Rakefile create mode 100644 spec/defines/nssdb_add_cert_and_key_spec.rb create mode 100644 spec/defines/nssdb_create_spec.rb create mode 100644 spec/spec_helper.rb diff --git a/.fixtures.yml b/.fixtures.yml new file mode 100644 index 0000000..0b550a1 --- /dev/null +++ b/.fixtures.yml @@ -0,0 +1,3 @@ +fixtures: + symlinks: + nssdb: "#{source_dir}" \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..05a29ac --- /dev/null +++ b/.travis.yml @@ -0,0 +1,19 @@ +language: ruby +rvm: + - 1.8.7 + - 1.9.3 + - 2.0.0 + - ruby-head +script: "rake all" +branches: + only: + - rspec_infrastructure +env: + - PUPPET_GEM_VERSION="~> 2.7" + - PUPPET_GEM_VERSION="~> 3.3" +matrix: + allow_failures: + - rvm: ruby-head +notifications: + email: false + \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..28f9df7 --- /dev/null +++ b/Gemfile @@ -0,0 +1,11 @@ +source :rubygems + +group :development, :test do + gem 'puppetlabs_spec_helper', :require => false +end + +if puppetversion = ENV['PUPPET_GEM_VERSION'] + gem 'puppet', puppetversion, :require => false +else + gem 'puppet', :require => false +end diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..1ef5284 --- /dev/null +++ b/Rakefile @@ -0,0 +1,10 @@ +require 'rubygems' +require 'puppetlabs_spec_helper/rake_tasks' +require 'rake/clean' + +CLEAN.include('spec/fixtures/', 'spec/reports') + +task :spec => [:spec_prep] + +desc "Run all tasks (spec)" +task :all => [ :spec ] diff --git a/manifests/create.pp b/manifests/create.pp index 05d3c13..32c49ff 100644 --- a/manifests/create.pp +++ b/manifests/create.pp @@ -21,8 +21,8 @@ # $password must be set # # Sample Usage: -# -# secure::nssdb {'test': +# +# nssdb::create {'test': # owner_id => 'qpidd', # group_id => 'qpidd', # password => 'test'} diff --git a/spec/defines/nssdb_add_cert_and_key_spec.rb b/spec/defines/nssdb_add_cert_and_key_spec.rb new file mode 100644 index 0000000..e4b3e9b --- /dev/null +++ b/spec/defines/nssdb_add_cert_and_key_spec.rb @@ -0,0 +1,29 @@ +require 'spec_helper' + +describe 'nssdb::add_cert_and_key', :type => :define do + let(:title) { 'qpidd' } + let(:params) do { + :nickname => 'Server-Cert', + :cert => '/tmp/server.cert', + :key => '/tmp/server.key', + :basedir => '/obsolete' + } + end + + context 'generate_pkcs12' do + it{ should contain_exec('generate_pkcs12').with( + :command => %r{-in /tmp/server.cert -inkey /tmp/server.key.*file:/obsolete/qpidd.*out \'/obsolete/qpidd/qpidd.p12\' -name Server-Cert}, + :require => [ 'File[/obsolete/qpidd/password.conf]', + 'File[/obsolete/qpidd/cert8.db]', + 'Package[openssl]' ], + :subscribe => 'File[/obsolete/qpidd/password.conf]' + )} + end + + context 'load_pkcs12' do + it{ should contain_exec('load_pkcs12').with( + :command => %r{-i \'/obsolete/qpidd/qpidd.p12\' -d \'/obsolete/qpidd\' -w \'/obsolete/qpidd.*-k \'/obsolete/qpidd} + )} + end + +end diff --git a/spec/defines/nssdb_create_spec.rb b/spec/defines/nssdb_create_spec.rb new file mode 100644 index 0000000..bf95fa9 --- /dev/null +++ b/spec/defines/nssdb_create_spec.rb @@ -0,0 +1,60 @@ +require 'spec_helper' + +describe 'nssdb::create', :type => :define do + let(:title) { 'test' } + let(:params) do { + :owner_id => 'nobody', + :group_id => 'nobody', + :password => 'secret', + :basedir => '/obsolete', + :cacert => '/ca.crt', + :canickname => 'ca', + :catrust => 'CTu' + } + end + + context 'nssdb directory' do + it{ should contain_file('/obsolete/test').with( + :owner => 'nobody', + :group => 'nobody' + )} + end + + context 'password file' do + it{ should contain_file('/obsolete/test/password.conf').with( + :owner => 'nobody', + :group => 'nobody', + :content => 'secret', + :require => 'File[/obsolete/test]' + )} + end + + context 'database files' do + databases = ['cert8.db', 'key3.db', 'secmod.db'] + databases.each do |db| + it{ should contain_file('/obsolete/test/' + db).with( + :owner => 'nobody', + :group => 'nobody', + :require => [ 'File[/obsolete/test/password.conf]', 'Exec[create_nss_db]'] + )} + end + end + + context 'create nss db' do + it{ should contain_exec('create_nss_db').with( + :command => %r{-d /obsolete/test -f /obsolete/test}, + :creates => [ '/obsolete/test/cert8.db', '/obsolete/test/key3.db', '/obsolete/test/secmod.db'], + :require => [ 'File[/obsolete/test]', + 'File[/obsolete/test/password.conf]', + 'Package[nss-tools]' ] + )} + end + + context 'add ca cert' do + it{ should contain_exec('add_ca_cert').with( + :command => %r{-n ca -d /obsolete/test -t CTu.*-i /ca.crt}, + :onlyif => %r{-e /ca.crt} + )} + end + +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..dc7e9f4 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,2 @@ +require 'rubygems' +require 'puppetlabs_spec_helper/module_spec_helper'