From 1f65848dff080baa8b4cc78c5476e74e3835e3d3 Mon Sep 17 00:00:00 2001 From: Eric Herot Date: Thu, 18 Sep 2014 10:58:35 -0400 Subject: [PATCH 1/2] Set up test-kitchen+berkshelf --- .gitignore | 20 +++++++++++ .kitchen.yml | 15 +++++++++ Berksfile | 3 ++ Gemfile | 10 ++++++ Thorfile | 12 +++++++ chefignore | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 154 insertions(+) create mode 100644 .gitignore create mode 100644 .kitchen.yml create mode 100644 Berksfile create mode 100644 Gemfile create mode 100644 Thorfile create mode 100644 chefignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cbccf1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +*~ +*# +.#* +\#*# +.*.sw[a-z] +*.un~ +pkg/ + +# Berkshelf +.vagrant +/cookbooks +Berksfile.lock + +# Bundler +Gemfile.lock +bin/* +.bundle/* + +.kitchen/ +.kitchen.local.yml diff --git a/.kitchen.yml b/.kitchen.yml new file mode 100644 index 0000000..f3da363 --- /dev/null +++ b/.kitchen.yml @@ -0,0 +1,15 @@ +--- +driver: + name: vagrant + +provisioner: + name: chef_solo + +platforms: + - name: ubuntu-12.04 + +suites: + - name: default + run_list: + - recipe[chef-sentry-handler::default] + attributes: diff --git a/Berksfile b/Berksfile new file mode 100644 index 0000000..ab60e37 --- /dev/null +++ b/Berksfile @@ -0,0 +1,3 @@ +source 'https://supermarket.getchef.com' + +metadata diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..af9809b --- /dev/null +++ b/Gemfile @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +group :development do + gem 'berkshelf' +end + +group :integration do + gem 'test-kitchen' + gem 'kitchen-vagrant' +end diff --git a/Thorfile b/Thorfile new file mode 100644 index 0000000..b23ee16 --- /dev/null +++ b/Thorfile @@ -0,0 +1,12 @@ +# encoding: utf-8 + +require 'bundler' +require 'bundler/setup' +require 'berkshelf/thor' + +begin + require 'kitchen/thor_tasks' + Kitchen::ThorTasks.new +rescue LoadError + puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV['CI'] +end diff --git a/chefignore b/chefignore new file mode 100644 index 0000000..138a808 --- /dev/null +++ b/chefignore @@ -0,0 +1,94 @@ +# Put files/directories that should be ignored in this file when uploading +# or sharing to the community site. +# Lines that start with '# ' are comments. + +# OS generated files # +###################### +.DS_Store +Icon? +nohup.out +ehthumbs.db +Thumbs.db + +# SASS # +######## +.sass-cache + +# EDITORS # +########### +\#* +.#* +*~ +*.sw[a-z] +*.bak +REVISION +TAGS* +tmtags +*_flymake.* +*_flymake +*.tmproj +.project +.settings +mkmf.log + +## COMPILED ## +############## +a.out +*.o +*.pyc +*.so +*.com +*.class +*.dll +*.exe +*/rdoc/ + +# Testing # +########### +.watchr +.rspec +spec/* +spec/fixtures/* +test/* +features/* +Guardfile +Procfile + +# SCM # +####### +.git +*/.git +.gitignore +.gitmodules +.gitconfig +.gitattributes +.svn +*/.bzr/* +*/.hg/* +*/.svn/* + +# Berkshelf # +############# +cookbooks/* +tmp + +# Cookbooks # +############# +CONTRIBUTING +CHANGELOG* + +# Strainer # +############ +Colanderfile +Strainerfile +.colander +.strainer + +# Vagrant # +########### +.vagrant +Vagrantfile + +# Travis # +########## +.travis.yml From 1ddb63b7db279949c39f1cffba7e5d71a56b4753 Mon Sep 17 00:00:00 2001 From: Eric Herot Date: Thu, 18 Sep 2014 12:24:11 -0400 Subject: [PATCH 2/2] Add serverspec test code --- .kitchen.yml | 2 +- Berksfile | 5 ++++ .../chef-sentry-handler-test/README.md | 0 .../attributes/default.rb | 1 + .../chef-sentry-handler-test/metadata.rb | 9 +++++++ .../recipes/default.rb | 1 + .../default/serverspec/default_spec.rb | 27 +++++++++++++++++++ .../default/serverspec/spec_helper.rb | 11 ++++++++ 8 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 test/cookbook/chef-sentry-handler-test/README.md create mode 100644 test/cookbook/chef-sentry-handler-test/attributes/default.rb create mode 100644 test/cookbook/chef-sentry-handler-test/metadata.rb create mode 100644 test/cookbook/chef-sentry-handler-test/recipes/default.rb create mode 100644 test/integration/default/serverspec/default_spec.rb create mode 100644 test/integration/default/serverspec/spec_helper.rb diff --git a/.kitchen.yml b/.kitchen.yml index f3da363..6de5ee5 100644 --- a/.kitchen.yml +++ b/.kitchen.yml @@ -11,5 +11,5 @@ platforms: suites: - name: default run_list: - - recipe[chef-sentry-handler::default] + - recipe[chef-sentry-handler-test::default] attributes: diff --git a/Berksfile b/Berksfile index ab60e37..ef5f1ef 100644 --- a/Berksfile +++ b/Berksfile @@ -1,3 +1,8 @@ source 'https://supermarket.getchef.com' metadata + +group :test do + cookbook 'chef-sentry-handler-test', + path: './test/cookbook/chef-sentry-handler-test' +end diff --git a/test/cookbook/chef-sentry-handler-test/README.md b/test/cookbook/chef-sentry-handler-test/README.md new file mode 100644 index 0000000..e69de29 diff --git a/test/cookbook/chef-sentry-handler-test/attributes/default.rb b/test/cookbook/chef-sentry-handler-test/attributes/default.rb new file mode 100644 index 0000000..6c7e4e4 --- /dev/null +++ b/test/cookbook/chef-sentry-handler-test/attributes/default.rb @@ -0,0 +1 @@ +set['sentry']['dsn'] = 'https://user:password@app.getsentry.com/' diff --git a/test/cookbook/chef-sentry-handler-test/metadata.rb b/test/cookbook/chef-sentry-handler-test/metadata.rb new file mode 100644 index 0000000..b684b39 --- /dev/null +++ b/test/cookbook/chef-sentry-handler-test/metadata.rb @@ -0,0 +1,9 @@ +name 'chef-sentry-handler-test' +maintainer 'EverTrue' +maintainer_email 'devops@evertrue.com' +license 'Apache 2.0' +description 'Test cookbook for the chef-sentry-handler cookbook' +long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) +version '1.0.0' + +depends 'chef-sentry-handler' diff --git a/test/cookbook/chef-sentry-handler-test/recipes/default.rb b/test/cookbook/chef-sentry-handler-test/recipes/default.rb new file mode 100644 index 0000000..3f4111f --- /dev/null +++ b/test/cookbook/chef-sentry-handler-test/recipes/default.rb @@ -0,0 +1 @@ +include_recipe 'chef-sentry-handler::default' diff --git a/test/integration/default/serverspec/default_spec.rb b/test/integration/default/serverspec/default_spec.rb new file mode 100644 index 0000000..6f655ea --- /dev/null +++ b/test/integration/default/serverspec/default_spec.rb @@ -0,0 +1,27 @@ +require 'spec_helper' + +describe 'chef-sentry-handler::default' do + describe file('/tmp/kitchen/handlers') do + it { should be_directory } + it { should be_mode 755 } + it { should be_owned_by 'root' } + it { should be_grouped_into 'root' } + end + + describe file('/tmp/kitchen/handlers/sentry.rb') do + it { should be_file } + it { should be_mode 644 } + it { should be_owned_by 'root' } + it { should be_grouped_into 'root' } + end + + describe file('/opt/chef/embedded/lib/ruby/gems/' \ + '1.9.1/gems/uuidtools-2.1.5') do + it { should be_directory } + end + + describe file('/opt/chef/embedded/lib/ruby/gems/' \ + '1.9.1/gems/sentry-raven-0.9.4') do + it { should be_directory } + end +end diff --git a/test/integration/default/serverspec/spec_helper.rb b/test/integration/default/serverspec/spec_helper.rb new file mode 100644 index 0000000..24c9ada --- /dev/null +++ b/test/integration/default/serverspec/spec_helper.rb @@ -0,0 +1,11 @@ +require 'serverspec' +require 'pathname' + +include Serverspec::Helper::Exec +include Serverspec::Helper::DetectOS + +RSpec.configure do |c| + c.before :all do + c.path = '/sbin:/usr/sbin' + end +end