summaryrefslogtreecommitdiff
path: root/chef/stories
diff options
context:
space:
mode:
Diffstat (limited to 'chef/stories')
-rw-r--r--chef/stories/chef-client26
-rw-r--r--chef/stories/chef-client.rb46
-rw-r--r--chef/stories/story_helper.rb32
3 files changed, 104 insertions, 0 deletions
diff --git a/chef/stories/chef-client b/chef/stories/chef-client
new file mode 100644
index 0000000000..93b8656268
--- /dev/null
+++ b/chef/stories/chef-client
@@ -0,0 +1,26 @@
+Story: Applying a meal with chef-client
+
+ As a systems administrator
+ I want to configure a system
+ So that I can drink more beer
+
+ Scenario: The client should be rejected if the node is not verified
+ Given the node 'latte'
+ When it runs the chef-client
+ Then it should register with the Chef Server
+
+ Scenario: The node registers for an OpenID
+
+ Given the node 'latte'
+ When it runs the chef-client
+ Then it should register with the Chef Server
+ And CouchDB should have a 'openid_registration_latte' document
+
+ Scenario: An administrator validates the OpenID Registration
+
+ Given the user 'openid.hjksolutions.com/adam'
+ And the openid registration for 'latte'
+ When the user validates the registration
+ Then the registration validation should be true
+
+
diff --git a/chef/stories/chef-client.rb b/chef/stories/chef-client.rb
new file mode 100644
index 0000000000..3e07b8a847
--- /dev/null
+++ b/chef/stories/chef-client.rb
@@ -0,0 +1,46 @@
+#
+# Author:: Adam Jacob (<adam@hjksolutions.com>)
+# Copyright:: Copyright (c) 2008 HJK Solutions, LLC
+# License:: Apache License, Version 2.0
+#
+# 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.
+#
+
+require File.expand_path(File.join(File.dirname(__FILE__), "story_helper"))
+
+steps_for(:chef_client) do
+ # Given the node 'latte'
+ Given("the node '$node'") do |node|
+ @client = Chef::Client.new
+ @client.build_node(node)
+ end
+
+ # Given it has not registered before
+ Given("it has not registered before") do
+ Chef::FileStore.load("registration", @client.safe_name)
+ end
+
+ # When it runs the chef-client
+
+ # Then it should register with the Chef Server
+
+ # Then CouchDB should have a 'openid_registration_latte' document
+
+ # Then the registration validation should be 'false'
+
+end
+
+with_steps_for(:chef_client) do
+ create_couchdb_database
+ run File.join(File.dirname(__FILE__), "chef-client")
+end \ No newline at end of file
diff --git a/chef/stories/story_helper.rb b/chef/stories/story_helper.rb
new file mode 100644
index 0000000000..cb0d1eb375
--- /dev/null
+++ b/chef/stories/story_helper.rb
@@ -0,0 +1,32 @@
+#
+# Author:: Adam Jacob (<adam@hjksolutions.com>)
+# Copyright:: Copyright (c) 2008 HJK Solutions, LLC
+# License:: Apache License, Version 2.0
+#
+# 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.
+#
+
+require 'rubygems'
+require 'spec/story'
+
+require File.join(File.dirname(__FILE__), "..", "lib", "chef")
+Dir[File.join(File.dirname(__FILE__), 'lib', '**', '*.rb')].sort.each { |lib| require lib }
+
+Chef::Config.log_level(:fatal)
+Chef::Config[:couchdb_database] = "chef_test"
+
+def create_couchdb_database
+ c = Chef::CouchDB.new
+ c.create_db
+end
+