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/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 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