noah 0.0.5-jruby → 0.1-jruby
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/.gitignore +10 -0
- data/LICENSE +201 -0
- data/README.md +68 -212
- data/Rakefile +65 -41
- data/TODO.md +65 -0
- data/bin/noah +2 -1
- data/bin/noah-watcher.rb +103 -0
- data/config.ru +6 -3
- data/config/warble.rb +18 -0
- data/examples/README.md +116 -0
- data/examples/cluster.ru +2 -0
- data/examples/custom-watcher.rb +10 -0
- data/examples/httpclient-server.rb +7 -0
- data/examples/httpclient.rb +12 -0
- data/examples/httpclient2.rb +28 -0
- data/examples/js/FABridge.js +1452 -0
- data/examples/js/WebSocketMain.swf +830 -0
- data/examples/js/swfobject.js +851 -0
- data/examples/js/web_socket.js +312 -0
- data/examples/logger.rb +11 -0
- data/examples/reconfiguring-sinatra-watcher.rb +11 -0
- data/examples/reconfiguring-sinatra.rb +33 -0
- data/examples/simple-post.rb +17 -0
- data/examples/websocket.html +24 -0
- data/examples/websocket.rb +41 -0
- data/lib/noah.rb +6 -8
- data/lib/noah/app.rb +20 -268
- data/lib/noah/application_routes.rb +70 -0
- data/lib/noah/ark.rb +0 -0
- data/lib/noah/configuration_routes.rb +81 -0
- data/lib/noah/custom_watcher.rb +79 -0
- data/lib/noah/ephemeral_routes.rb +47 -0
- data/lib/noah/helpers.rb +37 -14
- data/lib/noah/host_routes.rb +69 -0
- data/lib/noah/models.rb +86 -5
- data/lib/noah/models/applications.rb +41 -0
- data/lib/noah/models/configurations.rb +49 -0
- data/lib/noah/models/ephemerals.rb +54 -0
- data/lib/noah/models/hosts.rb +56 -0
- data/lib/noah/models/services.rb +54 -0
- data/lib/noah/models/watchers.rb +62 -0
- data/lib/noah/passthrough.rb +11 -0
- data/lib/noah/service_routes.rb +71 -0
- data/lib/noah/validations.rb +1 -0
- data/lib/noah/validations/watcher_validations.rb +48 -0
- data/lib/noah/version.rb +1 -1
- data/lib/noah/watcher_routes.rb +45 -0
- data/noah.gemspec +25 -17
- data/spec/application_spec.rb +30 -30
- data/spec/configuration_spec.rb +78 -14
- data/spec/ephemeral_spec.rb +59 -0
- data/spec/host_spec.rb +21 -21
- data/spec/noahapp_application_spec.rb +6 -6
- data/spec/noahapp_configuration_spec.rb +5 -5
- data/spec/noahapp_ephemeral_spec.rb +115 -0
- data/spec/noahapp_host_spec.rb +3 -3
- data/spec/noahapp_service_spec.rb +10 -10
- data/spec/noahapp_watcher_spec.rb +123 -0
- data/spec/service_spec.rb +27 -27
- data/spec/spec_helper.rb +13 -22
- data/spec/support/db/.keep +0 -0
- data/spec/support/test-redis.conf +8 -0
- data/spec/watcher_spec.rb +62 -0
- data/views/index.haml +21 -15
- metadata +189 -146
- data/Gemfile.lock +0 -83
- data/doc/coverage/index.html +0 -138
- data/doc/coverage/jquery-1.3.2.min.js +0 -19
- data/doc/coverage/jquery.tablesorter.min.js +0 -15
- data/doc/coverage/lib-helpers_rb.html +0 -393
- data/doc/coverage/lib-models_rb.html +0 -1449
- data/doc/coverage/noah_rb.html +0 -2019
- data/doc/coverage/print.css +0 -12
- data/doc/coverage/rcov.js +0 -42
- data/doc/coverage/screen.css +0 -270
- data/lib/noah/applications.rb +0 -46
- data/lib/noah/configurations.rb +0 -49
- data/lib/noah/hosts.rb +0 -54
- data/lib/noah/services.rb +0 -57
- data/lib/noah/watchers.rb +0 -18
data/spec/application_spec.rb
CHANGED
@@ -14,52 +14,52 @@ describe "Using the Application Model", :reset_redis => true do
|
|
14
14
|
Ohm.redis.flushdb
|
15
15
|
end
|
16
16
|
describe "should" do
|
17
|
-
it "create a new Application" do
|
18
|
-
a = Application.create(@appdata1)
|
17
|
+
it "create a new Noah::Application" do
|
18
|
+
a = Noah::Application.create(@appdata1)
|
19
19
|
a.valid?.should == true
|
20
20
|
a.is_new?.should == true
|
21
|
-
b = Application.find(@appdata1).first
|
21
|
+
b = Noah::Application.find(@appdata1).first
|
22
22
|
b.should == a
|
23
23
|
end
|
24
|
-
it "create a new Application with Configurations" do
|
25
|
-
a = Application.create(@appdata1)
|
26
|
-
a.configurations << Configuration.create(@appconf_string.merge({:application => a}))
|
24
|
+
it "create a new Noah::Application with Configurations" do
|
25
|
+
a = Noah::Application.create(@appdata1)
|
26
|
+
a.configurations << Noah::Configuration.create(@appconf_string.merge({:application => a}))
|
27
27
|
a.valid?.should == true
|
28
28
|
a.is_new?.should == true
|
29
29
|
a.save
|
30
|
-
b = Application.find(@appdata1).first
|
30
|
+
b = Noah::Application.find(@appdata1).first
|
31
31
|
b.should == a
|
32
32
|
b.configurations.size.should == 1
|
33
33
|
b.configurations.first.name.should == @appconf_string[:name]
|
34
34
|
b.configurations.first.format.should == @appconf_string[:format]
|
35
35
|
b.configurations.first.body.should == @appconf_string[:body]
|
36
36
|
end
|
37
|
-
it "create a new Application via find_or_create" do
|
38
|
-
a = Application.find_or_create(@appdata2)
|
37
|
+
it "create a new Noah::Application via find_or_create" do
|
38
|
+
a = Noah::Application.find_or_create(@appdata2)
|
39
39
|
a.valid?.should == true
|
40
40
|
a.is_new?.should == true
|
41
|
-
b = Application.find(@appdata2).first
|
41
|
+
b = Noah::Application.find(@appdata2).first
|
42
42
|
b.should == a
|
43
43
|
end
|
44
|
-
it "update an existing Application via find_or_create" do
|
45
|
-
a = Application.create(@appdata1)
|
44
|
+
it "update an existing Noah::Application via find_or_create" do
|
45
|
+
a = Noah::Application.create(@appdata1)
|
46
46
|
a.is_new?.should == true
|
47
47
|
sleep 2
|
48
|
-
b = Application.find_or_create(@appdata1)
|
48
|
+
b = Noah::Application.find_or_create(@appdata1)
|
49
49
|
b.is_new?.should == false
|
50
50
|
end
|
51
|
-
it "delete an existing Application" do
|
52
|
-
a = Application.create(@appdata1)
|
53
|
-
b = Application.find(@appdata1).first
|
51
|
+
it "delete an existing Noah::Application" do
|
52
|
+
a = Noah::Application.create(@appdata1)
|
53
|
+
b = Noah::Application.find(@appdata1).first
|
54
54
|
b.should == a
|
55
55
|
b.delete
|
56
|
-
c = Application.find(@appdata1).first
|
56
|
+
c = Noah::Application.find(@appdata1).first
|
57
57
|
c.nil?.should == true
|
58
58
|
end
|
59
|
-
it "return all Applications" do
|
60
|
-
a = Application.create(@appdata1)
|
61
|
-
b = Application.create(@appdata2)
|
62
|
-
c = Applications.all
|
59
|
+
it "return all Noah::Applications" do
|
60
|
+
a = Noah::Application.create(@appdata1)
|
61
|
+
b = Noah::Application.create(@appdata2)
|
62
|
+
c = Noah::Applications.all
|
63
63
|
c.size.should == 2
|
64
64
|
c.member?(a).should == true
|
65
65
|
c.member?(b).should == true
|
@@ -67,17 +67,17 @@ describe "Using the Application Model", :reset_redis => true do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
describe "should not" do
|
70
|
-
it "should not create a new Application without a name" do
|
71
|
-
a = Application.create
|
70
|
+
it "should not create a new Noah::Application without a name" do
|
71
|
+
a = Noah::Application.create
|
72
72
|
a.valid?.should == false
|
73
73
|
a.errors.should == [[:name, :not_present]]
|
74
74
|
end
|
75
|
-
it "should not create a duplicate Application" do
|
76
|
-
a = Application.create(@appdata1)
|
77
|
-
a.valid?.should == true
|
78
|
-
b = Application.create(@appdata1)
|
79
|
-
b.valid?.should == false
|
80
|
-
b.errors.should == [[:name, :not_unique]]
|
81
|
-
end
|
75
|
+
# it "should not create a duplicate Noah::Application" do
|
76
|
+
# a = Noah::Application.create(@appdata1)
|
77
|
+
# a.valid?.should == true
|
78
|
+
# b = Noah::Application.create(@appdata1)
|
79
|
+
# b.valid?.should == false
|
80
|
+
# b.errors.should == [[:name, :not_unique]]
|
81
|
+
# end
|
82
82
|
end
|
83
83
|
end
|
data/spec/configuration_spec.rb
CHANGED
@@ -1,25 +1,89 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
3
|
describe "Using the Configuration Model", :reset_redis => true do
|
4
|
+
before(:each) do
|
5
|
+
Ohm.redis.flushdb
|
6
|
+
app = Noah::Application.create :name => "my_application"
|
7
|
+
@appconf_string = {:name => "mystringconf", :format => "string", :body => "some_var", :application_id => app.id}
|
8
|
+
@appconf_json = {:name => "myjsonconf", :format => "json", :body => @appconf_string.to_json, :application_id => app.id}
|
9
|
+
@appconf_missing_name = @appconf_string.reject {|k, v| k == :name}
|
10
|
+
@appconf_missing_format = @appconf_string.reject {|k, v| k == :format}
|
11
|
+
@appconf_missing_body = @appconf_string.reject {|k, v| k == :body}
|
12
|
+
@appconf_missing_application = @appconf_string.reject {|k, v| k == :application_id}
|
13
|
+
end
|
14
|
+
after(:each) do
|
15
|
+
Ohm.redis.flushdb
|
16
|
+
end
|
4
17
|
|
5
18
|
describe "should" do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
19
|
+
it "create a new Configuration" do
|
20
|
+
c = Noah::Configuration.create(@appconf_string)
|
21
|
+
c.valid?.should == true
|
22
|
+
c.is_new?.should == true
|
23
|
+
b = Noah::Configuration[c.id]
|
24
|
+
b.should == c
|
25
|
+
end
|
26
|
+
it "create a new Configuration via find_or_create" do
|
27
|
+
c = Noah::Configuration.find_or_create(@appconf_string)
|
28
|
+
c.valid?.should == true
|
29
|
+
c.is_new?.should == true
|
30
|
+
a = Noah::Configuration[c.id]
|
31
|
+
a.should == c
|
32
|
+
end
|
33
|
+
it "update an existing Configuration via find_or_create" do
|
34
|
+
c = Noah::Configuration.find_or_create(@appconf_string)
|
35
|
+
c.valid?.should == true
|
36
|
+
c.is_new?.should == true
|
37
|
+
sleep(3)
|
38
|
+
c.body = "some_other_var"
|
39
|
+
c.save
|
40
|
+
c.body.should == "some_other_var"
|
41
|
+
c.is_new?.should == false
|
42
|
+
end
|
43
|
+
it "delete an existing Configuration" do
|
44
|
+
a = Noah::Configuration.find_or_create(@appconf_string)
|
45
|
+
b = Noah::Configuration.find(@appconf_string).first
|
46
|
+
b.should == a
|
47
|
+
a.delete
|
48
|
+
c = Noah::Configuration.find(@appconf_string).first
|
49
|
+
c.nil?.should == true
|
50
|
+
end
|
51
|
+
it "return all Configurations" do
|
52
|
+
a = Noah::Configuration.find_or_create(@appconf_string)
|
53
|
+
b = Noah::Configuration.find_or_create(@appconf_json)
|
54
|
+
c = Noah::Configurations.all
|
55
|
+
c.size.should == 2
|
56
|
+
c.member?(a).should == true
|
57
|
+
c.member?(b).should == true
|
58
|
+
end
|
13
59
|
end
|
14
60
|
|
15
61
|
describe "should not" do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
it "create a
|
22
|
-
|
62
|
+
it "create a new Configuration without a name" do
|
63
|
+
a = Noah::Configuration.create(@appconf_missing_name)
|
64
|
+
a.valid?.should == false
|
65
|
+
a.errors.should == [[:name, :not_present]]
|
66
|
+
end
|
67
|
+
it "create a new Configuration without a format" do
|
68
|
+
a = Noah::Configuration.create(@appconf_missing_format)
|
69
|
+
a.valid?.should == false
|
70
|
+
a.errors.should == [[:format, :not_present]]
|
71
|
+
end
|
72
|
+
it "create a new Configuration without a body" do
|
73
|
+
a = Noah::Configuration.create(@appconf_missing_body)
|
74
|
+
a.valid?.should == false
|
75
|
+
a.errors.should == [[:body, :not_present]]
|
76
|
+
end
|
77
|
+
it "create a new Confguration without an application" do
|
78
|
+
a = Noah::Configuration.create(@appconf_missing_application)
|
79
|
+
a.valid?.should == false
|
80
|
+
a.errors.should == [[:application_id, :not_present]]
|
81
|
+
end
|
82
|
+
it "create a duplicate Configuration" do
|
83
|
+
a = Noah::Configuration.create(@appconf_string)
|
84
|
+
b = Noah::Configuration.create(@appconf_string)
|
85
|
+
b.errors.should == [[[:name, :application_id], :not_unique]]
|
86
|
+
end
|
23
87
|
end
|
24
88
|
|
25
89
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Using the Ephemeral Model", :reset_redis => true do
|
4
|
+
before(:all) do
|
5
|
+
@edata = {:path => "/foo/bar/baz", :data => "some_value"}
|
6
|
+
@emissing_path = @edata.reject {|k, v| k == :path}
|
7
|
+
@emissing_data = @edata.reject {|k, v| k == :data}
|
8
|
+
@good_ephemeral = Noah::Ephemeral.new(@edata)
|
9
|
+
@missing_path = Noah::Ephemeral.new(@emissing_path)
|
10
|
+
@missing_data = Noah::Ephemeral.new(@emissing_data)
|
11
|
+
end
|
12
|
+
before(:each) do
|
13
|
+
Ohm.redis.flushdb
|
14
|
+
end
|
15
|
+
after(:each) do
|
16
|
+
Ohm.redis.flushdb
|
17
|
+
end
|
18
|
+
describe "should" do
|
19
|
+
it "create a new Noah::Ephemeral" do
|
20
|
+
@good_ephemeral.valid?.should == true
|
21
|
+
@good_ephemeral.save
|
22
|
+
b = Noah::Ephemeral[@good_ephemeral.id]
|
23
|
+
b.should == @good_ephemeral
|
24
|
+
end
|
25
|
+
it "create a new Noah::Ephemeral with missing data" do
|
26
|
+
@missing_data.valid?.should == true
|
27
|
+
@missing_data.save
|
28
|
+
b = Noah::Ephemeral[@missing_data.id]
|
29
|
+
b.should == @missing_data
|
30
|
+
end
|
31
|
+
it "update an existing Noah::Ephemeral" do
|
32
|
+
e = Noah::Ephemeral.create :path => "/is/new/test"
|
33
|
+
Noah::Ephemeral.all.size.should == 1
|
34
|
+
sleep(2)
|
35
|
+
c = Noah::Ephemeral[e.id]
|
36
|
+
c.data = "updated_data"
|
37
|
+
c.save
|
38
|
+
c.is_new?.should == false
|
39
|
+
end
|
40
|
+
it "delete an existing Noah::Ephemeral" do
|
41
|
+
@good_ephemeral.save
|
42
|
+
@good_ephemeral.delete
|
43
|
+
Noah::Ephemeral[@good_ephemeral.id].should == nil
|
44
|
+
end
|
45
|
+
end
|
46
|
+
describe "should not" do
|
47
|
+
it "create a new Noah::Ephemeral with missing path" do
|
48
|
+
e = Noah::Ephemeral.create
|
49
|
+
e.valid?.should == false
|
50
|
+
e.errors.should == [[:path, :not_present]]
|
51
|
+
end
|
52
|
+
it "create a duplicate Noah::Ephemeral" do
|
53
|
+
e = Noah::Ephemeral.create :path => "/random/path"
|
54
|
+
f = Noah::Ephemeral.create :path => "/random/path"
|
55
|
+
f.valid?.should == false
|
56
|
+
f.errors.should == [[:path, :not_unique]]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/spec/host_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe "Using the Host Model", :reset_redis => true do
|
|
6
6
|
it "create a new Host with no services" do
|
7
7
|
hostname = "host1.domain.com"
|
8
8
|
hoststatus = "up"
|
9
|
-
host = Host.create(:name => hostname, :status => hoststatus)
|
9
|
+
host = Noah::Host.create(:name => hostname, :status => hoststatus)
|
10
10
|
host.valid?.should == true
|
11
11
|
host.save
|
12
12
|
host.name.should == hostname
|
@@ -19,10 +19,10 @@ describe "Using the Host Model", :reset_redis => true do
|
|
19
19
|
hoststatus = "down"
|
20
20
|
servicename = 'myservice'
|
21
21
|
servicestatus = 'pending'
|
22
|
-
host = Host.create(:name => hostname, :status => hoststatus)
|
22
|
+
host = Noah::Host.create(:name => hostname, :status => hoststatus)
|
23
23
|
host.valid?.should == true
|
24
24
|
host.save
|
25
|
-
host.services << Service.create(:name => servicename, :status => servicestatus, :host => host)
|
25
|
+
host.services << Noah::Service.create(:name => servicename, :status => servicestatus, :host => host)
|
26
26
|
host.name.should == hostname
|
27
27
|
host.status.should == hoststatus
|
28
28
|
host.services.size.should == 1
|
@@ -35,7 +35,7 @@ describe "Using the Host Model", :reset_redis => true do
|
|
35
35
|
it "create a Host via find_or_create" do
|
36
36
|
hostname = "host3.domain.com"
|
37
37
|
hoststatus = "up"
|
38
|
-
host = Host.find_or_create(:name => hostname, :status => hoststatus)
|
38
|
+
host = Noah::Host.find_or_create(:name => hostname, :status => hoststatus)
|
39
39
|
host.valid?.should == true
|
40
40
|
host.save
|
41
41
|
host.is_new?.should == true
|
@@ -45,12 +45,12 @@ describe "Using the Host Model", :reset_redis => true do
|
|
45
45
|
hostname = "host3.domain.com"
|
46
46
|
hoststatus = "pending"
|
47
47
|
newstatus = "down"
|
48
|
-
host = Host.find_or_create(:name => hostname, :status => hoststatus)
|
48
|
+
host = Noah::Host.find_or_create(:name => hostname, :status => hoststatus)
|
49
49
|
host.valid?.should == true
|
50
50
|
host.save
|
51
51
|
host.is_new?.should == true
|
52
52
|
sleep 1
|
53
|
-
host1 = Host.find_or_create(:name => hostname, :status => newstatus)
|
53
|
+
host1 = Noah::Host.find_or_create(:name => hostname, :status => newstatus)
|
54
54
|
host1.save
|
55
55
|
host1.is_new?.should == false
|
56
56
|
end
|
@@ -58,10 +58,10 @@ describe "Using the Host Model", :reset_redis => true do
|
|
58
58
|
it "delete a Host" do
|
59
59
|
hostname = "host3.domain.com"
|
60
60
|
hoststatus = "pending"
|
61
|
-
host = Host.create(:name => hostname, :status => hoststatus)
|
61
|
+
host = Noah::Host.create(:name => hostname, :status => hoststatus)
|
62
62
|
host.save
|
63
63
|
host.delete
|
64
|
-
Host.find(:name => hostname).empty?.should == true
|
64
|
+
Noah::Host.find(:name => hostname).empty?.should == true
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should return all Hosts" do
|
@@ -69,30 +69,30 @@ describe "Using the Host Model", :reset_redis => true do
|
|
69
69
|
status1 = "up"
|
70
70
|
hostname2 = "host2.domain.com"
|
71
71
|
status2= "down"
|
72
|
-
host1 = Host.create(:name => hostname1, :status => status1)
|
73
|
-
host2 = Host.create(:name => hostname2, :status => status2)
|
72
|
+
host1 = Noah::Host.create(:name => hostname1, :status => status1)
|
73
|
+
host2 = Noah::Host.create(:name => hostname2, :status => status2)
|
74
74
|
host1.save
|
75
75
|
host2.save
|
76
|
-
Hosts.all.class.should == Array
|
77
|
-
Hosts.all.size.should == 2
|
78
|
-
Hosts.all.first.name.should == hostname1
|
79
|
-
Hosts.all.first.status.should == status1
|
80
|
-
Hosts.all.last.name.should == hostname2
|
81
|
-
Hosts.all.last.status.should == status2
|
76
|
+
Noah::Hosts.all.class.should == Array
|
77
|
+
Noah::Hosts.all.size.should == 2
|
78
|
+
Noah::Hosts.all.first.name.should == hostname1
|
79
|
+
Noah::Hosts.all.first.status.should == status1
|
80
|
+
Noah::Hosts.all.last.name.should == hostname2
|
81
|
+
Noah::Hosts.all.last.status.should == status2
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
85
|
describe "should not" do
|
86
86
|
it "create a new Host with missing status" do
|
87
87
|
hostname ="host3.domain.com"
|
88
|
-
host = Host.create(:name => hostname)
|
88
|
+
host = Noah::Host.create(:name => hostname)
|
89
89
|
host.valid?.should == false
|
90
90
|
host.errors.should == [[:status, :not_present], [:status, :not_member]]
|
91
91
|
end
|
92
92
|
|
93
93
|
it "create a new Host with missing hostname" do
|
94
94
|
status = "up"
|
95
|
-
host = Host.create(:status => status)
|
95
|
+
host = Noah::Host.create(:status => status)
|
96
96
|
host.valid?.should == false
|
97
97
|
host.errors.should == [[:name, :not_present]]
|
98
98
|
end
|
@@ -100,7 +100,7 @@ describe "Using the Host Model", :reset_redis => true do
|
|
100
100
|
it "create a new Host with an invalid status" do
|
101
101
|
hostname = "host3.domain.com"
|
102
102
|
status = "online"
|
103
|
-
host = Host.create(:name => hostname, :status => status)
|
103
|
+
host = Noah::Host.create(:name => hostname, :status => status)
|
104
104
|
host.valid?.should == false
|
105
105
|
host.errors.should == [[:status, :not_member]]
|
106
106
|
end
|
@@ -108,9 +108,9 @@ describe "Using the Host Model", :reset_redis => true do
|
|
108
108
|
it "create a duplicate Host" do
|
109
109
|
hostname = "host1.domain.com"
|
110
110
|
status = "up"
|
111
|
-
host1 = Host.create(:name => hostname, :status => status)
|
111
|
+
host1 = Noah::Host.create(:name => hostname, :status => status)
|
112
112
|
host1.save
|
113
|
-
host2 = Host.create(:name => hostname, :status => status)
|
113
|
+
host2 = Noah::Host.create(:name => hostname, :status => status)
|
114
114
|
host2.valid?.should == false
|
115
115
|
host2.errors.should == [[:name, :not_unique]]
|
116
116
|
end
|
@@ -2,8 +2,8 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe "Using the Application API", :reset_redis => false do
|
4
4
|
before(:all) do
|
5
|
-
@a = Application.create(:name => 'rspec_sample_app')
|
6
|
-
@a.configurations << Configuration.create(:name => 'rspec_config', :format => 'string', :body => 'rspec is great', :application => @a)
|
5
|
+
@a = Noah::Application.create(:name => 'rspec_sample_app')
|
6
|
+
@a.configurations << Noah::Configuration.create(:name => 'rspec_config', :format => 'string', :body => 'rspec is great', :application => @a)
|
7
7
|
@a.save
|
8
8
|
@c = @a.configurations.first
|
9
9
|
end
|
@@ -62,8 +62,8 @@ describe "Using the Application API", :reset_redis => false do
|
|
62
62
|
response["id"].nil?.should == false
|
63
63
|
response["name"].should == @appdata[:name]
|
64
64
|
response["action"].should == "create"
|
65
|
-
Application.find(:name => @appdata[:name]).size.should == 1
|
66
|
-
Application.find(:name => @appdata[:name]).first.is_new?.should == true
|
65
|
+
Noah::Application.find(:name => @appdata[:name]).size.should == 1
|
66
|
+
Noah::Application.find(:name => @appdata[:name]).first.is_new?.should == true
|
67
67
|
end
|
68
68
|
it "new application with missing name should not work" do
|
69
69
|
put "/a/should_not_work", '{"foo":"bar"}', "CONTENT_TYPE" => "application/json"
|
@@ -79,8 +79,8 @@ describe "Using the Application API", :reset_redis => false do
|
|
79
79
|
response["id"].nil?.should == false
|
80
80
|
response["name"].should == @appdata[:name]
|
81
81
|
response["action"].should == "update"
|
82
|
-
Application.find(:name => @appdata[:name]).size.should == 1
|
83
|
-
Application.find(:name => @appdata[:name]).first.is_new?.should == false
|
82
|
+
Noah::Application.find(:name => @appdata[:name]).size.should == 1
|
83
|
+
Noah::Application.find(:name => @appdata[:name]).first.is_new?.should == false
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
@@ -34,8 +34,8 @@ describe "Using the Configuration API", :reset_redis => false, :populate_sample_
|
|
34
34
|
response = YAML.load(last_response.body)
|
35
35
|
response.is_a?(Hash).should == true
|
36
36
|
response.keys.should == ["development"]
|
37
|
-
response["development"].keys.should == ["
|
38
|
-
response["development"].values.should == ["
|
37
|
+
response["development"].keys.sort.should == ["adapter", "database", "password", "username"]
|
38
|
+
response["development"].values.sort.should == ["dev_password", "dev_user", "development_database", "mysql"]
|
39
39
|
end
|
40
40
|
it "invalid application should not work" do
|
41
41
|
get '/c/badapp'
|
@@ -85,9 +85,9 @@ describe "Using the Configuration API", :reset_redis => false, :populate_sample_
|
|
85
85
|
|
86
86
|
describe "DELETE" do
|
87
87
|
before(:all) do
|
88
|
-
|
89
|
-
|
90
|
-
@a.configurations << Configuration.create(cparms)
|
88
|
+
@a = Noah::Application.create(:name => 'delete_test_app')
|
89
|
+
cparms = {:name => 'a', :format => 'string', :body => 'asdf', :application_id => @a.id}
|
90
|
+
@a.configurations << Noah::Configuration.create(cparms)
|
91
91
|
@a.save
|
92
92
|
@c = @a.configurations.first
|
93
93
|
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Using the Ephemeral API", :reset_redis => true do
|
4
|
+
before(:each) do
|
5
|
+
Ohm.redis.flushdb
|
6
|
+
Noah::Ephemeral.create(:path => "/foo/bar/baz", :data => "value1")
|
7
|
+
Noah::Ephemeral.create(:path => "/baz/bar")
|
8
|
+
end
|
9
|
+
after(:each) do
|
10
|
+
Ohm.redis.flushdb
|
11
|
+
end
|
12
|
+
describe "calling" do
|
13
|
+
|
14
|
+
describe "GET" do
|
15
|
+
it "all ephemerals should return 404" do
|
16
|
+
get '/e'
|
17
|
+
last_response.should_not be_ok
|
18
|
+
last_response.status.should == 404
|
19
|
+
response = last_response.should return_json
|
20
|
+
response['error_message'].should == 'Resource not found'
|
21
|
+
response['result'].should == 'failure'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "named path with data should work" do
|
25
|
+
get '/e/foo/bar/baz'
|
26
|
+
last_response.should be_ok
|
27
|
+
last_response.body.should == 'value1'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "named path without data should work" do
|
31
|
+
get '/e/baz/bar'
|
32
|
+
last_response.status.should == 200
|
33
|
+
last_response.body.should == ""
|
34
|
+
end
|
35
|
+
|
36
|
+
it "invalid path should not work" do
|
37
|
+
get '/e/ssss/dddd'
|
38
|
+
last_response.should_not be_ok
|
39
|
+
last_response.status.should == 404
|
40
|
+
response = last_response.should return_json
|
41
|
+
response['error_message'].should == 'Resource not found'
|
42
|
+
response['result'].should == 'failure'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "PUT" do
|
47
|
+
it "new ephemeral with data should work" do
|
48
|
+
put '/e/whiz/bang/', 'value3'
|
49
|
+
last_response.should be_ok
|
50
|
+
response = last_response.should return_json
|
51
|
+
response['result'].should == 'success'
|
52
|
+
response['id'].nil?.should == false
|
53
|
+
response['path'].should == '/whiz/bang/'
|
54
|
+
response['data'].should == 'value3'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "new ephemeral without data should work" do
|
58
|
+
put '/e/bang/whiz'
|
59
|
+
last_response.should be_ok
|
60
|
+
response = last_response.should return_json
|
61
|
+
response['result'].should == 'success'
|
62
|
+
response['action'].should == 'create'
|
63
|
+
response['id'].nil?.should == false
|
64
|
+
response['path'].should == '/bang/whiz'
|
65
|
+
response['data'].should == nil
|
66
|
+
end
|
67
|
+
|
68
|
+
it "existing ephemeral with data should work" do
|
69
|
+
Noah::Ephemeral.create(:path => '/new/ephemeral', :data => 'old_value')
|
70
|
+
get '/e/new/ephemeral'
|
71
|
+
last_response.should be_ok
|
72
|
+
last_response.body.should == 'old_value'
|
73
|
+
put '/e/new/ephemeral', 'new_value'
|
74
|
+
last_response.should be_ok
|
75
|
+
get '/e/new/ephemeral'
|
76
|
+
last_response.should be_ok
|
77
|
+
last_response.body.should == 'new_value'
|
78
|
+
end
|
79
|
+
it "existing ephemeral without data should work" do
|
80
|
+
Noah::Ephemeral.create(:path => '/a/random/key')
|
81
|
+
get '/e/a/random/key'
|
82
|
+
last_response.should be_ok
|
83
|
+
last_response.body.should == ""
|
84
|
+
put '/e/a/random/key', 'a new value'
|
85
|
+
last_response.should be_ok
|
86
|
+
get '/e/a/random/key'
|
87
|
+
last_response.should be_ok
|
88
|
+
last_response.body.should == 'a new value'
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "DELETE" do
|
93
|
+
it "existing path should work" do
|
94
|
+
e = Noah::Ephemeral.new(:path => '/slart/i/bart/fast', :data => 'someddata')
|
95
|
+
e.save
|
96
|
+
delete "/e/slart/i/bart/fast"
|
97
|
+
last_response.should be_ok
|
98
|
+
response = last_response.should return_json
|
99
|
+
response['result'].should == 'success'
|
100
|
+
response['action'].should == 'delete'
|
101
|
+
response['id'].should == e.id
|
102
|
+
response['path'].should == e.name
|
103
|
+
end
|
104
|
+
|
105
|
+
it "invalid path should not work" do
|
106
|
+
delete '/e/fork/spoon/knife'
|
107
|
+
last_response.should_not be_ok
|
108
|
+
last_response.status.should == 404
|
109
|
+
response = last_response.should return_json
|
110
|
+
response['error_message'].should == 'Resource not found'
|
111
|
+
response['result'].should == 'failure'
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|