mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-27 02:18:41 -05:00
(maint) Clean up, reorganize specs
This commit is contained in:
parent
d6e8a0e168
commit
355b48981d
2 changed files with 251 additions and 304 deletions
|
|
@ -203,4 +203,255 @@ describe Vmpooler::API::V1 do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# describe '/vm/:hostname' do
|
||||||
|
# let(:redis) { double('redis') }
|
||||||
|
# let(:prefix) { '/api/v1' }
|
||||||
|
# let(:config) { {
|
||||||
|
# pools: [
|
||||||
|
# {'name' => 'pool1', 'size' => 5},
|
||||||
|
# {'name' => 'pool2', 'size' => 10}
|
||||||
|
# ]
|
||||||
|
# } }
|
||||||
|
#
|
||||||
|
# before do
|
||||||
|
# app.settings.set :config, config
|
||||||
|
# app.settings.set :redis, redis
|
||||||
|
#
|
||||||
|
# allow(redis).to receive(:exists).and_return '1'
|
||||||
|
# allow(redis).to receive(:hset).and_return '1'
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# describe 'PUT /vm/:hostname' do
|
||||||
|
# it 'allows tags to be set' do
|
||||||
|
# put "#{prefix}/vm/testhost", '{"tags":{"tested_by":"rspec"}}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'skips empty tags' do
|
||||||
|
# put "#{prefix}/vm/testhost", '{"tags":{"tested_by":""}}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'does not set tags if request body format is invalid' do
|
||||||
|
# put "#{prefix}/vm/testhost", '{"tags":{"tested"}}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = false, http = 400)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# context '(allowed_tags configured)' do
|
||||||
|
# let(:config) { {
|
||||||
|
# config: {
|
||||||
|
# 'allowed_tags' => ['created_by', 'project', 'url']
|
||||||
|
# }
|
||||||
|
# } }
|
||||||
|
#
|
||||||
|
# it 'fails if specified tag is not in allowed_tags array' do
|
||||||
|
# put "#{prefix}/vm/testhost", '{"tags":{"created_by":"rspec","tested_by":"rspec"}}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = false, http = 400)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# context '(tagfilter configured)' do
|
||||||
|
# let(:config) { {
|
||||||
|
# tagfilter: { 'url' => '(.*)\/' },
|
||||||
|
# } }
|
||||||
|
#
|
||||||
|
# it 'correctly filters tags' do
|
||||||
|
# expect(redis).to receive(:hset).with("vmpooler__vm__testhost", "tag:url", "foo.com")
|
||||||
|
#
|
||||||
|
# put "#{prefix}/vm/testhost", '{"tags":{"url":"foo.com/something.html"}}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'doesn\'t eat tags not matching filter' do
|
||||||
|
# expect(redis).to receive(:hset).with("vmpooler__vm__testhost", "tag:url", "foo.com")
|
||||||
|
#
|
||||||
|
# put "#{prefix}/vm/testhost", '{"tags":{"url":"foo.com"}}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# context '(auth not configured)' do
|
||||||
|
# let(:config) { { auth: false } }
|
||||||
|
#
|
||||||
|
# it 'allows VM lifetime to be modified without a token' do
|
||||||
|
# put "#{prefix}/vm/testhost", '{"lifetime":"1"}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'does not allow a lifetime to be 0' do
|
||||||
|
# put "#{prefix}/vm/testhost", '{"lifetime":"0"}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = false, http = 400)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# context '(auth configured)' do
|
||||||
|
# let(:config) { { auth: true } }
|
||||||
|
#
|
||||||
|
# it 'allows VM lifetime to be modified with a token' do
|
||||||
|
# put "#{prefix}/vm/testhost", '{"lifetime":"1"}', {
|
||||||
|
# 'HTTP_X_AUTH_TOKEN' => 'abcdefghijklmnopqrstuvwxyz012345'
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'does not allows VM lifetime to be modified without a token' do
|
||||||
|
# put "#{prefix}/vm/testhost", '{"lifetime":"1"}'
|
||||||
|
#
|
||||||
|
# expect_json(ok = false, http = 401)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# describe 'DELETE /vm/:hostname' do
|
||||||
|
# context '(auth not configured)' do
|
||||||
|
# let(:config) { { auth: false } }
|
||||||
|
#
|
||||||
|
# it 'does not delete a non-existant VM' do
|
||||||
|
# expect(redis).to receive(:hgetall).and_return({})
|
||||||
|
# expect(redis).not_to receive(:sadd)
|
||||||
|
# expect(redis).not_to receive(:srem)
|
||||||
|
#
|
||||||
|
# delete "#{prefix}/vm/testhost"
|
||||||
|
#
|
||||||
|
# expect_json(ok = false, http = 404)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'deletes an existing VM' do
|
||||||
|
# expect(redis).to receive(:hgetall).with('vmpooler__vm__testhost').and_return({"template" => "pool1"})
|
||||||
|
# expect(redis).to receive(:srem).and_return(true)
|
||||||
|
# expect(redis).to receive(:sadd)
|
||||||
|
#
|
||||||
|
# delete "#{prefix}/vm/testhost"
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# context '(auth configured)' do
|
||||||
|
# let(:config) { { auth: true } }
|
||||||
|
#
|
||||||
|
# context '(checked-out without token)' do
|
||||||
|
# it 'deletes a VM without supplying a token' do
|
||||||
|
# expect(redis).to receive(:hgetall).with('vmpooler__vm__testhost').and_return({"template" => "pool1"})
|
||||||
|
# expect(redis).to receive(:srem).and_return(true)
|
||||||
|
# expect(redis).to receive(:sadd)
|
||||||
|
#
|
||||||
|
# delete "#{prefix}/vm/testhost"
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# context '(checked-out with token)' do
|
||||||
|
# it 'fails to delete a VM without supplying a token' do
|
||||||
|
# expect(redis).to receive(:hgetall).with('vmpooler__vm__testhost').and_return({"template" => "pool1", "token:token" => "abcdefghijklmnopqrstuvwxyz012345"})
|
||||||
|
# expect(redis).not_to receive(:sadd)
|
||||||
|
# expect(redis).not_to receive(:srem)
|
||||||
|
#
|
||||||
|
# delete "#{prefix}/vm/testhost"
|
||||||
|
#
|
||||||
|
# expect_json(ok = false, http = 401)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'deletes a VM when token is supplied' do
|
||||||
|
# expect(redis).to receive(:hgetall).with('vmpooler__vm__testhost').and_return({"template" => "pool1", "token:token" => "abcdefghijklmnopqrstuvwxyz012345"})
|
||||||
|
# expect(redis).to receive(:srem).and_return(true)
|
||||||
|
# expect(redis).to receive(:sadd)
|
||||||
|
#
|
||||||
|
# delete "#{prefix}/vm/testhost", "", {
|
||||||
|
# 'HTTP_X_AUTH_TOKEN' => 'abcdefghijklmnopqrstuvwxyz012345'
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 200)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# describe 'POST /vm/:hostname/snapshot' do
|
||||||
|
# context '(auth not configured)' do
|
||||||
|
# let(:config) { { auth: false } }
|
||||||
|
#
|
||||||
|
# it 'creates a snapshot' do
|
||||||
|
# expect(redis).to receive(:sadd)
|
||||||
|
#
|
||||||
|
# post "#{prefix}/vm/testhost/snapshot"
|
||||||
|
#
|
||||||
|
# expect(JSON.parse(last_response.body)['testhost']['snapshot'].length).to be(32)
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 202)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# context '(auth configured)' do
|
||||||
|
# let(:config) { { auth: true } }
|
||||||
|
#
|
||||||
|
# it 'returns a 401 if not authed' do
|
||||||
|
# post "#{prefix}/vm/testhost/snapshot"
|
||||||
|
#
|
||||||
|
# expect_json(ok = false, http = 401)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'creates a snapshot if authed' do
|
||||||
|
# expect(redis).to receive(:sadd)
|
||||||
|
#
|
||||||
|
# post "#{prefix}/vm/testhost/snapshot", "", {
|
||||||
|
# 'HTTP_X_AUTH_TOKEN' => 'abcdefghijklmnopqrstuvwxyz012345'
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# expect(JSON.parse(last_response.body)['testhost']['snapshot'].length).to be(32)
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 202)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# describe 'POST /vm/:hostname/snapshot/:snapshot' do
|
||||||
|
# context '(auth not configured)' do
|
||||||
|
# let(:config) { { auth: false } }
|
||||||
|
#
|
||||||
|
# it 'reverts to a snapshot' do
|
||||||
|
# expect(redis).to receive(:hget).with('vmpooler__vm__testhost', 'snapshot:testsnapshot').and_return(1)
|
||||||
|
# expect(redis).to receive(:sadd)
|
||||||
|
#
|
||||||
|
# post "#{prefix}/vm/testhost/snapshot/testsnapshot"
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 202)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# context '(auth configured)' do
|
||||||
|
# let(:config) { { auth: true } }
|
||||||
|
#
|
||||||
|
# it 'returns a 401 if not authed' do
|
||||||
|
# post "#{prefix}/vm/testhost/snapshot"
|
||||||
|
#
|
||||||
|
# expect_json(ok = false, http = 401)
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# it 'reverts to a snapshot if authed' do
|
||||||
|
# expect(redis).to receive(:hget).with('vmpooler__vm__testhost', 'snapshot:testsnapshot').and_return(1)
|
||||||
|
# expect(redis).to receive(:sadd)
|
||||||
|
#
|
||||||
|
# post "#{prefix}/vm/testhost/snapshot/testsnapshot", "", {
|
||||||
|
# 'HTTP_X_AUTH_TOKEN' => 'abcdefghijklmnopqrstuvwxyz012345'
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# expect_json(ok = true, http = 202)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -18,310 +18,6 @@ describe Vmpooler::API::V1 do
|
||||||
Vmpooler::API
|
Vmpooler::API
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '/vm' do
|
|
||||||
let(:redis) { double('redis') }
|
|
||||||
let(:prefix) { '/api/v1' }
|
|
||||||
let(:config) { {
|
|
||||||
config: {
|
|
||||||
'site_name' => 'test pooler',
|
|
||||||
'vm_lifetime_auth' => 2
|
|
||||||
},
|
|
||||||
pools: [
|
|
||||||
{'name' => 'pool1', 'size' => 5},
|
|
||||||
{'name' => 'pool2', 'size' => 10}
|
|
||||||
],
|
|
||||||
alias: { 'poolone' => 'pool1' }
|
|
||||||
} }
|
|
||||||
|
|
||||||
before do
|
|
||||||
app.settings.set :config, config
|
|
||||||
app.settings.set :redis, redis
|
|
||||||
|
|
||||||
allow(redis).to receive(:exists).and_return '1'
|
|
||||||
allow(redis).to receive(:hget).with('vmpooler__token__abcdefghijklmnopqrstuvwxyz012345', 'user').and_return 'jdoe'
|
|
||||||
allow(redis).to receive(:hset).and_return '1'
|
|
||||||
allow(redis).to receive(:sadd).and_return '1'
|
|
||||||
allow(redis).to receive(:scard).and_return '5'
|
|
||||||
allow(redis).to receive(:spop).with('vmpooler__ready__pool1').and_return 'abcdefghijklmnop'
|
|
||||||
allow(redis).to receive(:spop).with('vmpooler__ready__pool2').and_return 'qrstuvwxyz012345'
|
|
||||||
end
|
|
||||||
|
|
||||||
describe 'POST /vm' do
|
|
||||||
it 'returns a single VM' do
|
|
||||||
post "#{prefix}/vm", '{"pool1":"1"}'
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns a single VM for an alias' do
|
|
||||||
expect(redis).to receive(:exists).with("vmpooler__ready__poolone").and_return(false)
|
|
||||||
|
|
||||||
post "#{prefix}/vm", '{"poolone":"1"}'
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'fails on nonexistant pools' do
|
|
||||||
expect(redis).to receive(:exists).with("vmpooler__ready__poolpoolpool").and_return(false)
|
|
||||||
|
|
||||||
post "#{prefix}/vm", '{"poolpoolpool":"1"}'
|
|
||||||
|
|
||||||
expect_json(ok = false, http = 404)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns multiple VMs' do
|
|
||||||
post "#{prefix}/vm", '{"pool1":"1","pool2":"1"}'
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
},
|
|
||||||
pool2: {
|
|
||||||
hostname: 'qrstuvwxyz012345'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
context '(auth not configured)' do
|
|
||||||
let(:config) { { auth: false } }
|
|
||||||
|
|
||||||
it 'does not extend VM lifetime if auth token is provided' do
|
|
||||||
expect(redis).not_to receive(:hset).with("vmpooler__vm__abcdefghijklmnop", "lifetime", 2)
|
|
||||||
|
|
||||||
post "#{prefix}/vm", '{"pool1":"1"}', {
|
|
||||||
'HTTP_X_AUTH_TOKEN' => 'abcdefghijklmnopqrstuvwxyz012345'
|
|
||||||
}
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context '(auth configured)' do
|
|
||||||
let(:config) { { auth: true } }
|
|
||||||
|
|
||||||
it 'extends VM lifetime if auth token is provided' do
|
|
||||||
expect(redis).to receive(:hset).with("vmpooler__vm__abcdefghijklmnop", "lifetime", 2).once
|
|
||||||
|
|
||||||
post "#{prefix}/vm", '{"pool1":"1"}', {
|
|
||||||
'HTTP_X_AUTH_TOKEN' => 'abcdefghijklmnopqrstuvwxyz012345'
|
|
||||||
}
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'does not extend VM lifetime if auth token is not provided' do
|
|
||||||
expect(redis).not_to receive(:hset).with("vmpooler__vm__abcdefghijklmnop", "lifetime", 2)
|
|
||||||
|
|
||||||
post "#{prefix}/vm", '{"pool1":"1"}'
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '/vm/:template' do
|
|
||||||
let(:redis) { double('redis') }
|
|
||||||
let(:prefix) { '/api/v1' }
|
|
||||||
let(:config) { {
|
|
||||||
config: {
|
|
||||||
'site_name' => 'test pooler',
|
|
||||||
'vm_lifetime_auth' => 2
|
|
||||||
},
|
|
||||||
pools: [
|
|
||||||
{'name' => 'pool1', 'size' => 5},
|
|
||||||
{'name' => 'pool2', 'size' => 10}
|
|
||||||
],
|
|
||||||
alias: { 'poolone' => 'pool1' }
|
|
||||||
} }
|
|
||||||
|
|
||||||
before do
|
|
||||||
app.settings.set :config, config
|
|
||||||
app.settings.set :redis, redis
|
|
||||||
|
|
||||||
allow(redis).to receive(:exists).and_return '1'
|
|
||||||
allow(redis).to receive(:hget).with('vmpooler__token__abcdefghijklmnopqrstuvwxyz012345', 'user').and_return 'jdoe'
|
|
||||||
allow(redis).to receive(:hset).and_return '1'
|
|
||||||
allow(redis).to receive(:sadd).and_return '1'
|
|
||||||
allow(redis).to receive(:scard).and_return '5'
|
|
||||||
allow(redis).to receive(:spop).with('vmpooler__ready__pool1').and_return 'abcdefghijklmnop'
|
|
||||||
allow(redis).to receive(:spop).with('vmpooler__ready__pool2').and_return 'qrstuvwxyz012345'
|
|
||||||
end
|
|
||||||
|
|
||||||
describe 'POST /vm/:template' do
|
|
||||||
it 'returns a single VM' do
|
|
||||||
post "#{prefix}/vm/pool1", ''
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns a single VM for an alias' do
|
|
||||||
expect(redis).to receive(:exists).with("vmpooler__ready__poolone").and_return(false)
|
|
||||||
|
|
||||||
post "#{prefix}/vm/poolone", ''
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'fails on nonexistant pools' do
|
|
||||||
expect(redis).to receive(:exists).with("vmpooler__ready__poolpoolpool").and_return(false)
|
|
||||||
|
|
||||||
post "#{prefix}/vm/poolpoolpool", ''
|
|
||||||
|
|
||||||
expect_json(ok = false, http = 404)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns multiple VMs' do
|
|
||||||
post "#{prefix}/vm/pool1+pool2", ''
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
},
|
|
||||||
pool2: {
|
|
||||||
hostname: 'qrstuvwxyz012345'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
context '(auth not configured)' do
|
|
||||||
let(:config) { { auth: false } }
|
|
||||||
|
|
||||||
it 'does not extend VM lifetime if auth token is provided' do
|
|
||||||
expect(redis).not_to receive(:hset).with("vmpooler__vm__abcdefghijklmnop", "lifetime", 2)
|
|
||||||
|
|
||||||
post "#{prefix}/vm/pool1", '', {
|
|
||||||
'HTTP_X_AUTH_TOKEN' => 'abcdefghijklmnopqrstuvwxyz012345'
|
|
||||||
}
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context '(auth configured)' do
|
|
||||||
let(:config) { { auth: true } }
|
|
||||||
|
|
||||||
it 'extends VM lifetime if auth token is provided' do
|
|
||||||
expect(redis).to receive(:hset).with("vmpooler__vm__abcdefghijklmnop", "lifetime", 2).once
|
|
||||||
|
|
||||||
post "#{prefix}/vm/pool1", '', {
|
|
||||||
'HTTP_X_AUTH_TOKEN' => 'abcdefghijklmnopqrstuvwxyz012345'
|
|
||||||
}
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'does not extend VM lifetime if auth token is not provided' do
|
|
||||||
expect(redis).not_to receive(:hset).with("vmpooler__vm__abcdefghijklmnop", "lifetime", 2)
|
|
||||||
|
|
||||||
post "#{prefix}/vm/pool1", ''
|
|
||||||
|
|
||||||
expected = {
|
|
||||||
ok: true,
|
|
||||||
pool1: {
|
|
||||||
hostname: 'abcdefghijklmnop'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(last_response.body).to eq(JSON.pretty_generate(expected))
|
|
||||||
|
|
||||||
expect_json(ok = true, http = 200)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '/vm/:hostname' do
|
describe '/vm/:hostname' do
|
||||||
let(:redis) { double('redis') }
|
let(:redis) { double('redis') }
|
||||||
let(:prefix) { '/api/v1' }
|
let(:prefix) { '/api/v1' }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue