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 @@ @@ -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 Hypnotoad::Application.routes.draw do 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 end 9 end
spec/controllers/notices_controller_spec.rb 0 → 100644
@@ -0,0 +1,21 @@ @@ -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