Handle more edge-case input.

Darren Cauthon 9 anos atrás
pai
commit
4364611961
2 arquivos alterados com 31 adições e 1 exclusões
  1. 1 1
      app/models/agents/webhook_agent.rb
  2. 30 0
      spec/models/agents/webhook_agent_spec.rb

+ 1 - 1
app/models/agents/webhook_agent.rb

@@ -39,7 +39,7 @@ module Agents
39 39
 
40 40
     def receive_web_request(params, method, format)
41 41
       secret = params.delete('secret')
42
-      verbs = (options['verbs'] ? options['verbs'] : 'post').split(';')
42
+      verbs = (options['verbs'] ? options['verbs'] : 'post').split(/[,;]/).map { |x| x.strip.downcase }
43 43
       return ["Please use #{verbs.join('/').upcase} requests only", 401] unless verbs.include?(method)
44 44
       return ["Not Authorized", 401] unless secret == interpolated['secret']
45 45
 

+ 30 - 0
spec/models/agents/webhook_agent_spec.rb

@@ -164,6 +164,36 @@ describe Agents::WebhookAgent do
164 164
 
165 165
       end
166 166
 
167
+      context "flaky content with commas" do
168
+
169
+        before { agent.options['verbs'] = ';;  PUT,POST; gEt , ;' }
170
+
171
+        it "should accept PUT" do
172
+          out = nil
173
+          expect {
174
+            out = agent.receive_web_request({ 'secret' => 'foobar', 'some_key' => payload }, "put", "text/html")
175
+          }.to change { Event.count }.by(1)
176
+          expect(out).to eq(['Event Created', 201])
177
+        end
178
+
179
+        it "should accept GET" do
180
+          out = nil
181
+          expect {
182
+            out = agent.receive_web_request({ 'secret' => 'foobar', 'some_key' => payload }, "get", "text/html")
183
+          }.to change { Event.count }.by(1)
184
+          expect(out).to eq(['Event Created', 201])
185
+        end
186
+
187
+        it "should accept POST" do
188
+          out = nil
189
+          expect {
190
+            out = agent.receive_web_request({ 'secret' => 'foobar', 'some_key' => payload }, "post", "text/html")
191
+          }.to change { Event.count }.by(1)
192
+          expect(out).to eq(['Event Created', 201])
193
+        end
194
+
195
+      end
196
+
167 197
     end
168 198
 
169 199
   end