From 08ba387311179128894afa7a618331c249dd3378 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 25 Nov 2010 00:39:13 -0500 Subject: [PATCH 1/2] More sane redirect on failing to accept an invitation --- app/controllers/invitations_controller.rb | 3 +- .../invitations_controller_spec.rb | 48 +++++++++++++------ 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/app/controllers/invitations_controller.rb b/app/controllers/invitations_controller.rb index f78c3f2c8..e4560c0a3 100644 --- a/app/controllers/invitations_controller.rb +++ b/app/controllers/invitations_controller.rb @@ -53,7 +53,8 @@ class InvitationsController < Devise::InvitationsController flash[:notice] = I18n.t 'registrations.create.success' sign_in_and_redirect(:user, user) else - redirect_to new_user_registration_path + redirect_to accept_user_invitation_path( + :invitation_token => params[:user][:invitation_token]) end end diff --git a/spec/controllers/invitations_controller_spec.rb b/spec/controllers/invitations_controller_spec.rb index 4cd6e14a5..71bee9aba 100644 --- a/spec/controllers/invitations_controller_spec.rb +++ b/spec/controllers/invitations_controller_spec.rb @@ -80,25 +80,43 @@ describe InvitationsController do describe "#update" do before do user.invites = 5 - invited_user = user.invite_user(:email => "a@a.com", :aspect_id => user.aspects.first.id) - @accept_params = {"user"=>{"password_confirmation"=>"password", "username"=>"josh", - "password"=>"password", "invitation_token" => invited_user.invitation_token}} + @invited_user = user.invite_user(:email => "a@a.com", :aspect_id => user.aspects.first.id) + @accept_params = {:user=> + {:password_confirmation =>"password", + :username=>"josh", + :password=>"password", + :invitation_token => @invited_user.invitation_token}} end + context 'success' do + it 'creates user' do + put :update, @accept_params + User.find_by_username(@accept_params[:user][:username]).should_not be_nil + end - it 'creates user' do - put :update, @accept_params - User.find_by_username(@accept_params['user']['username']).should_not be_nil + it 'seeds the aspects' do + put :update, @accept_params + User.find_by_username(@accept_params[:user][:username]).aspects.count.should == 2 + end + + it 'adds a pending request' do + put :update, @accept_params + User.find_by_username(@accept_params[:user][:username]).pending_requests.count.should == 1 + end end - - it 'seeds the aspects' do - put :update, @accept_params - User.find_by_username(@accept_params['user']['username']).aspects.count.should == 2 - end - - it 'adds a pending request' do - put :update, @accept_params - User.find_by_username(@accept_params['user']['username']).pending_requests.count.should == 1 + context 'failure' do + before do + @fail_params = @accept_params + @fail_params[:user][:username] = user.username + end + it 'stays on the invitation accept form' do + put :update, @fail_params + response.location.include?(accept_user_invitation_path).should be_true + end + it 'keeps the invitation token' do + put :update, @fail_params + response.location.include?("invitation_token=#{@invited_user.invitation_token}").should be_true + end end end end From 12c049fec2a36a1b52246faf3075796c3f01b0ba Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 25 Nov 2010 01:06:25 -0500 Subject: [PATCH 2/2] Add logging to inviting --- app/models/invitation.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/invitation.rb b/app/models/invitation.rb index eab3ce575..87300430a 100644 --- a/app/models/invitation.rb +++ b/app/models/invitation.rb @@ -52,6 +52,7 @@ class Invitation invitee.send(:generate_invitation_token) invitee.invite! + Rails.logger.info("event=invitation_sent to=#{opts[:email]} #{"inviter=#{opts[:from].diaspora_handle}" if opts[:from]}") end invitee end