validate and test coffeescript

Andrew Cantino 10 年之前
父节点
当前提交
fae3dbffb5
共有 2 个文件被更改,包括 34 次插入1 次删除
  1. 4 0
      app/models/agents/java_script_agent.rb
  2. 30 1
      spec/models/agents/java_script_agent_spec.rb

+ 4 - 0
app/models/agents/java_script_agent.rb

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

+ 30 - 1
spec/models/agents/java_script_agent_spec.rb

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