diff --git a/lib/noosfero/api/helpers.rb b/lib/noosfero/api/helpers.rb index 19ff82a..5b10800 100644 --- a/lib/noosfero/api/helpers.rb +++ b/lib/noosfero/api/helpers.rb @@ -39,6 +39,10 @@ require 'grape' @environment end + def logger + Noosfero::API::API.logger + end + def limit limit = params[:limit].to_i limit = default_limit if limit <= 0 @@ -239,6 +243,10 @@ require 'grape' render_api_error!(_('Method Not Allowed'), 405) end + # render_api_error!(message, status) + # error!({'message' => message, :code => status}, status) + # end + # javascript_console_message is supposed to be executed as console.log() def render_api_error!(user_message, status, log_message = nil, javascript_console_message = nil) status||= 400 @@ -247,9 +255,14 @@ require 'grape' log_msg = "#{status}, User message: #{user_message}" log_msg = "#{log_message}, #{log_msg}" if log_message.present? log_msg = "#{log_msg}, Javascript Console Message: #{javascript_console_message}" if javascript_console_message.present? +# headers = { Grape::Http::Headers::CONTENT_TYPE => content_type }.merge(headers) +# rack_response(format_message(message, backtrace), status, headers) +# raise log_msg #Since throw :error is not logging the errors I had to manually log it! #log(log_msg) - throw :error, message: message_hash, status: status, headers: headers + logger.error log_msg + error!(message_hash, status) +# throw :error, message: message_hash, status: status, headers: headers end def render_api_errors!(messages) diff --git a/lib/noosfero/api/session.rb b/lib/noosfero/api/session.rb index f9e9f99..7acbfb7 100644 --- a/lib/noosfero/api/session.rb +++ b/lib/noosfero/api/session.rb @@ -124,9 +124,9 @@ module Noosfero end end - # post "/error" do - # render_api_error!("show on screen", 400, "this is the log message", "go to JS") - # end + get "/stop" do + stop!("show on screen", 400, "this is the log message", "go to JS") + end end end diff --git a/test/unit/api/helpers_test.rb b/test/unit/api/helpers_test.rb index 57127a6..78082f7 100644 --- a/test/unit/api/helpers_test.rb +++ b/test/unit/api/helpers_test.rb @@ -185,7 +185,8 @@ class APIHelpersTest < ActiveSupport::TestCase public_key: '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-', verify_uri: 'https://www.google.com/recaptcha/api/verify', } - assert_equal test_captcha("127.0.0.1", {}, environment), "Missing captcha data" + r = test_captcha('127.0.0.1', params, environment) + assert_equal 'Missing captcha data', JSON.parse(r)['console_message'] end should 'fail display recaptcha v2' do @@ -198,9 +199,12 @@ class APIHelpersTest < ActiveSupport::TestCase public_key: '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-', verify_uri: 'https://www.google.com/recaptcha/api/siteverify', } - assert_equal test_captcha("127.0.0.1", {}, environment), "Missing captcha data" + r = test_captcha('127.0.0.1', params, environment) + assert_equal 'Missing captcha data', JSON.parse(r)['console_message'] end + + should 'fail display Serpro captcha' do environment = Environment.new environment.api_captcha_settings = { @@ -232,8 +236,6 @@ class APIHelpersTest < ActiveSupport::TestCase #assert_equal 403, find_article(p.articles, a.id).last #assert_equals [article1, article2], present_articles - - end should 'captcha serpro say name or service not known' do @@ -247,11 +249,10 @@ class APIHelpersTest < ActiveSupport::TestCase params = {} params[:txtToken_captcha_serpro_gov_br] = '4324343' params[:captcha_text] = '4324343' - assert_throws :error do - r = test_captcha('127.0.0.1', params, environment) - puts r.inspect - end - # assert_equal 'Serpro captcha error: getaddrinfo: Name or service not known', JSON.parse(r)['console_message'] + binding.pry + expects(:render_api_error!).with(_('Internal captcha validation error'), 503, nil, "recaptcha error: #{e.message}") +# r = test_captcha('127.0.0.1', params, environment) +# assert_equal 'Serpro captcha error: getaddrinfo: Name or service not known', JSON.parse(r)['console_message'] end @@ -262,13 +263,6 @@ class APIHelpersTest < ActiveSupport::TestCase # throw :error, message: message_hash, status: self.status, headers: headers # end - - # should 'display user message' do - # r=render_api_error!('Error to the user', '403', 'detailed log_message', 'show this on user\'s javascript console') - # puts r.inspect - # tsil - # end - protected def error!(info, status) @@ -283,4 +277,13 @@ class APIHelpersTest < ActiveSupport::TestCase @params = value end + def render_api_error!(user_message, status, log_message = nil, javascript_console_message = nil) + status||= 400 + log_msg = "#{status}, User message: #{user_message}" + log_msg = "#{log_message}, #{log_msg}" if log_message.present? + log_msg = "#{log_msg}, Javascript Console Message: #{javascript_console_message}" if javascript_console_message.present? + return log_msg + end + + end -- libgit2 0.21.2