From 7a587b8992065b6e63b7573e47bdad0c1d67b460 Mon Sep 17 00:00:00 2001 From: Rick Bradley Date: Fri, 20 May 2016 14:38:13 -0500 Subject: [PATCH] Add specs for failed multi-vm allocation API endpoints --- spec/vmpooler/api/v1_spec.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/spec/vmpooler/api/v1_spec.rb b/spec/vmpooler/api/v1_spec.rb index 1b65962..2904a2f 100644 --- a/spec/vmpooler/api/v1_spec.rb +++ b/spec/vmpooler/api/v1_spec.rb @@ -265,6 +265,32 @@ describe Vmpooler::API::V1 do expect_json(ok = true, http = 200) end + it 'fails when not all requested vms can be allocated' do + allow(redis).to receive(:spop).with('vmpooler__ready__pool1').and_return 'abcdefghijklmnop' + allow(redis).to receive(:spop).with('vmpooler__ready__pool2').and_return nil + allow(redis).to receive(:spush).with("vmpooler__ready__pool1", "abcdefghijklmnop") + + post "#{prefix}/vm", '{"pool1":"1","pool2":"1"}' + + expected = { ok: false } + + expect(last_response.body).to eq(JSON.pretty_generate(expected)) + expect_json(ok = false, http = 200) # which HTTP status code? + end + + it 'returns any checked out vms when not all requested vms can be allocated' do + allow(redis).to receive(:spop).with('vmpooler__ready__pool1').and_return 'abcdefghijklmnop' + allow(redis).to receive(:spop).with('vmpooler__ready__pool2').and_return nil + expect(redis).to receive(:spush).with("vmpooler__ready__pool1", "abcdefghijklmnop") + + post "#{prefix}/vm", '{"pool1":"1","pool2":"1"}' + + expected = { ok: false } + + expect(last_response.body).to eq(JSON.pretty_generate(expected)) + expect_json(ok = false, http = 200) # which HTTP status code? + end + context '(auth not configured)' do let(:config) { { auth: false } }