diff options
-rw-r--r-- | Rakefile | 6 | ||||
-rw-r--r-- | gemfiles/oc-chef-pedant.gemfile | 7 | ||||
-rw-r--r-- | spec/run_oc_pedant.rb | 50 | ||||
-rw-r--r-- | spec/run_pedant.rb (renamed from spec/run.rb) | 0 | ||||
-rw-r--r-- | spec/support/oc_pedant.rb | 127 |
5 files changed, 189 insertions, 1 deletions
@@ -10,7 +10,11 @@ task :spec do end task :pedant do - require File.expand_path('spec/run') + require File.expand_path('spec/run_pedant') +end + +task :oc_pedant do + require File.expand_path('spec/run_oc_pedant') end task :chef_spec do diff --git a/gemfiles/oc-chef-pedant.gemfile b/gemfiles/oc-chef-pedant.gemfile new file mode 100644 index 0000000..e976578 --- /dev/null +++ b/gemfiles/oc-chef-pedant.gemfile @@ -0,0 +1,7 @@ +source 'https://rubygems.org' +gemspec :path => '../' + +gem 'rest-client', :github => 'opscode/rest-client', :branch => 'lcg/1.6.7-version-lying' +gem 'chef-pedant', :github => 'opscode/chef-pedant', :ref => '989dc539e6518381043039a9e61b759b30d5ae92' +gem 'oc-chef-pedant', :github => 'opscode/oc-chef-pedant' +gem 'chef' :github => 'opscode/chef', :ref => '678b568eb29d8eae51a942e60a7b5e6786d69bdc' 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 |