diff --git a/lib/noosfero/api/session.rb b/lib/noosfero/api/session.rb index 128afd0..78ebe6a 100644 --- a/lib/noosfero/api/session.rb +++ b/lib/noosfero/api/session.rb @@ -43,15 +43,27 @@ module Noosfero # this return is just to improve the clarity of the execution path return unless test_captcha(remote_ip, params, environment) user = User.new(attrs) - person = Person.new(name: params[:name], identifier: user.login) - user.person = person - if user.signup - user.generate_private_token! if user.activated? - present user, :with => Entities::UserLogin + if params[:name].present? + #adds user and person + person = Person.new(name: params[:name], identifier: user.login) + user.person = person + if user.signup + user.generate_private_token! if user.activated? + present user, :with => Entities::UserLogin + else + user.destroy + message = user.errors.as_json.merge(person.errors.as_json).to_json + render_api_error!(message, 400) + end else - user.destroy - message = user.errors.as_json.merge(person.errors.as_json).to_json - render_api_error!(message, 400) + #adds user only + if user.save + user.generate_private_token! if user.activated? + present user, :with => Entities::UserLogin + else + message = user.errors.to_json + render_api_error!(message, 400) + end end end diff --git a/test/unit/api/session_test.rb b/test/unit/api/session_test.rb index 8d03a0e..08e1aeb 100644 --- a/test/unit/api/session_test.rb +++ b/test/unit/api/session_test.rb @@ -30,6 +30,17 @@ class SessionTest < ActiveSupport::TestCase assert json['private_token'].present? end + should 'register a user with name' do + Environment.default.enable('skip_new_user_email_confirmation') + params = {:login => "newuserapi", :password => "newuserapi", :password_confirmation => "newuserapi", :email => "newuserapi@email.com", :name => "Little John" } + post "/api/v1/register?#{params.to_query}" + assert_equal 201, last_response.status + json = JSON.parse(last_response.body) + ap json + assert json['activated'] + assert json['private_token'].present? + end + should 'register an inactive user' do params = {:login => "newuserapi", :password => "newuserapi", :password_confirmation => "newuserapi", :email => "newuserapi@email.com" } post "/api/v1/register?#{params.to_query}" -- libgit2 0.21.2