Commit 831ab2f8ac9359dd1167c01cc52699956a36440a

Authored by Jared Pace
1 parent 7328898f
Exists in master and in 1 other branch production

Add an endpoint for /notifier_api/v2/notices

app/controllers/notices_controller.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class NoticesController < ApplicationController
  2 + respond_to :xml
  3 +
  4 + def create
  5 + @notice = Notice.from_xml(request.raw_post)
  6 + respond_with @notice
  7 + end
  8 +
  9 +end
... ...
config/routes.rb
1 1 Hypnotoad::Application.routes.draw do
2   - # The priority is based upon order of creation:
3   - # first created -> highest priority.
4   -
5   - # Sample of regular route:
6   - # match 'products/:id' => 'catalog#view'
7   - # Keep in mind you can assign values other than :controller and :action
8   -
9   - # Sample of named route:
10   - # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
11   - # This route can be invoked with purchase_url(:id => product.id)
12   -
13   - # Sample resource route (maps HTTP verbs to controller actions automatically):
14   - # resources :products
15   -
16   - # Sample resource route with options:
17   - # resources :products do
18   - # member do
19   - # get :short
20   - # post :toggle
21   - # end
22   - #
23   - # collection do
24   - # get :sold
25   - # end
26   - # end
27   -
28   - # Sample resource route with sub-resources:
29   - # resources :products do
30   - # resources :comments, :sales
31   - # resource :seller
32   - # end
33   -
34   - # Sample resource route with more complex sub-resources
35   - # resources :products do
36   - # resources :comments
37   - # resources :sales do
38   - # get :recent, :on => :collection
39   - # end
40   - # end
41   -
42   - # Sample resource route within a namespace:
43   - # namespace :admin do
44   - # # Directs /admin/products/* to Admin::ProductsController
45   - # # (app/controllers/admin/products_controller.rb)
46   - # resources :products
47   - # end
48   -
49   - # You can have the root of your site routed with "root"
50   - # just remember to delete public/index.html.
51   - # root :to => "welcome#index"
52   -
53   - # See how all your routes lay out with "rake routes"
54   -
55   - # This is a legacy wild controller route that's not recommended for RESTful applications.
56   - # Note: This route will make all actions in every controller accessible via GET requests.
57   - # match ':controller(/:action(/:id(.:format)))'
  2 +
  3 + # Hoptoad Notifier Routes
  4 + match '/notifier_api/v2/notices' => 'notices#create'
  5 + # match '/deploys.txt' => 'deploys#create'
  6 +
  7 + resources :notices
  8 +
58 9 end
... ...
spec/controllers/notices_controller_spec.rb 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +require 'spec_helper'
  2 +
  3 +describe NoticesController do
  4 +
  5 + context 'POST[XML] notices#create' do
  6 + before do
  7 + @xml = Rails.root.join('spec','fixtures','hoptoad_test_notice.xml').read
  8 + @notice = Notice.from_xml(@xml)
  9 +
  10 + request.env['Content-type'] = 'text/xml'
  11 + request.env['Accept'] = 'text/xml, application/xml'
  12 + request.should_receive(:raw_post).and_return(@xml)
  13 + end
  14 +
  15 + it "generates a notice from the xml" do
  16 + Notice.should_receive(:from_xml).with(@xml).and_return(@notice)
  17 + post :create
  18 + end
  19 + end
  20 +
  21 +end
... ...