From 06debbc5fce55c094c415868e64a7f450790fddc Mon Sep 17 00:00:00 2001 From: Chris Doherty Date: Wed, 4 Nov 2015 16:37:41 -0800 Subject: Add a dummy GET that returns meaningful values, due to pedant making Solr-related calls. --- lib/chef_zero/endpoints/dummy_endpoint.rb | 31 +++++++++++++++++++++++++++++++ lib/chef_zero/server.rb | 2 ++ spec/run_oc_pedant.rb | 7 ++++++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 lib/chef_zero/endpoints/dummy_endpoint.rb diff --git a/lib/chef_zero/endpoints/dummy_endpoint.rb b/lib/chef_zero/endpoints/dummy_endpoint.rb new file mode 100644 index 0000000..fe16a7e --- /dev/null +++ b/lib/chef_zero/endpoints/dummy_endpoint.rb @@ -0,0 +1,31 @@ + +# pedant makes a couple of Solr-related calls from its search_utils.rb file that we can't work around (e.g. +# with monkeypatching). the necessary Pedant::Config values are set in run_oc_pedant.rb. --cdoherty +module ChefZero + module Endpoints + class DummyEndpoint < RestBase + # called by #direct_solr_query, once each for roles, nodes, and data bag items. each RSpec example makes + # 3 calls, with the expected sequence of return values [0, 1, 0]. + def get(request) + + # this could be made less brittle, but if things change to have more than 3 cycles, we should really + # be notified by a spec failure. + @mock_values ||= ([0, 1, 0] * 3).map { |val| make_response(val) } + + retval = @mock_values.shift + json_response(200, retval) + end + + # called by #force_solr_commit in pedant's , which doesn't check the return value. + def post(request) + # sure thing! + json_response(200, { message: "This dummy POST endpoint didn't do anything." }) + end + + def make_response(value) + { "response" => { "numFound" => value } } + end + end + end +end + diff --git a/lib/chef_zero/server.rb b/lib/chef_zero/server.rb index 5723ae4..d9e3931 100644 --- a/lib/chef_zero/server.rb +++ b/lib/chef_zero/server.rb @@ -47,6 +47,7 @@ require 'chef_zero/endpoints/cookbook_endpoint' require 'chef_zero/endpoints/cookbook_version_endpoint' require 'chef_zero/endpoints/containers_endpoint' require 'chef_zero/endpoints/container_endpoint' +require 'chef_zero/endpoints/dummy_endpoint' require 'chef_zero/endpoints/data_bags_endpoint' require 'chef_zero/endpoints/data_bag_endpoint' require 'chef_zero/endpoints/data_bag_item_endpoint' @@ -528,6 +529,7 @@ module ChefZero end result + [ # Both + [ "/dummy", DummyEndpoint.new(self) ], [ "/organizations/*/clients", ActorsEndpoint.new(self) ], [ "/organizations/*/clients/*", ActorEndpoint.new(self) ], [ "/organizations/*/cookbooks", CookbooksEndpoint.new(self) ], diff --git a/spec/run_oc_pedant.rb b/spec/run_oc_pedant.rb index a11448c..df1eba1 100644 --- a/spec/run_oc_pedant.rb +++ b/spec/run_oc_pedant.rb @@ -29,7 +29,12 @@ begin # Pedant::Config.rerun = true Pedant.config.suite = 'api' - Pedant.config.internal_server = 'http://localhost:8889' + Pedant.config.internal_server = Pedant::Config.search_server = 'http://localhost:8889' + + # see dummy_endpoint.rb. + Pedant.config.search_commit_url = "/dummy" + Pedant::Config.search_url_fmt = "/dummy?fq=+X_CHEF_type_CHEF_X:%{type}&q=%{query}&wt=json" + Pedant.config[:config_file] = 'spec/support/oc_pedant.rb' Pedant.config[:server_api_version] = 0 -- cgit v1.2.1