Commit 4f1941f3 authored by John E. Vincent's avatar John E. Vincent

autotest and more specs

parent 6d5e76c0
require 'autotest/growl'
Autotest.add_hook(:initialize) {|at|
at.add_exception %r{^\.git} # ignore Version Control System
at.add_exception %r{^./tmp} # ignore temp files, lest autotest will run again, and again...
at.clear_mappings # take out the default (test/test*rb)
at.add_mapping(%r{^noah\.rb$}) {|f, _|
Dir['spec/**/*.rb']
}
at.add_mapping(%r{^lib/.*\.rb$}) {|f, _|
Dir['spec/**/*.rb']
}
nil
}
...@@ -10,6 +10,9 @@ group :development do ...@@ -10,6 +10,9 @@ group :development do
gem "rspec", "= 2.4.0" gem "rspec", "= 2.4.0"
gem "rcov", "= 0.9.9" gem "rcov", "= 0.9.9"
gem "rack-test", "= 0.5.7", :require => "rack/test" gem "rack-test", "= 0.5.7", :require => "rack/test"
gem "ZenTest", "= 4.4.2"
gem "autotest", "= 4.4.6"
gem "autotest-growl", "= 0.2.9", :require => "autotest/growl"
end end
platforms :mri do platforms :mri do
gem "yajl-ruby", "= 0.7.9", :require => "yajl" gem "yajl-ruby", "= 0.7.9", :require => "yajl"
......
GEM GEM
remote: http://rubygems.org/ remote: http://rubygems.org/
specs: specs:
ZenTest (4.4.2)
autotest (4.4.6)
ZenTest (>= 4.4.1)
autotest-growl (0.2.9)
backports (1.18.2) backports (1.18.2)
bouncy-castle-java (1.5.0145.2) bouncy-castle-java (1.5.0145.2)
diff-lcs (1.1.2) diff-lcs (1.1.2)
...@@ -64,6 +68,9 @@ PLATFORMS ...@@ -64,6 +68,9 @@ PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
ZenTest (= 4.4.2)
autotest (= 4.4.6)
autotest-growl (= 0.2.9)
haml (= 3.0.25) haml (= 3.0.25)
jruby-openssl (= 0.7.3) jruby-openssl (= 0.7.3)
json-jruby (= 1.4.6) json-jruby (= 1.4.6)
......
Autotest.add_discovery { "rspec2" }
...@@ -252,7 +252,8 @@ class NoahApp < Sinatra::Base ...@@ -252,7 +252,8 @@ class NoahApp < Sinatra::Base
content_type_mapping = { content_type_mapping = {
:yaml => "text/x-yaml", :yaml => "text/x-yaml",
:json => "application/json", :json => "application/json",
:xml => "text/xml" :xml => "text/xml",
:string => "text/plain"
} }
get '/:appname/:element/?' do |appname, element| get '/:appname/:element/?' do |appname, element|
......
...@@ -4,12 +4,51 @@ describe "Using the Configuration API", :reset_redis => false, :populate_sample_ ...@@ -4,12 +4,51 @@ describe "Using the Configuration API", :reset_redis => false, :populate_sample_
describe "calling" do describe "calling" do
describe "GET" do describe "GET" do
it "all configurations should work" it "all configurations should work" do
it "named application should work" get '/c'
it "named configuration for application should work" last_response.should be_ok
it "named configuration should work with mime-type" last_response.should return_json
it "invalid application should not work" end
it "invalid configuration for application should not work" it "named application should work" do
get '/c/noah'
last_response.should be_ok
response = last_response.should return_json
response.is_a?(Array).should == true
response.first["name"].should == "redis"
response.first["format"].should == "string"
response.first["body"].should == "redis://127.0.0.1:6379/0"
response.first["application"].should == "noah"
end
it "named configuration for application should work" do
get '/c/noah/redis'
last_response.should be_ok
response = last_response.body
response.should == "redis://127.0.0.1:6379/0"
end
it "named configuration should work with mime-type" do
require 'yaml'
get '/c/myrailsapp1/database.yml'
last_response.should be_ok
last_response.headers["Content-Type"].should == "text/x-yaml;charset=utf-8"
response = YAML.load(last_response.body)
response.is_a?(Hash).should == true
response.keys.should == ["development"]
response["development"].keys.should == ["database", "adapter", "username", "password"]
response["development"].values.should == ["development_database", "mysql", "dev_user", "dev_password"]
end
it "invalid application should not work" do
get '/c/badapp'
last_response.should_not be_ok
last_response.status.should == 404
response = last_response.should return_json
end
it "invalid configuration for application should not work" do
get '/c/badapp/badconfig'
last_response.should_not be_ok
last_response.status.should == 404
response = last_response.should return_json
end
end end
describe "PUT" do describe "PUT" do
......
require File.expand_path(File.dirname(__FILE__) + '/spec_helper') require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
describe "Using the Host API", :reset_redis => false, :populate_sample_data => true do describe "Using the Host API", :reset_redis => false, :populate_sample_data => true do
describe "calling" do describe "calling" do
it "GET /h should work" do describe "GET" do
it "all hosts should work" do
get '/h' get '/h'
last_response.should be_ok last_response.should be_ok
last_response.should return_json last_response.should return_json
end end
it "GET existing host should work" do it "existing host should work" do
get '/h/localhost' get '/h/localhost'
last_response.should be_ok last_response.should be_ok
response = last_response.should return_json response = last_response.should return_json
...@@ -28,7 +28,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -28,7 +28,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
services.last["host"].should == "localhost" services.last["host"].should == "localhost"
end end
it "GET existing host's service should work" do it "named service for host should work" do
get '/h/localhost/noah' get '/h/localhost/noah'
last_response.should be_ok last_response.should be_ok
response = last_response.should return_json response = last_response.should return_json
...@@ -37,8 +37,10 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -37,8 +37,10 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
response["status"].should == "up" response["status"].should == "up"
response["host"].should == "localhost" response["host"].should == "localhost"
end end
end
it "PUT new host should work" do describe "PUT" do
it "new host should work" do
host_data = {:name => "host99.domain.com", :status => "down"}.to_json host_data = {:name => "host99.domain.com", :status => "down"}.to_json
put '/h/host99.domain.com', host_data, "CONTENT_TYPE" => "application/json" put '/h/host99.domain.com', host_data, "CONTENT_TYPE" => "application/json"
last_response.should be_ok last_response.should be_ok
...@@ -51,7 +53,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -51,7 +53,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
response["new_record"].should == true response["new_record"].should == true
end end
it "PUT existing host should work" do it "existing host should work" do
sleep 3 sleep 3
host_data = {:name => "host99.domain.com", :status => "pending"}.to_json host_data = {:name => "host99.domain.com", :status => "pending"}.to_json
put '/h/host99.domain.com', host_data, "CONTENT_TYPE" => "application/json" put '/h/host99.domain.com', host_data, "CONTENT_TYPE" => "application/json"
...@@ -61,7 +63,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -61,7 +63,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
response["new_record"].should == false response["new_record"].should == false
end end
it "PUT host missing name parameter should not work" do it "host missing name parameter should not work" do
host_data = {:status => "pending"}.to_json host_data = {:status => "pending"}.to_json
put '/h/host100.domain.com', host_data, "CONTENT_TYPE" => "application/json" put '/h/host100.domain.com', host_data, "CONTENT_TYPE" => "application/json"
last_response.should_not be_ok last_response.should_not be_ok
...@@ -71,7 +73,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -71,7 +73,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
response["error_message"].should == "Missing Parameters" response["error_message"].should == "Missing Parameters"
end end
it "PUT host missing status parameter should not work" do it "host missing status parameter should not work" do
host_data = {:name => "host100.domain.com"}.to_json host_data = {:name => "host100.domain.com"}.to_json
put '/h/host100.domain.com', host_data, "CONTENT_TYPE" => "application/json" put '/h/host100.domain.com', host_data, "CONTENT_TYPE" => "application/json"
last_response.should_not be_ok last_response.should_not be_ok
...@@ -81,7 +83,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -81,7 +83,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
response["error_message"].should == "Missing Parameters" response["error_message"].should == "Missing Parameters"
end end
it "PUT host with invalid status parameter should not work" do it "host with invalid status parameter should not work" do
host_data = {:name => "host100.domain.com", :status => "fscked"}.to_json host_data = {:name => "host100.domain.com", :status => "fscked"}.to_json
put '/h/host100.domain.com', host_data, "CONTENT_TYPE" => "application/json" put '/h/host100.domain.com', host_data, "CONTENT_TYPE" => "application/json"
last_response.should_not be_ok last_response.should_not be_ok
...@@ -90,8 +92,10 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -90,8 +92,10 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
response["result"].should == "failure" response["result"].should == "failure"
response["error_message"].should == "[[:status, :not_member]]" response["error_message"].should == "[[:status, :not_member]]"
end end
end
it "DELETE existing host should work" do describe "DELETE" do
it "existing host should work" do
h = Host.find(:name => "localhost").first h = Host.find(:name => "localhost").first
svc_size = h.services.size svc_size = h.services.size
host_data = {:name => "localhost"} host_data = {:name => "localhost"}
...@@ -105,7 +109,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -105,7 +109,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
response["service_count"].should == svc_size.to_s response["service_count"].should == svc_size.to_s
end end
it "DELETE invalid host should not work" do it "invalid host should not work" do
host_data = {:name => "invalid_host.asdf.com"} host_data = {:name => "invalid_host.asdf.com"}
delete '/h/invalid_host.asdf.com', host_data, "CONTENT_TYPE" => "application/json" delete '/h/invalid_host.asdf.com', host_data, "CONTENT_TYPE" => "application/json"
last_response.should_not be_ok last_response.should_not be_ok
...@@ -115,6 +119,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t ...@@ -115,6 +119,7 @@ describe "Using the Host API", :reset_redis => false, :populate_sample_data => t
response["result"].should == "failure" response["result"].should == "failure"
response["error_message"].should == "Resource not found" response["error_message"].should == "Resource not found"
end end
end
end end
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment