proby 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +36 -0
- data/README.md +95 -0
- data/Rakefile +38 -0
- data/lib/proby/exceptions.rb +13 -0
- data/lib/proby/notifier.rb +28 -0
- data/lib/proby/proby_http_api.rb +28 -0
- data/lib/proby/proby_task.rb +278 -0
- data/lib/proby/resque_plugin.rb +65 -0
- data/lib/proby/version.rb +3 -0
- data/lib/proby.rb +75 -0
- data/proby.gemspec +35 -0
- data/test/notifier_test.rb +60 -0
- data/test/proby_task_test.rb +375 -0
- data/test/test_helper.rb +16 -0
- metadata +246 -0
data/proby.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/proby/version", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "proby"
|
6
|
+
s.license = "MIT"
|
7
|
+
s.version = Proby::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["John Wood", "Doug Barth"]
|
10
|
+
s.email = ["john@signalhq.com", "doug@signalhq.com"]
|
11
|
+
s.homepage = "http://github.com/signal/proby-ruby"
|
12
|
+
s.summary = %Q{A simple library for working with the Proby task monitoring application.}
|
13
|
+
s.description = %Q{A simple library for working with the Proby task monitoring application.}
|
14
|
+
|
15
|
+
s.rubyforge_project = "proby"
|
16
|
+
|
17
|
+
s.required_rubygems_version = ">= 1.3.6"
|
18
|
+
|
19
|
+
s.add_dependency 'httparty', '~> 0.8.1'
|
20
|
+
s.add_dependency 'chronic', '~> 0.6.7'
|
21
|
+
s.add_dependency 'multi_json', '~> 1.2.0'
|
22
|
+
|
23
|
+
s.add_development_dependency "bundler", ">= 1.0.0"
|
24
|
+
s.add_development_dependency "rake", "~> 0.9.0"
|
25
|
+
s.add_development_dependency "yard", "~> 0.6.4"
|
26
|
+
s.add_development_dependency "bluecloth", "~> 2.1.0"
|
27
|
+
s.add_development_dependency "fakeweb", "~> 1.3.0"
|
28
|
+
s.add_development_dependency "shoulda", "~> 2.11.3"
|
29
|
+
s.add_development_dependency "json", "~> 1.6.6"
|
30
|
+
|
31
|
+
s.files = `git ls-files`.split("\n")
|
32
|
+
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
33
|
+
s.require_path = 'lib'
|
34
|
+
end
|
35
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class NotifierTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
ENV['PROBY_TASK_ID'] = nil
|
7
|
+
FakeWeb.clean_registry
|
8
|
+
FakeWeb.allow_net_connect = false
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
FakeWeb.allow_net_connect = true
|
13
|
+
end
|
14
|
+
|
15
|
+
should "not send the notification if the api_key is not set" do
|
16
|
+
assert_nil Proby.send_start_notification("abc123")
|
17
|
+
end
|
18
|
+
|
19
|
+
context "with an api key set" do
|
20
|
+
setup do
|
21
|
+
Proby.api_key = '1234567890abcdefg'
|
22
|
+
end
|
23
|
+
|
24
|
+
should "not send the notification if a task id was not specified" do
|
25
|
+
assert_nil Proby.send_start_notification
|
26
|
+
end
|
27
|
+
|
28
|
+
should "not send the notification if a task id is blank" do
|
29
|
+
assert_nil Proby.send_start_notification(" ")
|
30
|
+
end
|
31
|
+
|
32
|
+
should "send a start notification if a task_id is specified in the call" do
|
33
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + "/api/v1/tasks/abc123xyz456/start.json", :status => ["200", "OK"])
|
34
|
+
assert_equal 200, Proby.send_start_notification("abc123xyz456")
|
35
|
+
end
|
36
|
+
|
37
|
+
should "send a start notification if a task_id is specified in an environment variable" do
|
38
|
+
ENV['PROBY_TASK_ID'] = "uuu777sss999"
|
39
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + "/api/v1/tasks/uuu777sss999/start.json", :status => ["200", "OK"])
|
40
|
+
assert_equal 200, Proby.send_start_notification
|
41
|
+
end
|
42
|
+
|
43
|
+
should "send a finish notification if a task_id is specified in the call" do
|
44
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + "/api/v1/tasks/abc123xyz456/finish.json", :status => ["200", "OK"])
|
45
|
+
assert_equal 200, Proby.send_finish_notification("abc123xyz456")
|
46
|
+
end
|
47
|
+
|
48
|
+
should "send a finish notification with options if options are specified" do
|
49
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + "/api/v1/tasks/abc123xyz456/finish.json", :status => ["200", "OK"])
|
50
|
+
assert_equal 200, Proby.send_finish_notification("abc123xyz456", :failed => true, :error_message => "something bad happened")
|
51
|
+
end
|
52
|
+
|
53
|
+
should "send a finish notification if a task_id is specified in an environment variable" do
|
54
|
+
ENV['PROBY_TASK_ID'] = "iii999ooo222"
|
55
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + "/api/v1/tasks/iii999ooo222/finish.json", :status => ["200", "OK"])
|
56
|
+
assert_equal 200, Proby.send_finish_notification
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,375 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ProbyTaskTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
Proby.api_key = '1234567890abcdefg'
|
7
|
+
FakeWeb.clean_registry
|
8
|
+
FakeWeb.allow_net_connect = false
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
FakeWeb.allow_net_connect = true
|
13
|
+
end
|
14
|
+
|
15
|
+
should "raise an error if the api key has not been set" do
|
16
|
+
Proby.api_key = nil
|
17
|
+
e = assert_raise(Proby::InvalidApiKeyException) do
|
18
|
+
Proby::ProbyTask.find(:all)
|
19
|
+
end
|
20
|
+
assert_equal "Your Proby API key has not been set. Set it using Proby.api_key = 'my_api_key'", e.message
|
21
|
+
end
|
22
|
+
|
23
|
+
should "be able to get a list of tasks" do
|
24
|
+
FakeWeb.register_uri(:get, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks.json', :status => ['200', 'OK'], :body => <<-END)
|
25
|
+
{
|
26
|
+
"tasks": [
|
27
|
+
{
|
28
|
+
"name": "task 1",
|
29
|
+
"api_id": "abc123",
|
30
|
+
"crontab": "* * * * *",
|
31
|
+
"paused": false,
|
32
|
+
"time_zone": "UTC",
|
33
|
+
"machine": null,
|
34
|
+
"finish_alarms_enabled": true,
|
35
|
+
"maximum_run_time": null,
|
36
|
+
"start_notification_grace_period": 5,
|
37
|
+
"consecutive_alarmed_tasks": 0,
|
38
|
+
"consecutive_alarmed_tasks_required_to_trigger_alarm": 1,
|
39
|
+
"created_at": "2012-04-25 20:10:20 UTC",
|
40
|
+
"updated_at": "2012-04-25 20:10:20 UTC",
|
41
|
+
"status": {
|
42
|
+
"description": "OK",
|
43
|
+
"details": ""
|
44
|
+
}
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"name": "task 2",
|
48
|
+
"api_id": "abc456",
|
49
|
+
"crontab": "* * * * *",
|
50
|
+
"paused": false,
|
51
|
+
"time_zone": "UTC",
|
52
|
+
"machine": "dopey",
|
53
|
+
"finish_alarms_enabled": true,
|
54
|
+
"maximum_run_time": 90,
|
55
|
+
"start_notification_grace_period": 5,
|
56
|
+
"consecutive_alarmed_tasks": 3,
|
57
|
+
"consecutive_alarmed_tasks_required_to_trigger_alarm": 1,
|
58
|
+
"created_at": "2012-04-25 20:10:20 UTC",
|
59
|
+
"updated_at": "2012-04-25 20:10:20 UTC",
|
60
|
+
"status": {
|
61
|
+
"description": "OK",
|
62
|
+
"details": "Wonderful"
|
63
|
+
}
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"name": "task 3",
|
67
|
+
"api_id": "abc789",
|
68
|
+
"crontab": "1 2 3 4 5",
|
69
|
+
"paused": false,
|
70
|
+
"time_zone": "UTC",
|
71
|
+
"machine": null,
|
72
|
+
"finish_alarms_enabled": true,
|
73
|
+
"maximum_run_time": null,
|
74
|
+
"start_notification_grace_period": 5,
|
75
|
+
"consecutive_alarmed_tasks": 0,
|
76
|
+
"consecutive_alarmed_tasks_required_to_trigger_alarm": 1,
|
77
|
+
"created_at": "2012-04-25 20:10:20 UTC",
|
78
|
+
"updated_at": "2012-04-25 20:10:20 UTC",
|
79
|
+
"status": {
|
80
|
+
"description": "OK",
|
81
|
+
"details": ""
|
82
|
+
}
|
83
|
+
}
|
84
|
+
]
|
85
|
+
}
|
86
|
+
END
|
87
|
+
tasks = Proby::ProbyTask.find(:all)
|
88
|
+
assert_equal 3, tasks.size
|
89
|
+
|
90
|
+
task = tasks[1]
|
91
|
+
assert_equal "task 2", task.name
|
92
|
+
assert_equal "abc456", task.api_id
|
93
|
+
assert_equal "* * * * *", task.crontab
|
94
|
+
assert_equal false, task.paused
|
95
|
+
assert_equal "UTC", task.time_zone
|
96
|
+
assert_equal "dopey", task.machine
|
97
|
+
assert_equal true, task.finish_alarms_enabled
|
98
|
+
assert_equal 90, task.maximum_run_time
|
99
|
+
assert_equal 5, task.start_notification_grace_period
|
100
|
+
assert_equal 3, task.consecutive_alarmed_tasks
|
101
|
+
assert_equal 1, task.consecutive_alarmed_tasks_required_to_trigger_alarm
|
102
|
+
assert_equal Time.utc(2012, 4, 25, 20, 10, 20), task.created_at
|
103
|
+
assert_equal Time.utc(2012, 4, 25, 20, 10, 20), task.updated_at
|
104
|
+
assert_equal "OK", task.status.description
|
105
|
+
assert_equal "Wonderful", task.status.details
|
106
|
+
end
|
107
|
+
|
108
|
+
should "raise an exception if unable to get a list of tasks" do
|
109
|
+
FakeWeb.register_uri(:get, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks.json', :status => ['400', 'Bad request'], :body => <<-END)
|
110
|
+
{
|
111
|
+
"request" : "http://www.example.com/api/v1/tasks.json",
|
112
|
+
"message" : "Something bad happened"
|
113
|
+
}
|
114
|
+
END
|
115
|
+
e = assert_raise Proby::ApiException do
|
116
|
+
Proby::ProbyTask.find(:all)
|
117
|
+
end
|
118
|
+
assert e.message.include?("API request failed with a response code of 400")
|
119
|
+
assert e.message.include?("Something bad happened")
|
120
|
+
end
|
121
|
+
|
122
|
+
should "be able to display a specific task" do
|
123
|
+
FakeWeb.register_uri(:get, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123.json', :status => ['200', 'OK'], :body => <<-END)
|
124
|
+
{
|
125
|
+
"task": {
|
126
|
+
"name": "task 1",
|
127
|
+
"api_id": "abc123",
|
128
|
+
"crontab": "* * * * *",
|
129
|
+
"paused": false,
|
130
|
+
"time_zone": "UTC",
|
131
|
+
"machine": "dopey",
|
132
|
+
"finish_alarms_enabled": true,
|
133
|
+
"maximum_run_time": 90,
|
134
|
+
"start_notification_grace_period": 5,
|
135
|
+
"consecutive_alarmed_tasks": 3,
|
136
|
+
"consecutive_alarmed_tasks_required_to_trigger_alarm": 1,
|
137
|
+
"created_at": "2012-04-25 20:10:20 UTC",
|
138
|
+
"updated_at": "2012-04-25 20:10:20 UTC",
|
139
|
+
"status": {
|
140
|
+
"description": "OK",
|
141
|
+
"details": "Wonderful"
|
142
|
+
}
|
143
|
+
}
|
144
|
+
}
|
145
|
+
END
|
146
|
+
|
147
|
+
task = Proby::ProbyTask.find("abc123")
|
148
|
+
assert_equal "task 1", task.name
|
149
|
+
assert_equal "abc123", task.api_id
|
150
|
+
assert_equal "* * * * *", task.crontab
|
151
|
+
assert_equal false, task.paused
|
152
|
+
assert_equal "UTC", task.time_zone
|
153
|
+
assert_equal "dopey", task.machine
|
154
|
+
assert_equal true, task.finish_alarms_enabled
|
155
|
+
assert_equal 90, task.maximum_run_time
|
156
|
+
assert_equal 5, task.start_notification_grace_period
|
157
|
+
assert_equal 3, task.consecutive_alarmed_tasks
|
158
|
+
assert_equal 1, task.consecutive_alarmed_tasks_required_to_trigger_alarm
|
159
|
+
assert_equal Time.utc(2012, 4, 25, 20, 10, 20), task.created_at
|
160
|
+
assert_equal Time.utc(2012, 4, 25, 20, 10, 20), task.updated_at
|
161
|
+
assert_equal "OK", task.status.description
|
162
|
+
assert_equal "Wonderful", task.status.details
|
163
|
+
end
|
164
|
+
|
165
|
+
should "return nil if the specific task could not be found" do
|
166
|
+
FakeWeb.register_uri(:get, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123.json', :status => ['404', 'Not Found'])
|
167
|
+
assert_nil Proby::ProbyTask.find("abc123")
|
168
|
+
end
|
169
|
+
|
170
|
+
should "raise an exception if unable to fetch a specific task" do
|
171
|
+
FakeWeb.register_uri(:get, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123.json', :status => ['400', 'Bad request'], :body => <<-END)
|
172
|
+
{
|
173
|
+
"request" : "http://www.example.com/api/v1/tasks/abc123.json",
|
174
|
+
"message" : "Something bad happened"
|
175
|
+
}
|
176
|
+
END
|
177
|
+
e = assert_raise Proby::ApiException do
|
178
|
+
Proby::ProbyTask.find("abc123")
|
179
|
+
end
|
180
|
+
assert e.message.include?("API request failed with a response code of 400")
|
181
|
+
assert e.message.include?("Something bad happened")
|
182
|
+
end
|
183
|
+
|
184
|
+
should "raise an error if trying to fetch a task without specifying the api_id" do
|
185
|
+
assert_raise(Proby::InvalidParameterException) { Proby::ProbyTask.find(nil) }
|
186
|
+
assert_raise(Proby::InvalidParameterException) { Proby::ProbyTask.find(" ") }
|
187
|
+
end
|
188
|
+
|
189
|
+
should "be able to create a new task" do
|
190
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks.json', :status => ['201', 'Created'], :body => <<-END)
|
191
|
+
{
|
192
|
+
"task": {
|
193
|
+
"name": "task 1",
|
194
|
+
"api_id": "abc123",
|
195
|
+
"crontab": "* * * * *",
|
196
|
+
"paused": false,
|
197
|
+
"time_zone": "UTC",
|
198
|
+
"machine": "dopey",
|
199
|
+
"finish_alarms_enabled": true,
|
200
|
+
"maximum_run_time": 90,
|
201
|
+
"start_notification_grace_period": 5,
|
202
|
+
"consecutive_alarmed_tasks": 3,
|
203
|
+
"consecutive_alarmed_tasks_required_to_trigger_alarm": 1,
|
204
|
+
"created_at": "2012-04-25 20:10:20 UTC",
|
205
|
+
"updated_at": "2012-04-25 20:10:20 UTC",
|
206
|
+
"status": {
|
207
|
+
"description": "OK",
|
208
|
+
"details": "Wonderful"
|
209
|
+
}
|
210
|
+
}
|
211
|
+
}
|
212
|
+
END
|
213
|
+
|
214
|
+
# Not specifying all attributes, for berivity
|
215
|
+
task = Proby::ProbyTask.create(:name => "abc123", :crontab => "* * * * *")
|
216
|
+
|
217
|
+
assert_equal "task 1", task.name
|
218
|
+
assert_equal "abc123", task.api_id
|
219
|
+
assert_equal "* * * * *", task.crontab
|
220
|
+
assert_equal false, task.paused
|
221
|
+
assert_equal "UTC", task.time_zone
|
222
|
+
assert_equal "dopey", task.machine
|
223
|
+
assert_equal true, task.finish_alarms_enabled
|
224
|
+
assert_equal 90, task.maximum_run_time
|
225
|
+
assert_equal 5, task.start_notification_grace_period
|
226
|
+
assert_equal 3, task.consecutive_alarmed_tasks
|
227
|
+
assert_equal 1, task.consecutive_alarmed_tasks_required_to_trigger_alarm
|
228
|
+
assert_equal Time.utc(2012, 4, 25, 20, 10, 20), task.created_at
|
229
|
+
assert_equal Time.utc(2012, 4, 25, 20, 10, 20), task.updated_at
|
230
|
+
assert_equal "OK", task.status.description
|
231
|
+
assert_equal "Wonderful", task.status.details
|
232
|
+
end
|
233
|
+
|
234
|
+
should "raise an exception if unable to create a task" do
|
235
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks.json', :status => ['400', 'Bad request'], :body => <<-END)
|
236
|
+
{
|
237
|
+
"request" : "http://www.example.com/api/v1/tasks.json",
|
238
|
+
"message" : "Something bad happened"
|
239
|
+
}
|
240
|
+
END
|
241
|
+
e = assert_raise Proby::ApiException do
|
242
|
+
Proby::ProbyTask.create(:name => "foo", :crontab => "invalid")
|
243
|
+
end
|
244
|
+
assert e.message.include?("API request failed with a response code of 400")
|
245
|
+
assert e.message.include?("Something bad happened")
|
246
|
+
end
|
247
|
+
|
248
|
+
should "raise an error if trying to create a task without specifying the attributes" do
|
249
|
+
assert_raise(Proby::InvalidParameterException) { Proby::ProbyTask.create(nil) }
|
250
|
+
assert_raise(Proby::InvalidParameterException) { Proby::ProbyTask.create({}) }
|
251
|
+
end
|
252
|
+
|
253
|
+
should "raise an error if trying to create a task without the necessary required attributes" do
|
254
|
+
assert_raise(Proby::InvalidParameterException) { Proby::ProbyTask.create(:name => "Foo") }
|
255
|
+
assert_raise(Proby::InvalidParameterException) { Proby::ProbyTask.create(:crontab => "* * * * *") }
|
256
|
+
end
|
257
|
+
|
258
|
+
should "be able to update a task" do
|
259
|
+
FakeWeb.register_uri(:put, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123.json', :status => ['200', 'OK'])
|
260
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *')
|
261
|
+
proby_task.name = "New name"
|
262
|
+
proby_task.crontab = "1 2 3 4 5"
|
263
|
+
proby_task.time_zone = "UTC"
|
264
|
+
proby_task.machine = "sleepy"
|
265
|
+
proby_task.finish_alarms_enabled = "false"
|
266
|
+
proby_task.maximum_run_time = 60
|
267
|
+
proby_task.start_notification_grace_period = 10
|
268
|
+
proby_task.consecutive_alarmed_tasks_required_to_trigger_alarm = 4
|
269
|
+
assert proby_task.save
|
270
|
+
end
|
271
|
+
|
272
|
+
should "raise an exception if unable to update a task" do
|
273
|
+
FakeWeb.register_uri(:put, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123.json', :status => ['400', 'Bad request'], :body => <<-END)
|
274
|
+
{
|
275
|
+
"request" : "http://www.example.com/api/v1/tasks/abc123.json",
|
276
|
+
"message" : "Something bad happened"
|
277
|
+
}
|
278
|
+
END
|
279
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *')
|
280
|
+
proby_task.name = "New name"
|
281
|
+
proby_task.crontab = "1 2 3 4 5"
|
282
|
+
e = assert_raise Proby::ApiException do
|
283
|
+
proby_task.save
|
284
|
+
end
|
285
|
+
assert e.message.include?("API request failed with a response code of 400")
|
286
|
+
assert e.message.include?("Something bad happened")
|
287
|
+
end
|
288
|
+
|
289
|
+
should "raise an error if trying to update a task without the necessary required attributes" do
|
290
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *')
|
291
|
+
|
292
|
+
proby_task.name = nil
|
293
|
+
assert_raise(Proby::InvalidParameterException) { proby_task.save }
|
294
|
+
|
295
|
+
proby_task.name = " "
|
296
|
+
assert_raise(Proby::InvalidParameterException) { proby_task.save }
|
297
|
+
|
298
|
+
proby_task.crontab = nil
|
299
|
+
assert_raise(Proby::InvalidParameterException) { proby_task.save }
|
300
|
+
|
301
|
+
proby_task.crontab = " "
|
302
|
+
assert_raise(Proby::InvalidParameterException) { proby_task.save }
|
303
|
+
end
|
304
|
+
|
305
|
+
should "be able to delete a task" do
|
306
|
+
FakeWeb.register_uri(:delete, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123.json', :status => ['200', 'OK'])
|
307
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *')
|
308
|
+
assert proby_task.delete
|
309
|
+
assert proby_task.frozen?
|
310
|
+
e = assert_raise TypeError do
|
311
|
+
proby_task.name = "foo"
|
312
|
+
end
|
313
|
+
assert_equal "can't modify frozen object", e.message
|
314
|
+
end
|
315
|
+
|
316
|
+
should "raise an exception if unable to delete a task" do
|
317
|
+
FakeWeb.register_uri(:delete, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123.json', :status => ['400', 'Bad request'], :body => <<-END)
|
318
|
+
{
|
319
|
+
"request" : "http://www.example.com/api/v1/tasks/abc123.json",
|
320
|
+
"message" : "Something bad happened"
|
321
|
+
}
|
322
|
+
END
|
323
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *')
|
324
|
+
e = assert_raise Proby::ApiException do
|
325
|
+
proby_task.delete
|
326
|
+
end
|
327
|
+
assert e.message.include?("API request failed with a response code of 400")
|
328
|
+
assert e.message.include?("Something bad happened")
|
329
|
+
end
|
330
|
+
|
331
|
+
should "be able to pause a task" do
|
332
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123/pause.json', :status => ['200', 'OK'])
|
333
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *', 'paused' => 'false')
|
334
|
+
assert proby_task.pause
|
335
|
+
assert_equal true, proby_task.paused
|
336
|
+
end
|
337
|
+
|
338
|
+
should "raise an exception if unable to pause a task" do
|
339
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123/pause.json', :status => ['400', 'Bad request'], :body => <<-END)
|
340
|
+
{
|
341
|
+
"request" : "http://www.example.com/api/v1/tasks/abc123/pause.json",
|
342
|
+
"message" : "Something bad happened"
|
343
|
+
}
|
344
|
+
END
|
345
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *')
|
346
|
+
e = assert_raise Proby::ApiException do
|
347
|
+
proby_task.pause
|
348
|
+
end
|
349
|
+
assert e.message.include?("API request failed with a response code of 400")
|
350
|
+
assert e.message.include?("Something bad happened")
|
351
|
+
end
|
352
|
+
|
353
|
+
should "be able to unpause a task" do
|
354
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123/unpause.json', :status => ['200', 'OK'])
|
355
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *', 'paused' => 'true')
|
356
|
+
assert proby_task.unpause
|
357
|
+
assert_equal false, proby_task.paused
|
358
|
+
end
|
359
|
+
|
360
|
+
should "raise an exception if unable to unpause a task" do
|
361
|
+
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + '/api/v1/tasks/abc123/unpause.json', :status => ['400', 'Bad request'], :body => <<-END)
|
362
|
+
{
|
363
|
+
"request" : "http://www.example.com/api/v1/tasks/abc123/unpause.json",
|
364
|
+
"message" : "Something bad happened"
|
365
|
+
}
|
366
|
+
END
|
367
|
+
proby_task = Proby::ProbyTask.new('api_id' => 'abc123', 'name' => 'Test task', 'crontab' => '* * * * *')
|
368
|
+
e = assert_raise Proby::ApiException do
|
369
|
+
proby_task.unpause
|
370
|
+
end
|
371
|
+
assert e.message.include?("API request failed with a response code of 400")
|
372
|
+
assert e.message.include?("Something bad happened")
|
373
|
+
end
|
374
|
+
|
375
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'test/unit'
|
12
|
+
require 'fakeweb'
|
13
|
+
require 'shoulda'
|
14
|
+
|
15
|
+
require 'proby'
|
16
|
+
|