diff options
| -rw-r--r-- | users/app/controllers/v1/users_controller.rb | 2 | ||||
| -rw-r--r-- | users/test/integration/api/account_flow_test.rb | 20 | 
2 files changed, 13 insertions, 9 deletions
diff --git a/users/app/controllers/v1/users_controller.rb b/users/app/controllers/v1/users_controller.rb index 9b5997d..617bd4b 100644 --- a/users/app/controllers/v1/users_controller.rb +++ b/users/app/controllers/v1/users_controller.rb @@ -14,7 +14,7 @@ module V1      def update        # For now, only allow public key to be updated via the API. Eventually we might want to store in a config what attributes can be updated via the API.        @user = User.find_by_param(params[:id]) -      @user.update_attributes(:public_key => params[:user][:public_key]) +      @user.update_attributes params[:user].slice(:public_key) if params[:user].respond_to?(:slice)        respond_with @user      end diff --git a/users/test/integration/api/account_flow_test.rb b/users/test/integration/api/account_flow_test.rb index 653f7d9..4937814 100644 --- a/users/test/integration/api/account_flow_test.rb +++ b/users/test/integration/api/account_flow_test.rb @@ -94,17 +94,21 @@ class AccountFlowTest < ActiveSupport::TestCase    test "update user" do      server_auth = @srp.authenticate(self)      test_public_key = 'asdlfkjslfdkjasd' -    put "http://api.lvh.me:3000/1/users/" + @user.id + '.json', :user => {:public_key => test_public_key}, :format => :json -    @user.reload -    assert_equal test_public_key, @user.public_key -  end - -  test "cannot update login via api" do -    server_auth = @srp.authenticate(self)      original_login = @user.login -    put "http://api.lvh.me:3000/1/users/" + @user.id + '.json', :user => {:login => 'failed_login_name'}, :format => :json +    put "http://api.lvh.me:3000/1/users/" + @user.id + '.json', :user => {:public_key => test_public_key, :login => 'failed_login_name'}, :format => :json      @user.reload +    assert_equal test_public_key, @user.public_key      assert_equal original_login, @user.login +    # eventually probably want to remove most of this into a non-integration functional test +    # should not overwrite public key: +    put "http://api.lvh.me:3000/1/users/" + @user.id + '.json', :user => {:blee => :blah}, :format => :json +    @user.reload +    assert_equal test_public_key, @user.public_key +    # should overwrite public key: +    put "http://api.lvh.me:3000/1/users/" + @user.id + '.json', :user => {:public_key => nil}, :format => :json +    # TODO: not sure why i need this, but when public key is removed, the DB is updated but @user.reload doesn't seem to actually reload. +    @user = User.find(@user.id) # @user.reload +    assert_nil @user.public_key    end  end  | 
