From 6f611eed3990bc763948a4725f1371d770f54e34 Mon Sep 17 00:00:00 2001 From: Jared Cosulich Date: Fri, 10 Mar 2017 20:00:38 -0500 Subject: [PATCH] working on twilio integration --- app/controllers/attempts_controller.rb | 63 ++++++++++---------- config/routes.rb | 2 +- spec/controllers/attempts_controller_spec.rb | 23 ++++--- 3 files changed, 49 insertions(+), 39 deletions(-) diff --git a/app/controllers/attempts_controller.rb b/app/controllers/attempts_controller.rb index e572f231..dbc5fac1 100644 --- a/app/controllers/attempts_controller.rb +++ b/app/controllers/attempts_controller.rb @@ -1,41 +1,41 @@ class AttemptsController < ApplicationController - before_action :set_attempt, only: [:edit, :update] + # before_action :set_attempt, only: [:edit, :update] protect_from_forgery :except => [:twilio] def twilio - attempt = Recipient.where(phone: params['From']).first.attempts.last + attempt = Recipient.where(phone: twilio_params['From']).first.attempts.last attempt.update_attributes( - answer_index: params[:Body].to_i, - twilio_details: params.to_h.to_yaml + answer_index: twilio_params[:Body].to_i, + twilio_details: twilio_params.to_h.to_yaml ) - render plain: attempt.inspect + render plain: 'Thank you!' end - # GET /attempts/1/edit - def edit - end - - # PATCH/PUT /attempts/1 - # PATCH/PUT /attempts/1.json - def update - attempt_params = {} - if twilio_params.present? - attempt_params.merge!( - answer_index: twilio_params[:Body].to_i, - twilio_details: twilio_params.to_h.to_yaml - ) - end - - respond_to do |format| - if @attempt.update(attempt_params) - format.html { render plain: 'Thank you!' } - format.json { render :show, status: :ok, location: @attempt } - else - format.html { render :edit } - format.json { render json: @attempt.errors, status: :unprocessable_entity } - end - end - end + # # GET /attempts/1/edit + # def edit + # end + # + # # PATCH/PUT /attempts/1 + # # PATCH/PUT /attempts/1.json + # def update + # attempt_params = {} + # if twilio_params.present? + # attempt_params.merge!( + # answer_index: twilio_params[:Body].to_i, + # twilio_details: twilio_params.to_h.to_yaml + # ) + # end + # + # respond_to do |format| + # if @attempt.update(attempt_params) + # format.html { render plain: 'Thank you!' } + # format.json { render :show, status: :ok, location: @attempt } + # else + # format.html { render :edit } + # format.json { render json: @attempt.errors, status: :unprocessable_entity } + # end + # end + # end # # DELETE /attempts/1 # # DELETE /attempts/1.json @@ -55,6 +55,7 @@ class AttemptsController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def twilio_params - params.permit(:MessageSid, :AccountSid, :MessagingServiceSid, :From, :To, :Body, :NumMedia) + {"Body"=>"5", ""=>"US", "To"=>"+16172023890", "ToZip"=>"02135", "NumSegments"=>"1", "MessageSid"=>"SMe37977e625b7f0b429339e752dddefef", "AccountSid"=>"AC57dc8a5a6d75addb9528e730e92f66b2", "From"=>"+16502693205", "ApiVersion"=>"2010-04-01"} + params.permit(:FromCountry, :FromState, :FromZip, :FromCity, :ToCountry, :ToState, :SmsStatus, :SmsSid, :SmsMessageSid, :MessageSid, :AccountSid, :MessagingServiceSid, :From, :To, :Body, :NumMedia) end end diff --git a/config/routes.rb b/config/routes.rb index 467ed4d0..a4b344fe 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -15,7 +15,7 @@ Rails.application.routes.draw do resources :schedules end - resources :attempts, only: [:get, :update] + # resources :attempts, only: [:get, :update] devise_for :users # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html diff --git a/spec/controllers/attempts_controller_spec.rb b/spec/controllers/attempts_controller_spec.rb index 22e6b286..c42ad893 100644 --- a/spec/controllers/attempts_controller_spec.rb +++ b/spec/controllers/attempts_controller_spec.rb @@ -5,9 +5,17 @@ RSpec.describe AttemptsController, type: :controller do let(:valid_session) { {} } let(:schedule) { Schedule.new } - let(:recipient) { Recipient.new } + let(:recipient) { Recipient.create(name: 'Recipient', phone: '+11231231234') } let(:recipient_schedule) { RecipientSchedule.new } let(:question) { Question.new } + let!(:first_attempt) { + Attempt.create( + schedule: schedule, + recipient: recipient, + recipient_schedule: recipient_schedule, + question: question + ) + } let!(:attempt) { Attempt.create( schedule: schedule, @@ -17,21 +25,22 @@ RSpec.describe AttemptsController, type: :controller do ) } - describe "PUT #update" do + + describe "POS #twilio" do context "with valid params" do let(:twilio_attributes) { - {'MessageSid' => 'ewuefhwieuhfweiuhfewiuhf','AccountSid' => 'wefiuwhefuwehfuwefinwefw','MessagingServiceSid' => 'efwneufhwuefhweiufhiuewhf','From' => '1112223333','To' => '2223334444','Body' => '3','NumMedia' => '0'} + {'MessageSid' => 'ewuefhwieuhfweiuhfewiuhf','AccountSid' => 'wefiuwhefuwehfuwefinwefw','MessagingServiceSid' => 'efwneufhwuefhweiufhiuewhf','From' => '+11231231234','To' => '2223334444','Body' => '3','NumMedia' => '0'} } - it "updates the requested question_list" do - put :update, params: twilio_attributes.merge(id: attempt.to_param), session: valid_session + it "updates the last attempt by recipient phone number" do + post :twilio, params: twilio_attributes attempt.reload expect(attempt.answer_index).to eq(3) expect(attempt.twilio_details).to eq(twilio_attributes.with_indifferent_access.to_yaml) end - it "redirects to the question_list" do - put :update, params: twilio_attributes.merge(id: attempt.to_param), session: valid_session + it "sends back a message" do + post :twilio, params: twilio_attributes expect(response.body).to eq('Thank you!') end end