@@ -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 |