diff options
author | Thom May <thom@chef.io> | 2017-01-25 15:51:46 +0000 |
---|---|---|
committer | Thom May <thom@chef.io> | 2017-02-14 11:45:44 -0800 |
commit | 46f5722ef83d3d3603e23ac9525c49f4ed43621a (patch) | |
tree | 84724dc91d23b3ef7e5da8da14ffccb4cbc13709 /spec/unit/http/api_versions_spec.rb | |
parent | d4b87e5e0f73d92836b4523907e17b1a88be9317 (diff) | |
download | chef-46f5722ef83d3d3603e23ac9525c49f4ed43621a.tar.gz |
Make it easier to have a versioned factorytm/versioned_api
classes providing an API should include VersionedAPI, whilst the factory
class includes VersionedAPIFactory.
Signed-off-by: Thom May <thom@may.lt>
Diffstat (limited to 'spec/unit/http/api_versions_spec.rb')
-rw-r--r-- | spec/unit/http/api_versions_spec.rb | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/spec/unit/http/api_versions_spec.rb b/spec/unit/http/api_versions_spec.rb new file mode 100644 index 0000000000..79c97a1b69 --- /dev/null +++ b/spec/unit/http/api_versions_spec.rb @@ -0,0 +1,69 @@ +# +# Copyright:: Copyright 2017, Chef Software, 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. +# + +require "spec_helper" + +describe Chef::HTTP::APIVersions do + class TestVersionClient < Chef::HTTP + use Chef::HTTP::APIVersions + end + + before do + Chef::ServerAPIVersions.instance.reset! + end + + let(:method) { "GET" } + let(:url) { "http://dummy.com" } + let(:headers) { {} } + let(:data) { false } + + let(:request) {} + let(:return_value) { "200" } + + # Test Variables + let(:response_body) { "Thanks for checking in." } + let(:response_headers) do + { + "x-ops-server-api-version" => { "min_version" => 0, "max_version" => 2 }, + } + end + + let(:response) do + m = double("HttpResponse", :body => response_body) + allow(m).to receive(:key?).with("x-ops-server-api-version").and_return(true) + allow(m).to receive(:[]) do |key| + response_headers[key] + end + + m + end + + let(:middleware) do + client = TestVersionClient.new(url) + client.middlewares[0] + end + + def run_api_version_handler + middleware.handle_request(method, url, headers, data) + middleware.handle_response(response, request, return_value) + end + + it "correctly stores server api versions" do + run_api_version_handler + expect(Chef::ServerAPIVersions.instance.min_server_version).to eq(0) + end +end |