Integration Tests (cucumber):

The integration tests require some additional software on top of what was
installed for the unit tests. Most of the integration tests are for testing
the Chef Server API interactions, so a Chef Server environment needs to be
installed.

Non-Ruby software:

Java

CouchDB (0.10+)

RabbitMQ (1.7.2+)

These are available in most common distribution packaging systems,
including Debian 6.0+ and Ubuntu 10.04+. Java is installed on Mac OS X by
default; CouchDB and RabbitMQ are available in homebrew.

Make sure the RubyGems for the Chef Server are installed (should be from
the +rake install+ earlier):

chef-expander

chef-server

chef-server-api

chef-server-webui

chef-solr

Starting the Environment:

Once everything is installed, run the dev:features rake task. Since the
features do integration testing, root access may be required.

(sudo) rake dev:features

This rake task will do the following:

Start CouchDB, running on port 5984

Start and configure RabbitMQ for Chef, running on port 5672

Install Chef SOLR data and start chef-solr, running on port 8983

Start chef-server-api on port 4000

Start chef-server-webui on port 4001

Start chef-expander, the clustered search index broker

You'll want to leave this terminal running the dev environment.

Web Interface:

With the dev environment running, you can now access the web interface via
localhost:4000/. The default login is
admin / p@ssw0rd1.

Integration testing:

We test integration with Cucumber. Normally, you'll just run:

rake features

In a second terminal, to run all the feature tests. Other feature tests are
available as well, see:

LICENSE:

Licensed under the Apache License, Version 2.0 (the “License”); you may not
use this file except in compliance with the License. You may obtain a copy
of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.