@@ -824,40 +824,43 @@ def post_user
824824
825825 end
826826
827- describe '.update' do
828-
829- context 'not logged in' do
830- it 'raises an error when not logged in' do
827+ describe '#update' do
828+ context 'with guest' do
829+ it 'raises an error' do
831830 expect do
832- xhr :put , :update , username : 'somename '
831+ xhr :put , :update , username : 'guest '
833832 end . to raise_error ( Discourse ::NotLoggedIn )
834833 end
835834 end
836835
837- context 'logged in' do
838- let! ( :user ) { log_in }
836+ context 'with authenticated user' do
837+ context 'with permission to update' do
838+ it 'allows the update' do
839+ user = Fabricate ( :user , name : 'Billy Bob' )
840+ log_in_user ( user )
841+ guardian = Guardian . new ( user )
842+ guardian . stubs ( :ensure_can_edit! )
843+ Guardian . stubs ( new : guardian ) . with ( user )
839844
840- context 'without a token' do
841- it 'should ensure you can update the user' do
842- Guardian . any_instance . expects ( :can_edit? ) . with ( user ) . returns ( false )
843- put :update , username : user . username
844- response . should be_forbidden
845- end
845+ put :update , username : user . username , name : 'Jim Tom'
846846
847- context 'as a user who can edit the user' do
847+ expect ( response ) . to be_success
848+ expect ( user . reload . name ) . to eq 'Jim Tom'
849+ end
850+ end
848851
849- before do
850- put :update , username : user . username , bio_raw : 'brand new bio'
851- user . reload
852- end
852+ context 'without permission to update' do
853+ it 'does not allow the update' do
854+ user = Fabricate ( :user , name : 'Billy Bob' )
855+ log_in_user ( user )
856+ guardian = Guardian . new ( user )
857+ guardian . stubs ( :ensure_can_edit! ) . raises ( Discourse ::InvalidAccess . new )
858+ Guardian . stubs ( new : guardian ) . with ( user )
853859
854- it 'updates the user' do
855- user . bio_raw . should == 'brand new bio'
856- end
860+ put :update , username : user . username , name : 'Jim Tom'
857861
858- it 'returns json success' do
859- response . should be_success
860- end
862+ expect ( response ) . to be_forbidden
863+ expect ( user . reload . name ) . not_to eq 'Jim Tom'
861864 end
862865 end
863866 end
@@ -1102,5 +1105,4 @@ def post_user
11021105 end
11031106
11041107 end
1105-
11061108end
0 commit comments