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 ...
Get Test-Driven Infrastructure with Chef now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.