Cover by Stephen Nelson-Smith

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

O'Reilly logo

Making Tests Pass

So, let’s start the process of iterating over the steps, and making them pass. Open up the step definitions in your favorite editor, and locate the steps that correspond to our first scenario. Let’s remind ourselves of the scenario:

Scenario: Users can connect to server via ssh key
  Given a newly bootstrapped server
  When the technical users recipe is applied
  Then a user should be able to ssh to the server

In an ideal world, I’d take you through each step one fail at a time, iterating over the development of the step definitions. On account of space and time constraints, this time I’m going to show you how I’d write the tests, and talk you through it:

Given /^a newly bootstrapped server$/ do
  create_server("teamserver", "192.168.20.20")
end

When /^the technical users recipe is applied$/ do
  set_run_list('teamserver', 'recipe[users::techies]')
  run_chef('teamserver')
end

When /^the technical users recipe is applied$/ do
  set_run_list('teamserver', 'recipe[users::techies]')
  run_chef('teamserver')
end

Let’s look at them one at a time:

Given /^a newly bootstrapped server$/ do
  create_server("teamserver", "192.168.20.20")
end

We’re using some Cucumber-Chef helper code here—create_server() is a method that is always available that will spin up a new Linux container, managed by Chef. At the time of writing, it’s necessary to specify the IP of the machine, but in a future release I anticipate that the test lab will provide DHCP services. For now, you need to specify an IP in the 192.168.20.0/24 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required