summaryrefslogtreecommitdiff
path: root/spec/run_oc_pedant.rb
diff options
context:
space:
mode:
authorJordan Running <jr@getchef.com>2016-01-28 16:56:30 -0600
committerJordan Running <jr@getchef.com>2016-02-10 17:06:57 -0600
commitc8b79e62f628bd7dccc63b04313e044b13600841 (patch)
tree17df8584ca268a0e75e7f9e52f5244a3b343cf6c /spec/run_oc_pedant.rb
parent96a82ea1050e1dd360035b760c19faca5678251c (diff)
downloadchef-zero-c8b79e62f628bd7dccc63b04313e044b13600841.tar.gz
Make client keys Pedant specs pass
- Implement client keys in: - ActorKeysEndpoint#get, #post - ActorKeyEndpoint#get - ActorsEndpoint#get, #post - ActorEndpoint#delete, #put, #populate_defaults - OrganizationsEndpoint - #post - Extract validator client creation into method. - Store the public key generated for the validator client in the client_keys store. - OrganizationEndpoint - #delete: Delete the validator client and client keys. - OrganizationUserEndpoint - #get, #delete: Don't retrieve default user public key (now handled by `DataNormalizer.normalize_user`; see below). - SearchEndpoint - Simplify `#search_container`. - RestBase - Fix RestErrorResponse exceptions to report actual `rest_path` instead associated with the failed data store operation instead of `request.rest_path`. - DataNormalizer - Fetch client and user default public_key in `DataNormalizer.normalize_{client,user}` instead of doing this in multiple other places. Requires passing `data_store` as argument. - RestRouter - Clean up logging - Print request methods, paths and bodies more readably for log_level >= INFO. - Pretty-print RestRequest objects (only printed when log_level == DEBUG). - Server - Change default log_level to WARN (to enable logging cleanup above). - Rakefile, spec/run_oc_pedant.rb - Consume RSpec, Pedant options from `ENV['RSPEC_OPTS']`, `ENV['PEDANT_OPTS']` (see `rake -D`). - Consume `ENV['LOG_LEVEL'` (see `rake -D`). - Clean up ChefZero::Server default opts and move duplicated logic to `start_chef_server` method.
Diffstat (limited to 'spec/run_oc_pedant.rb')
-rw-r--r--spec/run_oc_pedant.rb104
1 files changed, 70 insertions, 34 deletions
diff --git a/spec/run_oc_pedant.rb b/spec/run_oc_pedant.rb
index 25672fb..e4e8475 100644
--- a/spec/run_oc_pedant.rb
+++ b/spec/run_oc_pedant.rb
@@ -5,6 +5,42 @@ require 'bundler/setup'
require 'chef_zero/server'
require 'rspec/core'
+# This file runs oc-chef-pedant specs and is invoked by `rake pedant`
+# and other Rake tasks. Run `rake -T` to list tasks.
+#
+# Options for oc-chef-pedant and rspec can be specified via
+# ENV['PEDANT_OPTS'] and ENV['RSPEC_OPTS'], respectively.
+#
+# The log level can be specified via ENV['LOG_LEVEL'].
+#
+# Example:
+#
+# $ PEDANT_OPTS="--focus-users --skip-keys" \
+# > RSPEC_OPTS="--fail-fast --profile 5" \
+# > LOG_LEVEL=debug \
+# > rake pedant
+#
+
+DEFAULT_SERVER_OPTIONS = {
+ port: 8889,
+ single_org: false,
+}.freeze
+
+DEFAULT_LOG_LEVEL = :warn
+
+def log_level
+ return ENV['LOG_LEVEL'].downcase.to_sym if ENV['LOG_LEVEL']
+ return :debug if ENV['DEBUG']
+ DEFAULT_LOG_LEVEL
+end
+
+def start_chef_server(opts={})
+ opts = DEFAULT_SERVER_OPTIONS.merge(opts)
+ opts[:log_level] = log_level
+
+ ChefZero::Server.new(opts).tap {|server| server.start_background }
+end
+
def start_cheffs_server(chef_repo_path)
require 'chef/version'
require 'chef/config'
@@ -34,37 +70,42 @@ def start_cheffs_server(chef_repo_path)
data_store.set(%w(organizations pedant-testorg groups admins), '{ "users": [ "pivotal" ] }')
data_store.set(%w(organizations pedant-testorg groups users), '{ "users": [ "pivotal" ] }')
- server = ChefZero::Server.new(
- port: 8889,
- data_store: data_store,
- single_org: false,
- #log_level: :debug
- )
- server.start_background
- server
+ start_chef_server(data_store: data_store)
+end
+
+def pedant_args_from_env
+ args_from_env('PEDANT_OPTS')
+end
+
+def rspec_args_from_env
+ args_from_env('RSPEC_OPTS')
end
-tmpdir = nil
+def args_from_env(key)
+ return [] unless ENV[key]
+ ENV[key].split
+end
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, false, false)
- server = ChefZero::Server.new(:port => 8889, :single_org => false, :data_store => data_store)
- server.start_background
-
- elsif ENV['CHEF_FS']
- require 'tmpdir'
- tmpdir = Dir.mktmpdir
- server = start_cheffs_server(tmpdir)
+ tmpdir = nil
+ server =
+ 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, false, false)
+
+ start_chef_server(data_store: data_store)
+
+ elsif ENV['CHEF_FS']
+ require 'tmpdir'
+ tmpdir = Dir.mktmpdir
+ start_cheffs_server(tmpdir)
- else
- server = ChefZero::Server.new(:port => 8889, :single_org => false)#, :log_level => :debug)
- server.start_background
- end
+ else
+ start_chef_server
+ end
require 'rspec/core'
require 'pedant'
@@ -104,7 +145,6 @@ begin
# are turned off" - @jkeiser
#
# ...but we're not there yet
- '--skip-client-keys',
'--skip-controls',
'--skip-acl',
@@ -145,14 +185,10 @@ begin
default_skips + chef_fs_skips + %w{ --skip-knife }
end
- pedant_args << "--focus-client-keys"
-
- Pedant.setup(pedant_args)
-
- # fail_fast = []
- fail_fast = ["--fail-fast"]
+ Pedant.setup(pedant_args + pedant_args_from_env)
- result = RSpec::Core::Runner.run(Pedant.config.rspec_args + fail_fast)
+ rspec_args = Pedant.config.rspec_args + rspec_args_from_env
+ result = RSpec::Core::Runner.run(rspec_args)
server.stop if server.running?
ensure