Commit e2b528dddae3476fb783b22b1cd34dc88281540f

Authored by Evandro Junior
2 parents eea77aea 64557f2e

Merge branch 'api' of https://gitlab.com/participa/noosfero into api

lib/noosfero/api/api.rb
@@ -11,9 +11,9 @@ module Noosfero @@ -11,9 +11,9 @@ module Noosfero
11 logger.formatter = GrapeLogging::Formatters::Default.new 11 logger.formatter = GrapeLogging::Formatters::Default.new
12 use GrapeLogging::Middleware::RequestLogger, { logger: logger } 12 use GrapeLogging::Middleware::RequestLogger, { logger: logger }
13 13
14 - rescue_from :all do |e|  
15 - logger.error e  
16 - end 14 + #rescue_from :all do |e|
  15 + # logger.error e
  16 + #end
17 17
18 @@NOOSFERO_CONF = nil 18 @@NOOSFERO_CONF = nil
19 def self.NOOSFERO_CONF 19 def self.NOOSFERO_CONF
@@ -25,6 +25,7 @@ module Noosfero @@ -25,6 +25,7 @@ module Noosfero
25 end 25 end
26 end 26 end
27 27
  28 + before { set_locale }
28 before { setup_multitenancy } 29 before { setup_multitenancy }
29 before { detect_stuff_by_domain } 30 before { detect_stuff_by_domain }
30 before { filter_disabled_plugins_endpoints } 31 before { filter_disabled_plugins_endpoints }
lib/noosfero/api/helpers.rb
@@ -7,6 +7,10 @@ @@ -7,6 +7,10 @@
7 7
8 include SanitizeParams 8 include SanitizeParams
9 9
  10 + def set_locale
  11 + I18n.locale = (params[:lang] || request.env['HTTP_ACCEPT_LANGUAGE'] || 'en')
  12 + end
  13 +
10 def current_user 14 def current_user
11 private_token = (params[PRIVATE_TOKEN_PARAM] || headers['Private-Token']).to_s 15 private_token = (params[PRIVATE_TOKEN_PARAM] || headers['Private-Token']).to_s
12 @current_user ||= User.find_by_private_token(private_token) 16 @current_user ||= User.find_by_private_token(private_token)
test/unit/api/users_test.rb
  1 +# encoding: UTF-8
1 require File.dirname(__FILE__) + '/test_helper' 2 require File.dirname(__FILE__) + '/test_helper'
2 3
3 class UsersTest < ActiveSupport::TestCase 4 class UsersTest < ActiveSupport::TestCase
@@ -19,6 +20,18 @@ class UsersTest &lt; ActiveSupport::TestCase @@ -19,6 +20,18 @@ class UsersTest &lt; ActiveSupport::TestCase
19 assert_equal 'some', json['user']['login'] 20 assert_equal 'some', json['user']['login']
20 end 21 end
21 22
  23 + should 'not create duplicate user' do
  24 + params[:lang] = :"pt-BR"
  25 + params[:user] = {:login => 'some', :password => '123456', :password_confirmation => '123456', :email => 'some@some.com'}
  26 + post "/api/v1/users?#{params.to_query}"
  27 + json = JSON.parse(last_response.body)
  28 + assert_equal 'some', json['user']['login']
  29 + params[:user] = {:login => 'some', :password => '123456', :password_confirmation => '123456', :email => 'some@some.com'}
  30 + post "/api/v1/users?#{params.to_query}"
  31 + json = JSON.parse(last_response.body)
  32 + assert_equal 'Username / Email já está em uso,e-Mail já está em uso', json['message']
  33 + end
  34 +
22 should 'return 400 status for invalid user creation' do 35 should 'return 400 status for invalid user creation' do
23 params[:user] = {:login => 'some'} 36 params[:user] = {:login => 'some'}
24 post "/api/v1/users?#{params.to_query}" 37 post "/api/v1/users?#{params.to_query}"
test/unit/user_test.rb
@@ -21,6 +21,14 @@ class UserTest &lt; ActiveSupport::TestCase @@ -21,6 +21,14 @@ class UserTest &lt; ActiveSupport::TestCase
21 end 21 end
22 end 22 end
23 23
  24 + def test_should_not_allow_duplicate_login
  25 + user1 = create_user('new_user', :email => 'new_user1@example.com', :password => 'test', :password_confirmation => 'test')
  26 + assert !user1.errors[:login].present?
  27 + user1.save!
  28 + user2 = new_user(:login => 'new_user')
  29 + assert user2.errors[:login].present?
  30 + end
  31 +
24 def test_should_require_password 32 def test_should_require_password
25 assert_no_difference 'User.count' do 33 assert_no_difference 'User.count' do
26 u = new_user(:password => nil) 34 u = new_user(:password => nil)
@@ -42,6 +50,13 @@ class UserTest &lt; ActiveSupport::TestCase @@ -42,6 +50,13 @@ class UserTest &lt; ActiveSupport::TestCase
42 end 50 end
43 end 51 end
44 52
  53 + def test_email_format
  54 + assert_no_difference 'User.count' do
  55 + u = new_user(:email => 'test.email')
  56 + assert u.errors[:email].present?
  57 + end
  58 + end
  59 +
45 def test_should_reset_password 60 def test_should_reset_password
46 users(:johndoe).update_attributes(:password => 'new password', :password_confirmation => 'new password') 61 users(:johndoe).update_attributes(:password => 'new password', :password_confirmation => 'new password')
47 assert_equal users(:johndoe), User.authenticate('johndoe', 'new password') 62 assert_equal users(:johndoe), User.authenticate('johndoe', 'new password')
@@ -715,25 +730,6 @@ class UserTest &lt; ActiveSupport::TestCase @@ -715,25 +730,6 @@ class UserTest &lt; ActiveSupport::TestCase
715 assert_equal 'quire', user.person.name 730 assert_equal 'quire', user.person.name
716 end 731 end
717 732
718 - should 'generate private token' do  
719 - user = User.new  
720 - SecureRandom.stubs(:hex).returns('token')  
721 - user.generate_private_token!  
722 -  
723 - assert user.private_token, 'token'  
724 - end  
725 -  
726 - should 'check for private token validity' do  
727 - user = User.new  
728 - assert user.private_token_expired?  
729 -  
730 - user.generate_private_token!  
731 - assert !user.private_token_expired?  
732 -  
733 - user.private_token_generated_at = DateTime.now - (User::TOKEN_VALIDITY + 1.minute)  
734 - assert user.private_token_expired?  
735 - end  
736 -  
737 protected 733 protected
738 def new_user(options = {}) 734 def new_user(options = {})
739 user = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options)) 735 user = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options))