without old tests
This commit is contained in:
parent
25486edfe5
commit
a6f5a6b4bf
@ -1,6 +0,0 @@
|
|||||||
USERNAME="<tester>"
|
|
||||||
PASSWORD="<some password>"
|
|
||||||
HOST="<devops service host>"
|
|
||||||
ROOTUSER="root"
|
|
||||||
ROOTPASS=""
|
|
||||||
PROVIDERS=["ec2", "openstack"]
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
module CudCommand
|
|
||||||
|
|
||||||
HEADERS = {
|
|
||||||
"Accept" => "application/json",
|
|
||||||
"Content-Type" => "application/json"
|
|
||||||
}
|
|
||||||
|
|
||||||
def test_headers path, method="post", accept=true
|
|
||||||
m = method.downcase
|
|
||||||
if accept
|
|
||||||
h = HEADERS.clone
|
|
||||||
h["Accept"] = "application/xml"
|
|
||||||
self.send("send_#{m}", path, {}, h, 406)
|
|
||||||
end
|
|
||||||
|
|
||||||
h = HEADERS.clone
|
|
||||||
h.delete("Content-Type")
|
|
||||||
self.send("send_#{m}", path, {}, h, 415)
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_request path, obj, method="post", exclude=nil
|
|
||||||
m = method.downcase
|
|
||||||
[{}, [], ""].each do |o|
|
|
||||||
next if o.class == exclude
|
|
||||||
self.send("send_#{m}", path, o, HEADERS, 400) unless exclude.is_a?(Hash)
|
|
||||||
end
|
|
||||||
self.send("send_#{m}", path, nil, HEADERS, 400)
|
|
||||||
return if exclude == obj.class
|
|
||||||
obj.keys.each do |key|
|
|
||||||
buf = obj.clone
|
|
||||||
buf.delete(key)
|
|
||||||
self.send("send_#{m}", path, buf, HEADERS, 400)
|
|
||||||
buf[key] = ""
|
|
||||||
self.send("send_#{m}", path, buf, HEADERS, 400)
|
|
||||||
buf[key] = {}
|
|
||||||
self.send("send_#{m}", path, buf, HEADERS, 400)
|
|
||||||
buf[key] = []
|
|
||||||
self.send("send_#{m}", path, buf, HEADERS, 400)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_auth path, obj, empty_obj_code=400, method="post"
|
|
||||||
m = method.downcase
|
|
||||||
read_only_privileges
|
|
||||||
self.send("send_#{m}", path, {}, HEADERS, 401)
|
|
||||||
self.send("send_#{m}", path, obj, HEADERS, 401)
|
|
||||||
|
|
||||||
empty_privileges
|
|
||||||
self.send("send_#{m}", path, {}, HEADERS, 401)
|
|
||||||
self.send("send_#{m}", path, obj, HEADERS, 401)
|
|
||||||
|
|
||||||
write_only_privileges
|
|
||||||
self.send("send_#{m}", path, {}, HEADERS, empty_obj_code)
|
|
||||||
|
|
||||||
self.username = ROOTUSER
|
|
||||||
self.send("send_#{m}", path, {}, HEADERS, empty_obj_code)
|
|
||||||
|
|
||||||
all_privileges
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@ -1,55 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "cud_command"
|
|
||||||
class Deploy < DevopsTest
|
|
||||||
|
|
||||||
include CudCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Deploy test (invalid queries only)"
|
|
||||||
end
|
|
||||||
|
|
||||||
# tests invalid queries only, valid query in client test
|
|
||||||
def run
|
|
||||||
all_privileges
|
|
||||||
test_headers("deploy", "post", false)
|
|
||||||
|
|
||||||
deploy = {
|
|
||||||
:names => ["foo"],
|
|
||||||
:tags => ["foo"]
|
|
||||||
}
|
|
||||||
test_auth("deploy", deploy)
|
|
||||||
cnt = 0
|
|
||||||
headers = HEADERS.clone
|
|
||||||
headers.delete("Accept")
|
|
||||||
st = 400
|
|
||||||
nf_st = 404
|
|
||||||
begin
|
|
||||||
[{}, [], "", nil].each do |p|
|
|
||||||
self.send_post("deploy", p, headers, st)
|
|
||||||
d = deploy.clone
|
|
||||||
d.delete(:tags)
|
|
||||||
d[:names] = p
|
|
||||||
self.send_post("deploy", d, headers, st)
|
|
||||||
unless p.nil?
|
|
||||||
d = deploy.clone
|
|
||||||
d[:tags] = p
|
|
||||||
self.send_post("deploy", d, headers, st)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
deploy[:tags] = nil
|
|
||||||
self.send_post("deploy", deploy, headers, nf_st)
|
|
||||||
deploy.delete(:tags)
|
|
||||||
self.send_post("deploy", deploy, headers, nf_st)
|
|
||||||
if cnt == 0
|
|
||||||
cnt = 1
|
|
||||||
write_only_privileges
|
|
||||||
raise RangeError
|
|
||||||
end
|
|
||||||
rescue RangeError
|
|
||||||
retry
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@ -1,202 +0,0 @@
|
|||||||
require "json"
|
|
||||||
require "httpclient"
|
|
||||||
require "./config"
|
|
||||||
|
|
||||||
class DevopsTest
|
|
||||||
|
|
||||||
attr_accessor :password, :response, :host
|
|
||||||
attr_reader :username
|
|
||||||
|
|
||||||
def initialize
|
|
||||||
puts_head " #{self.title} ".center(80, "=")
|
|
||||||
self.host = HOST
|
|
||||||
# self.username = USERNAME
|
|
||||||
# self.password = PASSWORD
|
|
||||||
end
|
|
||||||
|
|
||||||
def submit
|
|
||||||
http = HTTPClient.new
|
|
||||||
http.receive_timeout = 0
|
|
||||||
http.send_timeout = 0
|
|
||||||
http.set_auth(nil, self.username, self.password)
|
|
||||||
self.response = yield http
|
|
||||||
self.response.body
|
|
||||||
end
|
|
||||||
|
|
||||||
def username= user
|
|
||||||
@username = user
|
|
||||||
self.password = if user == ROOTUSER
|
|
||||||
ROOTPASS
|
|
||||||
else
|
|
||||||
PASSWORD
|
|
||||||
end
|
|
||||||
puts_warn(" - User: " + @username + " - ")
|
|
||||||
end
|
|
||||||
|
|
||||||
def all_privileges
|
|
||||||
self.username = USERNAME
|
|
||||||
end
|
|
||||||
|
|
||||||
def read_only_privileges
|
|
||||||
self.username = USERNAME + "_r"
|
|
||||||
end
|
|
||||||
|
|
||||||
def write_only_privileges
|
|
||||||
self.username = USERNAME + "_w"
|
|
||||||
end
|
|
||||||
|
|
||||||
def empty_privileges
|
|
||||||
self.username = USERNAME + "_"
|
|
||||||
end
|
|
||||||
|
|
||||||
def get path, params={}, headers={}
|
|
||||||
url = create_url(path)
|
|
||||||
m = "GET #{url.path.ljust(30)}"
|
|
||||||
m += " HEADERS(#{headers.map{|k,v| "#{k}: #{v}" }.join(", ")})" unless headers.empty?
|
|
||||||
print m.ljust(99)
|
|
||||||
submit do |http|
|
|
||||||
http.get(url, convert_params(params), headers)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def post path, params={}, headers={}
|
|
||||||
url = create_url(path)
|
|
||||||
m = "POST #{url.path.ljust(30)}"
|
|
||||||
m += " HEADERS(#{headers.map{|k,v| "#{k}: #{v}" }.join(", ")})" unless headers.empty?
|
|
||||||
print m.ljust(99)
|
|
||||||
submit do |http|
|
|
||||||
http.post(url, params.to_json, headers)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def send_post path, params={}, headers={}, status=200
|
|
||||||
self.post path, params, headers
|
|
||||||
self.check_status status
|
|
||||||
self.check_json_response
|
|
||||||
end
|
|
||||||
|
|
||||||
def delete path, params={}, headers={}
|
|
||||||
url = create_url(path)
|
|
||||||
m = "DELETE #{url.path.ljust(30)}"
|
|
||||||
m += " HEADERS(#{headers.map{|k,v| "#{k}: #{v}" }.join(", ")})" unless headers.empty?
|
|
||||||
print m.ljust(99)
|
|
||||||
b = (params.nil? ? nil : params.to_json)
|
|
||||||
submit do |http|
|
|
||||||
http.delete(url, b, headers)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def send_delete path, params={}, headers={}, status=200
|
|
||||||
self.delete path, params, headers
|
|
||||||
self.check_status status
|
|
||||||
self.check_json_response
|
|
||||||
end
|
|
||||||
|
|
||||||
def post_chunk path, params={}, headers={}
|
|
||||||
url = create_url(path)
|
|
||||||
m = "POST #{url.path.ljust(30)}"
|
|
||||||
m += " HEADERS(#{headers.map{|k,v| "#{k}: #{v}" }.join(", ")})" unless headers.empty?
|
|
||||||
print m.ljust(99)
|
|
||||||
submit do |http|
|
|
||||||
http.post(url, params.to_json, headers) do |c|
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def send_put path, params={}, headers={}, status=200
|
|
||||||
self.put path, params, headers
|
|
||||||
self.check_status status
|
|
||||||
self.check_json_response
|
|
||||||
end
|
|
||||||
|
|
||||||
def put path, params={}, headers={}
|
|
||||||
url = create_url(path)
|
|
||||||
m = "PUT #{url.path.ljust(30)}"
|
|
||||||
m += " HEADERS(#{headers.map{|k,v| "#{k}: #{v}" }.join(", ")})" unless headers.empty?
|
|
||||||
print m.ljust(99)
|
|
||||||
submit do |http|
|
|
||||||
http.put(url, params.to_json, headers)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def check_status code
|
|
||||||
if self.response.status == code
|
|
||||||
self.puts_success
|
|
||||||
else
|
|
||||||
self.puts_error "STATUS: #{self.response.status}, but checked with '#{code}'"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def check_json_response
|
|
||||||
return if self.response.status == 404
|
|
||||||
j = begin
|
|
||||||
JSON.parse(self.response.body)
|
|
||||||
rescue
|
|
||||||
self.puts_error "Invalid json, response body: '#{self.response.body}'"
|
|
||||||
end
|
|
||||||
self.puts_error "Response in Json format, but without parameter 'message'" unless j.key?("message")
|
|
||||||
end
|
|
||||||
|
|
||||||
def check_type type
|
|
||||||
res = self.response
|
|
||||||
if res.ok?
|
|
||||||
case type
|
|
||||||
when :json
|
|
||||||
puts_error("Invalid content-type '#{res.contenttype}'") unless res.contenttype.include?("application/json")
|
|
||||||
else
|
|
||||||
puts_error("Unknown type '#{type}'")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def puts_head str
|
|
||||||
puts "\e[31m#{str}\e[0m"
|
|
||||||
end
|
|
||||||
|
|
||||||
def puts_error str
|
|
||||||
puts "\t\e[31m#{str}\e[0m"
|
|
||||||
raise str
|
|
||||||
end
|
|
||||||
|
|
||||||
def puts_warn str
|
|
||||||
puts "\t\e[33m#{str}\e[0m"
|
|
||||||
end
|
|
||||||
|
|
||||||
def puts_success str="success"
|
|
||||||
puts "\t\e[32m#{str}\e[0m"
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
def create_url path
|
|
||||||
path = "/" + path unless path.start_with? "/"
|
|
||||||
URI.join("http://" + self.host, "v2.0" + path)
|
|
||||||
end
|
|
||||||
|
|
||||||
def convert_params params
|
|
||||||
return nil if params.nil? or params.empty?
|
|
||||||
params_filter(params).join("&")
|
|
||||||
end
|
|
||||||
|
|
||||||
def params_filter params
|
|
||||||
r = []
|
|
||||||
return params if params.kind_of?(String)
|
|
||||||
params.each do |k,v|
|
|
||||||
key = k.to_s
|
|
||||||
if v.kind_of?(Array)
|
|
||||||
v.each do |val|
|
|
||||||
r.push "#{key}[]=#{val}"
|
|
||||||
end
|
|
||||||
elsif v.kind_of?(Hash)
|
|
||||||
buf = {}
|
|
||||||
v.each do |k1,v1|
|
|
||||||
buf["#{key}[#{k1}]"] = v1
|
|
||||||
end
|
|
||||||
r = r + params_filter(buf)
|
|
||||||
else
|
|
||||||
r.push "#{key}=#{v}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
r
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
require "cud_command"
|
|
||||||
class Filter < DevopsTest
|
|
||||||
include ListCommand
|
|
||||||
include CudCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Filter test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list_providers("filter/:provider/images")
|
|
||||||
|
|
||||||
filters = [
|
|
||||||
"foo"
|
|
||||||
]
|
|
||||||
cmd = "filter/openstack/image"
|
|
||||||
test_auth cmd, {}, 400, "put"
|
|
||||||
test_headers cmd, "put"
|
|
||||||
test_request cmd, filters, "put", Array
|
|
||||||
|
|
||||||
test_auth cmd, {}, 400, "delete"
|
|
||||||
test_headers cmd, "delete"
|
|
||||||
test_request cmd, filters, "delete", Array
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
class Flavor < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Flavor test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list_providers("flavors/:provider")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
class Group < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Group test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list_providers("groups/:provider")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,64 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
require "cud_command"
|
|
||||||
class Image < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
include CudCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Image test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list("images")
|
|
||||||
PROVIDERS.each do |p|
|
|
||||||
list_send("images", 200, :provider => p)
|
|
||||||
end
|
|
||||||
["foo", nil, ["ec2"], {"provider" => "ec2"}].each do |p|
|
|
||||||
list_send("images", 404, :provider => p)
|
|
||||||
end
|
|
||||||
|
|
||||||
cmd = "images/provider/:provider"
|
|
||||||
[USERNAME, USERNAME + "_r", ROOTUSER].each do |u|
|
|
||||||
self.username = u
|
|
||||||
PROVIDERS.each do |p|
|
|
||||||
list_send(cmd.gsub(":provider", p), 200)
|
|
||||||
end
|
|
||||||
list_send(cmd.gsub(":provider", "foo"), 404)
|
|
||||||
self.get("images/provider")
|
|
||||||
self.check_status 404
|
|
||||||
end
|
|
||||||
list_deny do
|
|
||||||
PROVIDERS.each do |p|
|
|
||||||
list_send(cmd.gsub(":provider", p), 401)
|
|
||||||
end
|
|
||||||
list_send(cmd.gsub(":provider", "foo"), 401)
|
|
||||||
self.get("images/provider")
|
|
||||||
self.check_status 404
|
|
||||||
end
|
|
||||||
|
|
||||||
image = {
|
|
||||||
:id => "foo_image",
|
|
||||||
:provider => "foo_provider",
|
|
||||||
:name => "foo_name",
|
|
||||||
:remote_user => "foo_user",
|
|
||||||
}
|
|
||||||
all_privileges
|
|
||||||
test_headers "image"
|
|
||||||
test_request "image", image
|
|
||||||
self.send_post "image", image, HEADERS, 400
|
|
||||||
i = image.clone
|
|
||||||
i[:provider] = "openstack"
|
|
||||||
self.send_post "image", i, HEADERS, 400
|
|
||||||
|
|
||||||
test_auth "image", image
|
|
||||||
|
|
||||||
test_auth "image/foo", {}, 404, "delete"
|
|
||||||
self.send_delete "image/foo", nil, {}, 406
|
|
||||||
h = HEADERS.clone
|
|
||||||
h.delete("Content-Type")
|
|
||||||
self.send_delete "image/foo", nil, h, 404
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
require "cud_command"
|
|
||||||
class Key < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
include CudCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Key test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list("keys")
|
|
||||||
|
|
||||||
all_privileges
|
|
||||||
key = {
|
|
||||||
:content => "content",
|
|
||||||
:file_name => "key_file.pem",
|
|
||||||
:key_name => "test_key"
|
|
||||||
}
|
|
||||||
|
|
||||||
test_headers "key"
|
|
||||||
test_auth "key", key
|
|
||||||
test_request "key", key
|
|
||||||
k = key.clone
|
|
||||||
k[:file_name] = "key*_file.pem"
|
|
||||||
self.send_post "key", k, HEADERS, 400
|
|
||||||
|
|
||||||
test_auth "key/foo", key, 404, "delete"
|
|
||||||
|
|
||||||
self.send_delete "key/foo", nil, {}, 406
|
|
||||||
h = HEADERS.clone
|
|
||||||
h.delete("Content-Type")
|
|
||||||
self.send_delete "key/foo", nil, h, 404
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@ -1,86 +0,0 @@
|
|||||||
module ListCommand
|
|
||||||
|
|
||||||
def list path, params=nil, status=200
|
|
||||||
all_privileges
|
|
||||||
# list_send(path, status, 406, params)
|
|
||||||
|
|
||||||
cmd = ""
|
|
||||||
path.split("/").each do |s|
|
|
||||||
cmd += "/" + s
|
|
||||||
if cmd == "/" + path
|
|
||||||
list_send(cmd, status)
|
|
||||||
else
|
|
||||||
self.get cmd
|
|
||||||
self.check_status 404
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
read_only_privileges
|
|
||||||
list_send(path, status, params)
|
|
||||||
write_only_privileges
|
|
||||||
list_send(path, 401, params)
|
|
||||||
empty_privileges
|
|
||||||
list_send(path, 401, params)
|
|
||||||
self.username = ROOTUSER
|
|
||||||
list_send(path, status, params)
|
|
||||||
end
|
|
||||||
|
|
||||||
def list_deny
|
|
||||||
empty_privileges
|
|
||||||
cnt = 0
|
|
||||||
begin
|
|
||||||
yield
|
|
||||||
if cnt == 0
|
|
||||||
write_only_privileges
|
|
||||||
cnt = 1
|
|
||||||
raise RangeError
|
|
||||||
end
|
|
||||||
rescue RangeError
|
|
||||||
retry
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
def list_providers cmd, as_ok=401, as_not_found=401
|
|
||||||
all_privileges
|
|
||||||
check_provider cmd
|
|
||||||
|
|
||||||
read_only_privileges
|
|
||||||
check_provider cmd
|
|
||||||
|
|
||||||
write_only_privileges
|
|
||||||
check_provider cmd, as_ok, as_not_found, 401
|
|
||||||
|
|
||||||
empty_privileges
|
|
||||||
check_provider cmd, as_ok, as_not_found, 401
|
|
||||||
|
|
||||||
self.username = ROOTUSER
|
|
||||||
check_provider cmd
|
|
||||||
end
|
|
||||||
|
|
||||||
def check_provider cmd, ok_status=200, not_found_status=404, auth_not_found=406
|
|
||||||
#js = (ok_status == 200 ? 406 : ok_status)
|
|
||||||
PROVIDERS.each do |p|
|
|
||||||
list_send(cmd.gsub(":provider", p), ok_status)
|
|
||||||
end
|
|
||||||
path = ""
|
|
||||||
st = not_found_status
|
|
||||||
cmd.split("/").each do |s|
|
|
||||||
path += "/" + s
|
|
||||||
if path == "/" + cmd
|
|
||||||
list_send(path, st)
|
|
||||||
else
|
|
||||||
self.get path
|
|
||||||
self.check_status 404
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def list_send path, status=200, params=nil
|
|
||||||
self.get path, params, {"Accept" => "application/xml"}
|
|
||||||
self.check_status 406
|
|
||||||
self.get path, params, {"Accept" => "application/json"}
|
|
||||||
self.check_status status
|
|
||||||
self.check_type :json if status == 200
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
class Network < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Network test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list_providers("networks/:provider")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,100 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
require "cud_command"
|
|
||||||
class Project < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
include CudCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Project test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list("projects")
|
|
||||||
list("project/foo", nil, 404)
|
|
||||||
list_send("project/foo/servers", 404)
|
|
||||||
|
|
||||||
project = {
|
|
||||||
:deploy_envs => [
|
|
||||||
{
|
|
||||||
:flavor => "c1.large",
|
|
||||||
:identifier => "test",
|
|
||||||
:image => "e6f44159-f50a-49a5-bfd5-865d0f68779d",
|
|
||||||
:run_list => [
|
|
||||||
"role[solr_test]"
|
|
||||||
],
|
|
||||||
:subnets => [
|
|
||||||
"private"
|
|
||||||
],
|
|
||||||
:expires => nil,
|
|
||||||
:provider => "openstack",
|
|
||||||
:groups => [
|
|
||||||
"default"
|
|
||||||
],
|
|
||||||
:users => [
|
|
||||||
USERNAME
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
:name => "test"
|
|
||||||
}
|
|
||||||
|
|
||||||
test_auth "project", project
|
|
||||||
test_headers "project"
|
|
||||||
test_request "project", project
|
|
||||||
["openstack", "ec2"].each do |provider|
|
|
||||||
project[:deploy_envs][0].keys.each do |k|
|
|
||||||
p = project.clone
|
|
||||||
d = p[:deploy_envs][0]
|
|
||||||
d[:provider] = provider
|
|
||||||
if k == :expires
|
|
||||||
["foo", "", [], {}].each do |v|
|
|
||||||
d[k] = v
|
|
||||||
send_post "project", p, HEADERS, 400
|
|
||||||
end
|
|
||||||
elsif k == :run_list or k == :groups or k == :users
|
|
||||||
["", {}, nil].each do |v|
|
|
||||||
d[k] = v
|
|
||||||
send_post "project", p, HEADERS, 400
|
|
||||||
end
|
|
||||||
elsif k == :subnets and provider == "ec2"
|
|
||||||
["", {}].each do |v|
|
|
||||||
d[k] = v
|
|
||||||
send_post "project", p, HEADERS, 400
|
|
||||||
end
|
|
||||||
else
|
|
||||||
d.delete(k)
|
|
||||||
send_post "project", p, HEADERS, 400
|
|
||||||
[nil, "", [], {}].each do |v|
|
|
||||||
d[k] = v
|
|
||||||
send_post "project", p, HEADERS, 400
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
test_auth "project/foo", project, 404, "delete"
|
|
||||||
self.send_delete "project/foo", nil, {}, 406
|
|
||||||
h = HEADERS.clone
|
|
||||||
h.delete("Content-Type")
|
|
||||||
self.send_delete "project/foo", nil, h, 415
|
|
||||||
self.send_delete "project/foo", nil, HEADERS, 404
|
|
||||||
self.send_delete "project/foo", {:deploy_env => ""}, HEADERS, 400
|
|
||||||
|
|
||||||
deploy = {
|
|
||||||
:servers => ["foo"],
|
|
||||||
:deploy_env => "foo"
|
|
||||||
}
|
|
||||||
test_headers "project/foo/deploy", "post", false
|
|
||||||
deploy.keys.each do |k|
|
|
||||||
d = deploy.clone
|
|
||||||
["", [], {}].each do |v|
|
|
||||||
d[k] = v
|
|
||||||
send_post "project/foo/deploy", p, HEADERS, 400
|
|
||||||
end
|
|
||||||
end
|
|
||||||
# test_auth "project/foo/deploy", deploy, 404
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
class Provider < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Provider test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list("providers")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
dir = File.dirname(__FILE__)
|
|
||||||
$:.push dir
|
|
||||||
tests = nil
|
|
||||||
if ARGV.empty?
|
|
||||||
tests = %w{flavor group network provider deploy image key script tag filter project user server}
|
|
||||||
else
|
|
||||||
tests = ARGV
|
|
||||||
end
|
|
||||||
|
|
||||||
classes = []
|
|
||||||
tests.each do |f|
|
|
||||||
require "#{dir}/#{f}.rb"
|
|
||||||
case f
|
|
||||||
when "flavor"
|
|
||||||
classes.push Flavor
|
|
||||||
when "group"
|
|
||||||
classes.push Group
|
|
||||||
when "network"
|
|
||||||
classes.push Network
|
|
||||||
when "provider"
|
|
||||||
classes.push Provider
|
|
||||||
when "user"
|
|
||||||
classes.push User
|
|
||||||
when "key"
|
|
||||||
classes.push Key
|
|
||||||
when "script"
|
|
||||||
classes.push Script
|
|
||||||
when "image"
|
|
||||||
classes.push Image
|
|
||||||
when "project"
|
|
||||||
classes.push Project
|
|
||||||
when "server"
|
|
||||||
classes.push Server
|
|
||||||
when "deploy"
|
|
||||||
classes.push Deploy
|
|
||||||
when "tag"
|
|
||||||
classes.push Tag
|
|
||||||
when "filter"
|
|
||||||
classes.push Filter
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
classes.each do |c|
|
|
||||||
c.new.run
|
|
||||||
end
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
require "cud_command"
|
|
||||||
class Script < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
include CudCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Script test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list("scripts")
|
|
||||||
|
|
||||||
self.username = USERNAME
|
|
||||||
# test_headers "script/run/foo"
|
|
||||||
|
|
||||||
script = {
|
|
||||||
:nodes => ["foo"]
|
|
||||||
}
|
|
||||||
|
|
||||||
# test_request "script/run/foo", script, "post", Hash
|
|
||||||
|
|
||||||
test_auth "script/run/foo", script, 404
|
|
||||||
test_auth "script/command/foo", {}, 404
|
|
||||||
|
|
||||||
self.send_delete "script/foo", nil, {}, 406
|
|
||||||
h = HEADERS.clone
|
|
||||||
h.delete("Content-Type")
|
|
||||||
self.send_delete "script/foo", nil, h, 404
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,134 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
require "cud_command"
|
|
||||||
class Tag < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
include CudCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"Tag test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
self.username = USERNAME
|
|
||||||
self.get("tags")
|
|
||||||
self.check_status 404
|
|
||||||
list("tags/foo", nil, 404)
|
|
||||||
|
|
||||||
self.username = USERNAME
|
|
||||||
|
|
||||||
tags = {
|
|
||||||
:tags => ["tag1"]
|
|
||||||
}
|
|
||||||
|
|
||||||
test_headers "tags/foo"
|
|
||||||
test_request "tags/foo", tags
|
|
||||||
test_auth "tags/foo", tags
|
|
||||||
|
|
||||||
test_headers "tags/foo", "delete"
|
|
||||||
test_request "tags/foo", tags, "delete", Hash
|
|
||||||
test_auth "tags/foo", tags, 400, "delete"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
require "devops_test"
|
|
||||||
require "list_command"
|
|
||||||
require "cud_command"
|
|
||||||
class User < DevopsTest
|
|
||||||
|
|
||||||
include ListCommand
|
|
||||||
include CudCommand
|
|
||||||
|
|
||||||
def title
|
|
||||||
"User test"
|
|
||||||
end
|
|
||||||
|
|
||||||
def run
|
|
||||||
list("users")
|
|
||||||
|
|
||||||
self.username = USERNAME
|
|
||||||
|
|
||||||
user = {
|
|
||||||
:username => "foo",
|
|
||||||
:password => "foo",
|
|
||||||
}
|
|
||||||
|
|
||||||
test_headers "user"
|
|
||||||
test_request "user", user
|
|
||||||
test_auth "user", user
|
|
||||||
|
|
||||||
test_auth "user/foo", user, 404, "delete"
|
|
||||||
self.send_delete "user/foo", nil, {}, 406
|
|
||||||
h = HEADERS.clone
|
|
||||||
h.delete("Content-Type")
|
|
||||||
self.send_delete "user/foo", nil, h, 404
|
|
||||||
|
|
||||||
privileges = {
|
|
||||||
:privileges => "foo",
|
|
||||||
:cmd => "foo"
|
|
||||||
}
|
|
||||||
test_auth "user/foo", privileges, 404, "put"
|
|
||||||
test_headers "user/foo", "put"
|
|
||||||
test_request "user/foo", privileges, "put", Hash
|
|
||||||
|
|
||||||
pass = {
|
|
||||||
:password => "foo"
|
|
||||||
}
|
|
||||||
test_auth "user/foo/password", pass, 400, "put"
|
|
||||||
test_headers "user/foo/password", "put"
|
|
||||||
test_request "user/foo/password", pass, "put", Hash
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
Loading…
Reference in New Issue
Block a user