Commit 9485862
Changed files (6)
recipes
recipes/user.rb
@@ -1,6 +1,6 @@
-user node['stronglifters']['username'] do
+user node["stronglifters"]["username"] do
supports manage_home: true
comment "rails user"
- home "/home/#{node['stronglifters']['username']}"
+ home "/home/#{node["stronglifters"]["username"]}"
shell "/bin/bash"
end
spec/aws_spec.rb
@@ -1,25 +1,25 @@
describe "stronglifters::aws" do
subject do
ChefSpec::SoloRunner.new do |node|
- node.set['aws']['username'] = username
+ node.set["stronglifters"]["username"] = username
end.converge(described_recipe)
end
let(:username) { FFaker::Internet.user_name }
- it 'installs python-ip' do
- expect(subject).to install_package('python-pip')
+ it "installs python-ip" do
+ expect(subject).to install_package("python-pip")
end
- it 'installs awscli' do
- expect(subject).to run_execute('pip install awscli')
+ it "installs awscli" do
+ expect(subject).to run_execute("pip install awscli")
end
- it 'installs the config file' do
+ it "installs the config file" do
expect(subject).to create_template("/home/#{username}/.aws/config")
end
- it 'installs the credentials file' do
+ it "installs the credentials file" do
expect(subject).to create_template("/home/#{username}/.aws/credentials")
end
end
spec/default_spec.rb
@@ -1,42 +1,13 @@
-describe 'stronglifters::default' do
+describe "stronglifters::default" do
subject do
ChefSpec::SoloRunner.new do |node|
+ node.set["stronglifters"]["packages"] = packages
end.converge(described_recipe)
end
- let(:packages) do
- [
- "curl",
- "libcurl3",
- "libcurl3-gnutls",
- "libcurl4-openssl-dev",
- "git-core",
- "python-software-properties",
- "build-essential",
- "tklib",
- "zlib1g-dev",
- "libssl-dev",
- "libxml2",
- "libxml2-dev",
- "libxslt1-dev",
- "gawk",
- "libreadline6-dev",
- "libyaml-dev",
- "autoconf",
- "libgdbm-dev",
- "libncurses5-dev",
- "automake",
- "libtool",
- "bison",
- "pkg-config",
- "libffi-dev",
- "vim",
- ]
- end
+ let(:packages) { [ "vim" ] }
- it 'installs the base packages' do
- packages.each do |package|
- expect(subject).to install_package(package)
- end
+ it "installs the base packages" do
+ expect(subject).to install_package(packages)
end
end
spec/nginx_spec.rb
@@ -1,69 +1,49 @@
-describe 'stronglifters::nginx' do
+describe "stronglifters::nginx" do
let(:domain) { "www.example.com" }
- let(:chef_run) do
+ subject do
ChefSpec::SoloRunner.new do |node|
- node.set['nginx']['domain'] = domain
- node.set['lsb']['codename'] = 'trusty'
+ node.set["nginx"]["domain"] = domain
end.converge(described_recipe)
end
- it 'installs nginx' do
- expect(chef_run).to install_package("nginx")
+ it "installs nginx" do
+ expect(subject).to install_package("nginx")
end
- it 'creates a directory for the ssl certificates' do
- expect(chef_run).to create_directory('/etc/nginx/ssl')
- .with_owner('root')
- .with_group('root')
- .with_mode('0644')
+ it "creates a directory for the ssl certificates" do
+ expect(subject).to create_directory("/etc/nginx/ssl")
end
- it 'copies the ssl certificate' do
- expect(chef_run).to create_template("/etc/nginx/ssl/#{domain}.crt")
- .with_mode("0644")
+ it "copies the ssl certificate" do
+ expect(subject).to create_template("/etc/nginx/ssl/#{domain}.crt")
end
- it 'copies the ssl private key' do
- expect(chef_run).to create_template("/etc/nginx/ssl/#{domain}.key")
- .with_mode("0644")
+ it "copies the ssl private key" do
+ expect(subject).to create_template("/etc/nginx/ssl/#{domain}.key")
end
- it 'copies over the blacklist file' do
- expect(chef_run).to create_cookbook_file("/etc/nginx/conf.d/blacklist.conf")
- .with_mode("0644")
+ it "adds the configuration for the website" do
+ expect(subject).to create_template("/etc/nginx/nginx.conf")
end
- it 'adds the configuration for the website' do
- expect(chef_run).to create_template("/etc/nginx/sites-available/#{domain}")
- .with_mode("0644")
+ it "restarts nginx" do
+ resource = subject.template("/etc/nginx/nginx.conf")
+ expect(resource).to notify("service[nginx]").to(:restart).delayed
end
- it 'restarts nginxj' do
- resource = chef_run.template("/etc/nginx/sites-available/#{domain}")
- expect(resource).to notify('service[nginx]').to(:restart).delayed
+ it "starts nginx" do
+ expect(subject).to start_service("nginx")
end
- it 'starts nginx' do
- expect(chef_run).to start_service('nginx')
+ it "installs logrotate" do
+ expect(subject).to install_package("logrotate")
end
- it 'creates a symlink to the sites-enabled directory' do
- expect(chef_run).to create_link("/etc/nginx/sites-enabled/#{domain}")
+ it "creates the log directory for nginx" do
+ expect(subject).to create_directory("/var/log/nginx")
end
- it 'deletes the default website' do
- expect(chef_run).to delete_file("/etc/nginx/sites-enabled/default")
- end
-
- it 'installs logrotate' do
- expect(chef_run).to install_package('logrotate')
- end
-
- it 'creates the log directory for nginx' do
- expect(chef_run).to create_directory('/var/log/nginx').with_mode('0755')
- end
-
- it 'adds the logrotate config for rotating nginx logs' do
- expect(chef_run).to create_template("/etc/logrotate.d/nginx")
+ it "adds the logrotate config for rotating nginx logs" do
+ expect(subject).to create_template("/etc/logrotate.d/nginx")
end
end
spec/spec_helper.rb
@@ -1,94 +1,17 @@
-# This file was generated by the `rspec --init` command. Conventionally, all
-# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
-# The generated `.rspec` file contains `--require spec_helper` which will cause
-# this file to always be loaded, without a need to explicitly require it in any
-# files.
-#
-# Given that it is always loaded, you are encouraged to keep this file as
-# light-weight as possible. Requiring heavyweight dependencies from this file
-# will add to the boot time of your test suite on EVERY test run, even for an
-# individual file that may not need all of that loaded. Instead, consider making
-# a separate helper file that requires the additional dependencies and performs
-# the additional setup, and require it from the spec files that actually need
-# it.
-require 'chefspec'
-require 'chefspec/berkshelf'
-require 'ffaker'
+require "chefspec"
+require "chefspec/berkshelf"
+require "ffaker"
-# The `.rspec` file also contains a few flags that are not defaults but that
-# users commonly want.
-#
-# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
RSpec.configure do |config|
- # rspec-expectations config goes here. You can use an alternate
- # assertion/expectation library such as wrong or the stdlib/minitest
- # assertions if you prefer.
config.expect_with :rspec do |expectations|
- # This option will default to `true` in RSpec 4. It makes the `description`
- # and `failure_message` of custom matchers include text for helper methods
- # defined using `chain`, e.g.:
- # be_bigger_than(2).and_smaller_than(4).description
- # # => "be bigger than 2 and smaller than 4"
- # ...rather than:
- # # => "be bigger than 2"
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end
-
- # rspec-mocks config goes here. You can use an alternate test double
- # library (such as bogus or mocha) by changing the `mock_with` option here.
config.mock_with :rspec do |mocks|
- # Prevents you from mocking or stubbing a method that does not exist on
- # a real object. This is generally recommended, and will default to
- # `true` in RSpec 4.
mocks.verify_partial_doubles = true
end
-
-# The settings below are suggested to provide a good initial experience
-# with RSpec, but feel free to customize to your heart's content.
-=begin
- # These two settings work together to allow you to limit a spec run
- # to individual examples or groups you care about by tagging them with
- # `:focus` metadata. When nothing is tagged with `:focus`, all examples
- # get run.
config.filter_run :focus
config.run_all_when_everything_filtered = true
-
- # Limits the available syntax to the non-monkey patched syntax that is
- # recommended. For more details, see:
- # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
- # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
- # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
- config.disable_monkey_patching!
-
- # This setting enables warnings. It's recommended, but in some cases may
- # be too noisy due to issues in dependencies.
- config.warnings = true
-
- # Many RSpec users commonly either run the entire suite or an individual
- # file, and it's useful to allow more verbose output when running an
- # individual spec file.
- if config.files_to_run.one?
- # Use the documentation formatter for detailed output,
- # unless a formatter has already been configured
- # (e.g. via a command-line flag).
- config.default_formatter = 'doc'
- end
-
- # Print the 10 slowest examples and example groups at the
- # end of the spec run, to help surface which specs are running
- # particularly slow.
- config.profile_examples = 10
-
- # Run specs in random order to surface order dependencies. If you find an
- # order dependency and want to debug it, you can fix the order by providing
- # the seed, which is printed after each run.
- # --seed 1234
+ config.warnings = false
config.order = :random
-
- # Seed global randomization in this process using the `--seed` CLI option.
- # Setting this allows you to use `--seed` to deterministically reproduce
- # test failures related to randomization by passing the same `--seed` value
- # as the one that triggered the failure.
Kernel.srand config.seed
-=end
end
spec/user_spec.rb
@@ -1,13 +1,13 @@
describe "stronglifters::user" do
subject do
ChefSpec::SoloRunner.new do |node|
- node.set['user']['username'] = username
+ node.set["stronglifters"]["username"] = username
end.converge(described_recipe)
end
let(:username) { FFaker::Internet.user_name }
- it 'creates the rails user' do
+ it "creates the rails user" do
expect(subject).to create_user(username)
end
end