diff options
author | Jordan Running <jr@getchef.com> | 2016-01-28 16:56:30 -0600 |
---|---|---|
committer | Jordan Running <jr@getchef.com> | 2016-02-10 17:06:57 -0600 |
commit | c8b79e62f628bd7dccc63b04313e044b13600841 (patch) | |
tree | 17df8584ca268a0e75e7f9e52f5244a3b343cf6c /spec/run_oc_pedant.rb | |
parent | 96a82ea1050e1dd360035b760c19faca5678251c (diff) | |
download | chef-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.rb | 104 |
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 |