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')
endLet’s look at them one at a time:
Given /^a newly bootstrapped server$/ do
create_server("teamserver", "192.168.20.20")
endWe’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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access