summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorJohn Keiser <jkeiser@opscode.com>2014-07-23 20:24:32 -0600
committerJohn Keiser <jkeiser@opscode.com>2014-08-22 09:20:47 -0700
commitf72e479fb2850a653b72a9bce59f5b65831b1efe (patch)
tree4402b2613b7e77f4ad9c79661ef2193db65bcb1c /spec
parent6319b1edf1aed055704664be4909336769ac2e83 (diff)
downloadchef-zero-f72e479fb2850a653b72a9bce59f5b65831b1efe.tar.gz
Make oc-chef-pedant run
Diffstat (limited to 'spec')
-rw-r--r--spec/run_oc_pedant.rb50
-rw-r--r--spec/run_pedant.rb (renamed from spec/run.rb)0
-rw-r--r--spec/support/oc_pedant.rb127
3 files changed, 177 insertions, 0 deletions
diff --git a/spec/run_oc_pedant.rb b/spec/run_oc_pedant.rb
new file mode 100644
index 0000000..4566f58
--- /dev/null
+++ b/spec/run_oc_pedant.rb
@@ -0,0 +1,50 @@
+#!/usr/bin/env ruby
+require 'bundler'
+require 'bundler/setup'
+
+require 'chef_zero/server'
+require 'rspec/core'
+
+tmpdir = nil
+
+begin
+ if ENV['FILE_STORE']
+ require 'tmpdir'
+ require 'chef_zero/data_store/raw_file_store'
+ tmpdir = Dir.mktmpdir
+ data_store = ChefZero::DataStore::RawFileStore.new(tmpdir, true)
+ data_store = ChefZero::DataStore::DefaultFacade.new(data_store)
+ server = ChefZero::Server.new(:port => 8889, :single_org => false, :data_store => data_store)
+ server.start_background
+
+ else
+ server = ChefZero::Server.new(:port => 8889, :single_org => false, :log_level => :debug)
+ server.start_background
+ end
+
+ require 'rspec/core'
+ require 'pedant'
+ require 'pedant/opensource/platform'
+ require 'pedant/multitenant'
+ require 'pedant/organization'
+
+ #Pedant::Config.rerun = true
+
+ Pedant.config.suite = 'api'
+ Pedant.config[:config_file] = 'spec/support/oc_pedant.rb'
+ Pedant.setup([
+ '--skip-knife',
+ '--skip-validation',
+ '--skip-authentication',
+ '--skip-authorization',
+ '--skip-omnibus'
+ ])
+
+ result = RSpec::Core::Runner.run(Pedant.config.rspec_args)
+
+ server.stop if server.running?
+ensure
+ FileUtils.remove_entry_secure(tmpdir) if tmpdir
+end
+
+exit(result)
diff --git a/spec/run.rb b/spec/run_pedant.rb
index f2fdf0e..f2fdf0e 100644
--- a/spec/run.rb
+++ b/spec/run_pedant.rb
diff --git a/spec/support/oc_pedant.rb b/spec/support/oc_pedant.rb
new file mode 100644
index 0000000..3116dab
--- /dev/null
+++ b/spec/support/oc_pedant.rb
@@ -0,0 +1,127 @@
+# Copyright: Copyright (c) 2012 Opscode, Inc.
+# 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.
+
+# This annotated Pedant configuration file details the various
+# configuration settings available to you. It is separate from the
+# actual Pedant::Config class because not all settings have sane
+# defaults, and not all settings are appropriate in all settings.
+
+################################################################################
+# You MUST specify the address of the server the API requests will be
+# sent to. Only specify protocol, hostname, and port.
+chef_server 'http://127.0.0.1:8889'
+
+# If you are doing development testing, you can specify the address of
+# the Solr server. The presence of this parameter will enable tests
+# to force commits to Solr, greatly decreasing the amout of time
+# needed for testing the search endpoint. This is only an
+# optimization for development! If you are testing a "live" Chef
+# Server, or otherwise do not have access to the Solr server from your
+# testing location, you should not specify a value for this parameter.
+# The tests will still run, albeit slower, as they will now need to
+# poll for a period to ensure they are querying committed results.
+#search_server "http://localhost:8983"
+
+# Related to the 'search_server' parameter, this specifies the maximum
+# amout of time (in seconds) that search endpoint requests should be
+# retried before giving up. If not explicitly set, it will default to
+# 65 seconds; only set it if you know that your Solr commit interval
+# differs significantly from this.
+maximum_search_time 0
+
+# OSC sends erchef a host header with a port, so this option needs
+# # to be enabled for Pedant tests to work correctly
+explicit_port_url true
+
+# We're starting to break tests up into groups based on different
+# criteria. The proper API tests (the results of which are viewable
+# to OPC customers) should be the only ones run by Pedant embedded in
+# OPC installs. There are other specs that help us keep track of API
+# cruft that we want to come back and fix later; these shouldn't be
+# viewable to customers, but we should be able to run them in
+# development and CI environments. If this parameter is missing or
+# explicitly `false` only the customer-friendly tests will be run.
+#
+# This is mainly here for documentation purposes, since the
+# command-line `opscode-pedant` utility ultimately determines this
+# value.
+include_internal false
+
+# This is the bit that is different from pedant.rb
+org({:name => "pedant-testorg",
+ :create_me => true})
+internal_account_url chef_server
+delete_org true
+
+# Test users. The five users specified below are required; their
+# names (:user, :non_org_user, etc.) are indicative of their role
+# within the tests. All users must have a ':name' key. If they have
+# a ':create_me' key, Pedant will create these users for you. If you
+# are using pre-existing users, you must supply a ':key_file' key,
+# which should be the fully-qualified path /on the machine Pedant is
+# running on/ to a private key for that user.
+key = 'spec/support/stickywicket.pem'
+superuser_name 'admin'
+superuser_key key
+webui_key key
+
+# Set the platform_class
+platform_class Pedant::MultiTenantPlatform
+
+requestors({
+ :clients => {
+ # The the admin user, for the purposes of getting things rolling
+ :admin => {
+ :name => "pedant_admin_client",
+ :create_me => true,
+ :create_knife => true,
+ :admin => true
+ },
+ :non_admin => {
+ :name => 'pedant_client',
+ :create_me => true,
+ :create_knife => true
+ },
+ :bad => {
+ :name => 'bad_client',
+ :bogus => true
+ }
+ },
+ :users => {
+ :admin => {
+ :name => "admin",
+ :key_file => key,
+ :create_me => false,
+ :create_knife => false,
+ :admin => true
+ },
+ :non_admin => {
+ :name => "pedant_non_admin_user",
+ :create_me => true,
+ :create_knife => true,
+ :admin => false
+ },
+ # A user for Knife tests. A knife.rb and key files will be set up
+ # for this user
+ :knife_user => {
+ :name => "knifey",
+ :create_me => true,
+ :create_knife => true
+ }
+ }
+})
+
+self[:tags] = [:validation, :authentication, :authorization]
+verify_error_messages false