Commit 3215dbd84e07e7fe2258ed5ee6c09165e7f57730

Authored by Evandro Junior
1 parent 524373db

Register user with and without name

lib/noosfero/api/session.rb
... ... @@ -43,15 +43,27 @@ module Noosfero
43 43 # this return is just to improve the clarity of the execution path
44 44 return unless test_captcha(remote_ip, params, environment)
45 45 user = User.new(attrs)
46   - person = Person.new(name: params[:name], identifier: user.login)
47   - user.person = person
48   - if user.signup
49   - user.generate_private_token! if user.activated?
50   - present user, :with => Entities::UserLogin
  46 + if params[:name].present?
  47 + #adds user and person
  48 + person = Person.new(name: params[:name], identifier: user.login)
  49 + user.person = person
  50 + if user.signup
  51 + user.generate_private_token! if user.activated?
  52 + present user, :with => Entities::UserLogin
  53 + else
  54 + user.destroy
  55 + message = user.errors.as_json.merge(person.errors.as_json).to_json
  56 + render_api_error!(message, 400)
  57 + end
51 58 else
52   - user.destroy
53   - message = user.errors.as_json.merge(person.errors.as_json).to_json
54   - render_api_error!(message, 400)
  59 + #adds user only
  60 + if user.save
  61 + user.generate_private_token! if user.activated?
  62 + present user, :with => Entities::UserLogin
  63 + else
  64 + message = user.errors.to_json
  65 + render_api_error!(message, 400)
  66 + end
55 67 end
56 68 end
57 69  
... ...
test/unit/api/session_test.rb
... ... @@ -30,6 +30,17 @@ class SessionTest < ActiveSupport::TestCase
30 30 assert json['private_token'].present?
31 31 end
32 32  
  33 + should 'register a user with name' do
  34 + Environment.default.enable('skip_new_user_email_confirmation')
  35 + params = {:login => "newuserapi", :password => "newuserapi", :password_confirmation => "newuserapi", :email => "newuserapi@email.com", :name => "Little John" }
  36 + post "/api/v1/register?#{params.to_query}"
  37 + assert_equal 201, last_response.status
  38 + json = JSON.parse(last_response.body)
  39 + ap json
  40 + assert json['activated']
  41 + assert json['private_token'].present?
  42 + end
  43 +
33 44 should 'register an inactive user' do
34 45 params = {:login => "newuserapi", :password => "newuserapi", :password_confirmation => "newuserapi", :email => "newuserapi@email.com" }
35 46 post "/api/v1/register?#{params.to_query}"
... ...