@@ -39,6 +39,10 @@ module Agents |
||
39 | 39 |
else |
40 | 40 |
errors.add(:base, "The 'code' option is required") unless options['code'].present? |
41 | 41 |
end |
42 |
+ |
|
43 |
+ if interpolated['language'].present? && !interpolated['language'].downcase.in?(%w[javascript coffeescript]) |
|
44 |
+ errors.add(:base, "The 'language' must be JavaScript or CoffeeScript") |
|
45 |
+ end |
|
42 | 46 |
end |
43 | 47 |
|
44 | 48 |
def working? |
@@ -23,6 +23,24 @@ describe Agents::JavaScriptAgent do |
||
23 | 23 |
expect(@agent).not_to be_valid |
24 | 24 |
end |
25 | 25 |
|
26 |
+ it "checks for a valid 'language', but allows nil" do |
|
27 |
+ expect(@agent).to be_valid |
|
28 |
+ @agent.options['language'] = '' |
|
29 |
+ expect(@agent).to be_valid |
|
30 |
+ @agent.options.delete('language') |
|
31 |
+ expect(@agent).to be_valid |
|
32 |
+ @agent.options['language'] = 'foo' |
|
33 |
+ expect(@agent).not_to be_valid |
|
34 |
+ @agent.options['language'] = 'javascript' |
|
35 |
+ expect(@agent).to be_valid |
|
36 |
+ @agent.options['language'] = 'JavaScript' |
|
37 |
+ expect(@agent).to be_valid |
|
38 |
+ @agent.options['language'] = 'coffeescript' |
|
39 |
+ expect(@agent).to be_valid |
|
40 |
+ @agent.options['language'] = 'CoffeeScript' |
|
41 |
+ expect(@agent).to be_valid |
|
42 |
+ end |
|
43 |
+ |
|
26 | 44 |
it "accepts a credential, but it must exist" do |
27 | 45 |
expect(@agent).to be_valid |
28 | 46 |
@agent.options['code'] = 'credential:foo' |
@@ -74,7 +92,6 @@ describe Agents::JavaScriptAgent do |
||
74 | 92 |
}.to change { Event.count }.by(2) |
75 | 93 |
end |
76 | 94 |
|
77 |
- |
|
78 | 95 |
describe "using credentials as code" do |
79 | 96 |
before do |
80 | 97 |
@agent.user.user_credentials.create :credential_name => 'code-foo', :credential_value => 'Agent.check = function() { this.log("ran it"); };' |
@@ -224,5 +241,17 @@ describe Agents::JavaScriptAgent do |
||
224 | 241 |
}.not_to change { Event.count } |
225 | 242 |
end |
226 | 243 |
end |
244 |
+ |
|
245 |
+ describe "using CoffeeScript" do |
|
246 |
+ it "will accept a 'language' of 'CoffeeScript'" do |
|
247 |
+ @agent.options['code'] = 'Agent.check = -> this.log("hello from coffeescript")' |
|
248 |
+ @agent.options['language'] = 'CoffeeScript' |
|
249 |
+ @agent.save! |
|
250 |
+ expect { |
|
251 |
+ @agent.check |
|
252 |
+ }.not_to raise_error |
|
253 |
+ expect(AgentLog.last.message).to eq("hello from coffeescript") |
|
254 |
+ end |
|
255 |
+ end |
|
227 | 256 |
end |
228 | 257 |
end |