fluke/devops-service/tests/server.rb
GGA Software Services LLC 02bf8b1bba initial commit
2014-05-08 17:06:06 +04:00

135 lines
3.1 KiB
Ruby

require "devops_test"
require "list_command"
require "cud_command"
class Server < DevopsTest
include ListCommand
include CudCommand
def title
"Server test"
end
def run
list("servers")
cmd = "servers/:provider"
p = PROVIDERS.clone
p.push "chef"
[USERNAME, USERNAME + "_r", ROOTUSER].each do |u|
self.username = u
p.each do |p|
list_send(cmd.gsub(":provider", p), 200)
end
list_send(cmd.gsub(":provider", "foo"), 404)
list_send("server/foo", 404)
end
list_deny do
p.each do |p|
list_send(cmd.gsub(":provider", p), 401)
end
list_send(cmd.gsub(":provider", "foo"), 401)
list_send("server/foo", 401)
end
test_auth "server/foo", {}, 404, "delete"
self.send_delete "server/foo", nil, {}, 406
h = HEADERS.clone
h.delete("Content-Type")
self.send_delete "server/foo", nil, h, 415
h = HEADERS.clone
self.send_delete "server/foo", nil, h, 404
all_privileges
server = {
:project => "foo",
:deploy_env => "foo",
:name => "foo",
:without_bootstrap => true,
:force => true,
:groups => [],
:key => "foo"
}
test_headers "server", "post", false
[:project, :deploy_env, :name, :key].each do |k|
s = server.clone
["", nil, [], {}].each do |v|
next if k == :name and v.nil?
s[k] = v
self.send_post "server", s, HEADERS, 400
end
end
[:force, :without_bootstrap].each do |k|
s = server.clone
["", false, [], {}].each do |v|
s[k] = v
self.send_post "server", s, HEADERS, 400
end
end
s = server.clone
["", true, [], [true], [{:foo => "foo"}], {}].each do |v|
s[:groups] = v
self.send_post "server", s, HEADERS, 400
end
test_auth "server", server
["server/foo/pause", "server/foo/unpause"].each do |cmd|
test_auth cmd, nil, 404
test_headers cmd
end
bootstrap = {
:instance_id => "foo",
:name => "foo",
:run_list => ["foo"],
:bootstrap_template => "foo"
}
cmd = "server/bootstrap"
test_auth cmd, bootstrap
test_headers cmd, "post", false
b = bootstrap.clone
["", [], {}].each do |v|
b[:instance_id] = v
self.send_post cmd, b, HEADERS, 400
end
[:name, :bootstrap_template].each do |k|
b = bootstrap.clone
["", [], {}].each do |v|
b[k] = v
self.send_post cmd, b, HEADERS, 400
end
end
b = bootstrap.clone
["", [nil], [{:foo => "foo"}], [true], {}].each do |v|
b[:run_list] = v
self.send_post cmd, b, HEADERS, 400
end
cmd = "server/add"
add = {
:project => "foo",
:deploy_env => "foo",
:key => "foo",
:remote_user => "foo",
:private_ip => "foo",
:public_ip => "foo"
}
test_auth cmd, add
test_headers cmd, "post", false
[:project, :deploy_env, :key, :remote_user, :private_ip, :public_ip].each do |k|
a = add.clone
[nil, "", [], {}].each do |v|
next if k == :public_ip and v.nil?
a[k] = v
self.send_post cmd, a, HEADERS, 400
end
end
end
end