Merge Request #3

Merged
noosferogov/noosfero!3
Created by Evandro Junior

Captcha serpro plugin

Core changes for captcha plugin

Assignee: None
Milestone: None

Merged by Francisco Júnior

Commits (34)
3 participants
app/models/environment.rb
... ... @@ -354,9 +354,6 @@ class Environment < ActiveRecord::Base
354 354  
355 355 settings_items :signup_welcome_screen_body, :type => String
356 356  
357   - #Captcha settings
358   - settings_items :api_captcha_settings, :default => {}
359   -
360 357 def has_custom_welcome_screen?
361 358 settings[:signup_welcome_screen_body].present?
362 359 end
... ...
lib/noosfero/api/helpers.rb
... ... @@ -434,99 +434,14 @@ require_relative '../../find_by_contents'
434 434 ##########################################
435 435  
436 436 def test_captcha(remote_ip, params, environment)
437   - d = environment.api_captcha_settings
438   - return true unless d[:enabled] == true
439   - msg_icve = _('Internal captcha validation error')
440   - msg_eacs = 'Environment api_captcha_settings'
441   - s = 500
442   -
443   - if d[:provider] == 'google'
444   - return render_api_error!(msg_icve, s, nil, "#{msg_eacs} private_key not defined") if d[:private_key].nil?
445   - return render_api_error!(msg_icve, s, nil, "#{msg_eacs} version not defined") unless d[:version] == 1 || d[:version] == 2
446   - if d[:version] == 1
447   - d[:verify_uri] ||= 'https://www.google.com/recaptcha/api/verify'
448   - return verify_recaptcha_v1(remote_ip, d[:private_key], d[:verify_uri], params[:recaptcha_challenge_field], params[:recaptcha_response_field])
449   - end
450   - if d[:version] == 2
451   - d[:verify_uri] ||= 'https://www.google.com/recaptcha/api/siteverify'
452   - return verify_recaptcha_v2(remote_ip, d[:private_key], d[:verify_uri], params[:g_recaptcha_response])
453   - end
454   - end
455   - if d[:provider] == 'serpro'
456   - return render_api_error!(msg_icve, s, nil, "#{msg_eacs} verify_uri not defined") if d[:verify_uri].nil?
457   - return verify_serpro_captcha(d[:serpro_client_id], params[:txtToken_captcha_serpro_gov_br], params[:captcha_text], d[:verify_uri])
458   - end
459   - return render_api_error!(msg_icve, s, nil, "#{msg_eacs} provider not defined")
460   - end
461   -
462   - def verify_recaptcha_v1(remote_ip, private_key, api_recaptcha_verify_uri, recaptcha_challenge_field, recaptcha_response_field)
463   - if recaptcha_challenge_field == nil || recaptcha_response_field == nil
464   - return render_api_error!(_('Captcha validation error'), 500, nil, _('Missing captcha data'))
465   - end
466   -
467   - verify_hash = {
468   - "privatekey" => private_key,
469   - "remoteip" => remote_ip,
470   - "challenge" => recaptcha_challenge_field,
471   - "response" => recaptcha_response_field
472   - }
473   - uri = URI(api_recaptcha_verify_uri)
474   - https = Net::HTTP.new(uri.host, uri.port)
475   - https.use_ssl = true
476   - request = Net::HTTP::Post.new(uri.path)
477   - request.set_form_data(verify_hash)
478   - begin
479   - result = https.request(request).body.split("\n")
480   - rescue Exception => e
481   - return render_api_error!(_('Internal captcha validation error'), 500, nil, "Error validating Googles' recaptcha version 1: #{e.message}")
482   - end
483   - return true if result[0] == "true"
484   - return render_api_error!(_("Wrong captcha text, please try again"), 403, nil, "Error validating Googles' recaptcha version 1: #{result[1]}") if result[1] == "incorrect-captcha-sol"
485   - #Catches all errors at the end
486   - return render_api_error!(_("Internal recaptcha validation error"), 500, nil, "Error validating Googles' recaptcha version 1: #{result[1]}")
487   - end
488   -
489   - def verify_recaptcha_v2(remote_ip, private_key, api_recaptcha_verify_uri, g_recaptcha_response)
490   - return render_api_error!(_('Captcha validation error'), 500, nil, _('Missing captcha data')) if g_recaptcha_response == nil
491   - verify_hash = {
492   - "secret" => private_key,
493   - "remoteip" => remote_ip,
494   - "response" => g_recaptcha_response
495   - }
496   - uri = URI(api_recaptcha_verify_uri)
497   - https = Net::HTTP.new(uri.host, uri.port)
498   - https.use_ssl = true
499   - request = Net::HTTP::Post.new(uri.path)
500   - request.set_form_data(verify_hash)
501   - begin
502   - body = https.request(request).body
503   - rescue Exception => e
504   - return render_api_error!(_('Internal captcha validation error'), 500, nil, "recaptcha error: #{e.message}")
505   - end
506   - captcha_result = JSON.parse(body)
507   - captcha_result["success"] ? true : captcha_result
508   - end
509   -
510   - def verify_serpro_captcha(client_id, token, captcha_text, verify_uri)
511   - return render_api_error!(_("Error processing token validation"), 500, nil, "Missing Serpro's Captcha token") unless token
512   - return render_api_error!(_('Captcha text has not been filled'), 403) unless captcha_text
513   - uri = URI(verify_uri)
514   - http = Net::HTTP.new(uri.host, uri.port)
515   - request = Net::HTTP::Post.new(uri.path)
516   - verify_string = "#{client_id}&#{token}&#{captcha_text}"
517   - request.body = verify_string
518   - begin
519   - body = http.request(request).body
520   - rescue Exception => e
521   - return render_api_error!(_('Internal captcha validation error'), 500, nil, "Serpro captcha error: #{e.message}")
  437 + captcha_plugin_enabled = @plugins.dispatch(:test_captcha, remote_ip, params, environment).map {|p| p if ! ( p===nil ) }
  438 + return true if captcha_plugin_enabled.size == 0
  439 + if captcha_plugin_enabled.size > 1
  440 + return render_api_error!(_("Error processing Captcha"), 500, nil, "More than one captcha plugin enabled")
522 441 end
523   - return true if body == '1'
524   - return render_api_error!(_("Internal captcha validation error"), 500, body, "Unable to reach Serpro's Captcha validation service") if body == "Activity timed out"
525   - return render_api_error!(_("Wrong captcha text, please try again"), 403) if body == 0
526   - return render_api_error!(_("Serpro's captcha token not found"), 500) if body == 2
527   - return render_api_error!(_("No data sent to validation server or other serious problem"), 500) if body == -1
528   - #Catches all errors at the end
529   - return render_api_error!(_("Internal captcha validation error"), 500, nil, "Error validating Serpro's captcha #{body}")
  442 + test_result = captcha_plugin_enabled[0]
  443 + return true if test_result === true
  444 + render_api_error!(test_result[:user_message], test_result[:status], test_result[:log_message], test_result[:javascript_console_message])
530 445 end
531 446  
532 447 end
... ...
lib/noosfero/plugin.rb
... ... @@ -678,6 +678,11 @@ class Noosfero::Plugin
678 678 nil
679 679 end
680 680  
  681 + #By default will return nil that will mean not implented by the plugin
  682 + def test_captcha(*args)
  683 + nil
  684 + end
  685 +
681 686 # -> Adds additional blocks to profiles and environments.
682 687 # Your plugin must implements a class method called 'extra_blocks'
683 688 # that returns a hash with the following syntax.
... ...
plugins/recaptcha 0 → 160000
... ... @@ -0,0 +1 @@
  1 +Subproject commit 6767abef88d2b78c05b8c0edb67ca28e72348f6f
... ...
plugins/serpro_captcha 0 → 160000
... ... @@ -0,0 +1 @@
  1 +Subproject commit c6a155b608056d1cba387904e4ca34a5145a073f
... ...
test/unit/api/articles_test.rb
... ... @@ -134,7 +134,7 @@ class ArticlesTest < ActiveSupport::TestCase
134 134 ## Perform a vote twice in API should compute only one vote
135 135 post "/api/v1/articles/#{article.id}/vote?#{params.to_query}"
136 136 json = JSON.parse(last_response.body)
137   -
  137 +
138 138 post "/api/v1/articles/#{article.id}/vote?#{params.to_query}"
139 139 json = JSON.parse(last_response.body)
140 140  
... ... @@ -168,7 +168,6 @@ class ArticlesTest < ActiveSupport::TestCase
168 168  
169 169 assert_not_equal 401, last_response.status
170 170 assert_equal true, json['vote']
171   -
172 171 end
173 172  
174 173 should 'not perform a vote in a archived article' do
... ...
test/unit/api/helpers_test.rb
... ... @@ -240,74 +240,15 @@ class APIHelpersTest < ActiveSupport::TestCase
240 240  
241 241 ###### Captcha tests ######
242 242  
243   -should 'do not test captcha when there are no settings' do
244   - environment = Environment.new
245   - assert test_captcha("127.0.0.1", {}, environment)
246   -end
247   -
248   -should 'do not test captcha when captcha is disabled on settings' do
249   - environment = Environment.new
250   - environment.api_captcha_settings = {
251   - enabled: false,
252   - }
253   - assert test_captcha("127.0.0.1", {}, environment)
254   -end
255   -
256   -should 'fail display recaptcha v1' do
257   - environment = Environment.new
258   - environment.api_captcha_settings = {
259   - enabled: true,
260   - provider: 'google',
261   - version: 1,
262   - private_key: '6LdsWAcTAAAAAB6maB_HalVyCc4asDAxPxloIMvY',
263   - public_key: '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-',
264   - verify_uri: 'https://www.google.com/recaptcha/api/verify',
265   - }
266   - r = test_captcha('127.0.0.1', params, environment)
267   - assert_equal(_("Missing captcha data"), r[0][:javascript_console_message])
268   -end
269   -
270   -should 'fail display recaptcha v2' do
271   - environment = Environment.new
272   - environment.api_captcha_settings = {
273   - enabled: true,
274   - provider: 'google',
275   - version: 2,
276   - private_key: '6LdsWAcTAAAAAB6maB_HalVyCc4asDAxPxloIMvY',
277   - public_key: '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-',
278   - verify_uri: 'https://www.google.com/recaptcha/api/siteverify',
279   - }
280   - r = test_captcha('127.0.0.1', params, environment)
281   - assert_equal(_("Missing captcha data"), r[0][:javascript_console_message])
282   -end
283   -
284   -should 'verify if user filled Serpro\' captcha text' do
285   - environment = Environment.new
286   - environment.api_captcha_settings = {
287   - enabled: true,
288   - provider: 'serpro',
289   - serpro_client_id: '0000000000000000',
290   - verify_uri: 'http://localhost/api/verify',
291   - }
292   - params = {}
293   - params[:txtToken_captcha_serpro_gov_br] = '4324343'
294   - assert_equal(_('Captcha text has not been filled'), test_captcha('127.0.0.1', params, environment)[0]['message'])
295   -end
296   -
297   -should 'verify if Serpro\' captcha token has been sent' do
298   - environment = Environment.new
299   - environment.api_captcha_settings = {
300   - enabled: true,
301   - provider: 'serpro',
302   - serpro_client_id: '0000000000000000',
303   - verify_uri: 'http://localhost/api/verify',
304   - }
305   - params = {}
306   - params[:captcha_text] = '4324343'
307   - r = test_captcha('127.0.0.1', params, environment)
308   - assert_equal(_("Missing Serpro's Captcha token"), r[0][:javascript_console_message])
309   -end
310   -
  243 + def plugins
  244 + environment = Environment.default
  245 + Noosfero::Plugin::Manager.new(environment, self)
  246 + end
  247 +
  248 + should 'do not test captcha when there is no captcha plugin enabled' do
  249 + environment = Environment.new
  250 + assert test_captcha("127.0.0.1", {}, environment)
  251 + end
311 252  
312 253 ###### END Captcha tests ######
313 254  
... ...
test/unit/api/login_captcha_test.rb
... ... @@ -3,20 +3,8 @@ require File.dirname(__FILE__) + '/test_helper'
3 3 class LoginCaptchaTest < ActiveSupport::TestCase
4 4  
5 5 def setup()
6   - @environment = Environment.default
7   - @environment.api_captcha_settings = {
8   - enabled: true,
9   - provider: 'serpro',
10   - serpro_client_id: '0000000000000000',
11   - verify_uri: 'http://captcha.serpro.gov.br/validate',
12   - }
13   - @environment.save!
14   - @url = "/api/v1/login-captcha?"
15   - end
16   -
17   - def create_article(name)
18   - person = fast_create(Person, :environment_id => @environment.id)
19   - fast_create(Article, :profile_id => person.id, :name => name)
  6 + @url = "/api/v1/login-captcha"
  7 + OutcomeCaptcha.outcome_captcha_test = true
20 8 end
21 9  
22 10 should 'not perform a vote without authentication' do
... ... @@ -34,7 +22,6 @@ class LoginCaptchaTest &lt; ActiveSupport::TestCase
34 22 assert_not_nil @private_token
35 23 end
36 24  
37   -
38 25 should 'perform a vote in an article identified by id' do
39 26 login_with_captcha
40 27 article = create_article('Article 1')
... ... @@ -42,7 +29,7 @@ class LoginCaptchaTest &lt; ActiveSupport::TestCase
42 29  
43 30 post "/api/v1/articles/#{article.id}/vote?#{params.to_query}"
44 31 json = JSON.parse(last_response.body)
45   -
  32 +
46 33 assert_not_equal 401, last_response.status
47 34 assert_equal true, json['vote']
48 35 end
... ... @@ -77,9 +64,11 @@ class LoginCaptchaTest &lt; ActiveSupport::TestCase
77 64 end
78 65  
79 66 should 'not generate private token when login without captcha' do
  67 + OutcomeCaptcha.outcome_captcha_test = false
80 68 params = {}
81 69 post "#{@url}#{params.to_query}"
82 70 json = JSON.parse(last_response.body)
  71 + assert_equal last_response.status, 403
83 72 assert json["private_token"].blank?
84 73 end
85 74  
... ... @@ -90,4 +79,8 @@ class LoginCaptchaTest &lt; ActiveSupport::TestCase
90 79 assert ret == @private_token
91 80 end
92 81  
93   -end
94 82 \ No newline at end of file
  83 + should 'do login captcha from api' do
  84 + do_login_captcha_from_api
  85 + end
  86 +
  87 +end
... ...
test/unit/api/session_test.rb
... ... @@ -4,6 +4,7 @@ class SessionTest &lt; ActiveSupport::TestCase
4 4  
5 5 def setup
6 6 login_api
  7 + OutcomeCaptcha.outcome_captcha_test = true
7 8 end
8 9  
9 10 should 'generate private token when login' do
... ... @@ -182,6 +183,14 @@ class SessionTest &lt; ActiveSupport::TestCase
182 183 assert_equal 404, last_response.status
183 184 end
184 185  
  186 + should 'do not register a user if captcha fails' do
  187 + OutcomeCaptcha.outcome_captcha_test = false
  188 + Environment.default.enable('skip_new_user_email_confirmation')
  189 + params = {:login => "newuserapi_ewa ", :password => "newuserapi", :password_confirmation => "newuserapi", :email => "newuserapi@email.com" }
  190 + post "/api/v1/register?#{params.to_query}"
  191 + assert_equal 403, last_response.status
  192 + end
  193 +
185 194 should 'not return private token when the registered user is inactive' do
186 195 params = {:login => "newuserapi", :password => "newuserapi", :password_confirmation => "newuserapi", :email => "newuserapi@email.com" }
187 196 post "/api/v1/register?#{params.to_query}"
... ...
test/unit/api/test_helper.rb
1   -require_relative '../../test_helper'
  1 +require File.dirname(__FILE__) + '/../../test_helper'
  2 +require File.join(Rails.root, '/lib/noosfero/api/helpers.rb')
  3 +
  4 +class OutcomeCaptcha
  5 + class << self
  6 + attr_accessor :outcome_captcha_test
  7 + end
  8 + @outcome_captcha_test = true
  9 +end
  10 +
  11 +module Noosfero
  12 + module API
  13 + module APIHelpers
  14 + def test_captcha(*args)
  15 + return true if OutcomeCaptcha.outcome_captcha_test
  16 + render_api_error!("Error testing captcha", 403)
  17 + end
  18 + end
  19 + end
  20 +end
2 21  
3 22 class ActiveSupport::TestCase
4 23  
5 24 include Rack::Test::Methods
  25 + include Noosfero::API::APIHelpers
6 26  
7 27 def app
8 28 Noosfero::API::API
... ... @@ -15,31 +35,18 @@ class ActiveSupport::TestCase
15 35 json
16 36 end
17 37  
18   - ## Performs a login using the session.rb but mocking the
19   - ## real HTTP request to validate the captcha.
20 38 def do_login_captcha_from_api
21   - # Request mocking
22   - #Net::HTTP::Post Mock
23   - request = mock
24   - #Net::HTTP Mock
25   - http = mock
26   - uri = URI(environment.api_captcha_settings[:verify_uri])
27   - Net::HTTP.expects(:new).with(uri.host, uri.port).returns(http)
28   - Net::HTTP::Post.expects(:new).with(uri.path).returns(request)
29   -
30   - # Captcha required codes
31   - request.stubs(:body=).with("0000000000000000&4324343&4030320")
32   - http.stubs(:request).with(request).returns(http)
33   -
34   - # Captcha validation success !!
35   - http.stubs(:body).returns("1")
36   -
37   - params = {:txtToken_captcha_serpro_gov_br => '4324343', :captcha_text => '4030320'}
38   - post "#{@url}#{params.to_query}"
39   - json = JSON.parse(last_response.body)
  39 + post "/api/v1/login-captcha"
  40 + json = JSON.parse(last_response.body)
40 41 json
41 42 end
42 43  
  44 + def create_article(name)
  45 + @environment = Environment.default
  46 + person = fast_create(Person, :environment_id => @environment.id)
  47 + fast_create(Article, :profile_id => person.id, :name => name)
  48 + end
  49 +
43 50 def login_api
44 51 @environment = Environment.default
45 52 @user = User.create!(:login => 'testapi', :password => 'testapi', :password_confirmation => 'testapi', :email => 'test@test.org', :environment => @environment)
... ...
  • 4a20548511a65cfccc863520b70c3ee9?s=40&d=identicon
    Victor Costa @vfcosta

    Added 37 new commits:

    • a1a1a821 - Merge branch 'master_rails3' into staging
    • b29e7d78 - Add method to resend activation code
    • 6cee467c - api: method to resend activation code
    • 2020d549 - Fix resend activation code for users
    • 5b3985ea - Update dialoga plugin
    • c76fbabe - Update dialoga plugin
    • f56d5e71 - Changes in endpoints to verify archived article validation
    • 1e0c5046 - Merge branch 'api-article-archived' into 'staging'
    • fdc0a304 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 238297f9 - Fix to the issue https://gitlab.com/noosfero/noosfero/issues/153 (Event form not…
    • 31320be5 - Merge branch 'fix_event_date_issue' into 'master_rails3'
    • 1f207d90 - Task: remove dead code
    • 01ea9f77 - ApproveArticle: remove dead code
    • 1d474680 - API::Helpers: resolve translation calls at runtime
    • eaa1b180 - update translation files
    • 24efa29c - Finish Portuguese translation for the Noosfero core
    • 29b170fc - Bumping version 1.3~rc3
    • bfc59d81 - rake noosfero:release:finish: take target argument
    • f9ce8de3 - action_tracker_ext: skip activity creation without a target
    • bad18a79 - Noosfero::VERSION: don't blow up if git is not installed
    • 3c4d2c8d - Noosfero::VERSION: completely skip git usage if git is not installed
    • e3817276 - Fix article visibility in creation
    • 80800e40 - Change feed published metho to consider it's parent privacy
    • f8dfd63b - Merge branch 'privacy_fix' into 'master'
    • 114b3b48 - responsive: import new variables file and follow directory structure
    • 56f3ea05 - dalli: connect to 127.0.0.1:11211 by default
    • 9e7ac9ee - Bumping version 1.3
    • d877a56d - Noosfero::VERSION: fix detecting git version for good
    • a86306b1 - New feature archive articles to avoid create comments, associate children articles and perform votes
    • 4edfee6d - Added archived article verification into vote plugin
    • 5b923237 - Avoid count hits and add comments in archived articles. Added to new unit tests and translated msg
    • 8b44517e - Merge branch 'article-readonly' into 'master_rails3'
    • 46549f70 - Merge branch 'master_rails3' into staging
    • 0b718210 - Fix datepicker date value
    • afedf8ad - Fix archived validation for articles
    • 7e2363ea - Update gamification plugin
    • 9aabb532 - Merge branch 'staging' into captcha_serpro_plugin
    Choose File ...   File name...
    Cancel
  • 4a20548511a65cfccc863520b70c3ee9?s=40&d=identicon
    Victor Costa @vfcosta

    Added 1 new commit:

    Choose File ...   File name...
    Cancel
  • 75f9da986cd17e271b4e4e64023bfa4a?s=40&d=identicon
    Evandro Junior @evandrojr

    Added 27 new commits:

    • 4de7f161 - Added hotspot for Serpro api captcha
    • 125a882b - Removes Serpro's Captcha settings from core's enviroment.rb
    • 793b517c - Merge branch 'login-captcha' into captcha_serpro_core_changes_with_eugenio_changes
    • 662610e5 - Merge branch 'login-captcha' into captcha_serpro_core_changes_with_eugenio_changes
    • db134de3 - Implemented votes with captcha
    • a9d1bd80 - removed serpro_captcha plugin code
    • 33087f2b - Merge remote-tracking branch 'origin/login-captcha' into login-captcha
    • 4f7106d9 - Added the missing session store
    • 87617f3c - Merge branch 'login-captcha' into captcha_serpro_core_changes_with_eugenio_changes
    • d7d8a871 - Added plugin directory
    • 61c44cf5 - Main tests passing
    • 534fff21 - Swaping value for its variable
    • be8ecf2b - commit to check how it used to be before captcha plugin
    • 69a17e1d - refactoring captcha tests
    • f0c82e2f - Pause to check the old version
    • c9998be9 - All tests from login_captcha test are passing finally!
    • ae983c5d - before deletion test
    • f0ee9f49 - before deleting breakpoints
    • 87b669b8 - All testing passing - BPs removed
    • 4aceccc6 - Separation from plugin
    • 6d9a2ad1 - Merge branch 'staging' into captcha_serpro_plugin
    • b8327d38 - Cleaning plugin directory
    • 5f0ef805 - Tracking serpro captcha plugin changes
    • 58db89bf - Fix for hotspot plugin
    • a2751aed - sets the commit for captcha
    • e790a045 - Merge branch 'staging' into captcha_serpro_plugin
    • 93529247 - Merge branch 'captcha_serpro_plugin' of softwarepublico.gov.br:noosferogov/noosf…
    Choose File ...   File name...
    Cancel
  • 75f9da986cd17e271b4e4e64023bfa4a?s=40&d=identicon
    Evandro Junior @evandrojr

    Added 7 new commits:

    • 63de04bb - limit 200 characters for proposals
    • 0c3f7690 - api: filter archived articles
    • bfd4a88f - Merge branch 'api-article-archived' into staging
    • e8d4bc59 - Update dialoga plugin
    • c98ad822 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • d9dfa9d5 - remove tests used for old captcha system
    • ad2ef918 - Merge branch 'staging' into captcha_serpro_plugin
    Choose File ...   File name...
    Cancel
  • 75f9da986cd17e271b4e4e64023bfa4a?s=40&d=identicon
    Evandro Junior @evandrojr

    Added 1 new commit:

    Choose File ...   File name...
    Cancel
  • 75f9da986cd17e271b4e4e64023bfa4a?s=40&d=identicon
    Evandro Junior @evandrojr

    Added 453 new commits:

    • dc3d7f7a - Merge branch 'staging' into captcha_serpro_plugin
    • 74b5257f - Merge branch 'captcha_serpro_plugin' of softwarepublico.gov.br:noosferogov/noosf…
    • 550c2015 - api: expose profile type
    • 4553d86d - api: return profile members
    • 73a69dfa - api: paginate members endpoint
    • 0d1f104b - Merge branch 'angular_poc' into staging
    • 416e5e6e - Setting will paginate to the version at debian stable
    • 57dba711 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 3aba3cdf - fix script production in app restart
    • a7df1a64 - Merge branch 'angular_poc' into staging
    • bfcc7bce - Merge branch 'angular_poc' into staging
    • 9aa6e644 - Translated using Weblate (Spanish)
    • 6ef35d10 - Translated using Weblate (Spanish)
    • 84108256 - Translated using Weblate (Spanish)
    • 00811eeb - Translated using Weblate (Spanish)
    • 95f5d867 - Translated using Weblate (Spanish)
    • beee8706 - Gemfile: fix dependency specification for Debian stable
    • 472a65c0 - allows erb templates in_database.yml
    • e1755d7e - Merge branch 'allow_erb_template_in_database_yml' into 'master'
    • 1e450b5b - Merge remote-tracking branch 'origin/master'
    • 940452c4 - Merge branch 'master' into staging
    • 9c81f9f2 - Update gemfile lock
    • 949d93fa - Fix merge with master
    • 9fd9ab7b - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 8c853e5a - Using another channel for irc and ruby version 2.2.1 in .travis.yml
    • c24579c4 - Update pairwise plugin
    • 0881f908 - remove feedback hardcoded code
    • c8fa463d - Update proposals_discussion plugin
    • 2dd9c858 - Merge branch 'master' into staging_rails4
    • d7466e4e - updating pairwise plugin
    • a3d12f0e - Merge branch 'master' into staging_rails4
    • 0e771dc8 - updating juventude plugin
    • 92fbfd94 - Merge branch 'master_rails4' into staging
    • 56f3aee2 - api: better support to choose returned fields
    • a3937f82 - Fix task mailer tests
    • ba59eba6 - api: fix search tests
    • a150d075 - responsive: don't fetch user again
    • 4b98e236 - Add slim: fatest and prettiest templates for rails
    • b1f028a2 - Remove slim gem on plugins as it is now on core
    • 825af879 - AddMemberTest: fix call to unexisting assertion method
    • 56b62930 - avoid sanitizer to encode special chars
    • 1ed857fe - api/search_test: remove extra whitespace
    • fe3b003a - api/search_test: fix flaky test
    • ecf8756f - test/unit/person_notifier_test: state expected exception type
    • 5cc78b4e - rails4: fixes call to deprecated assertion method
    • 95fdfbab - Add custom field feature to core
    • 741e19ae - Include some profile controller paths to show breadcrumbs block
    • c208417a - Fix how the duration of events are calculated
    • b730dafd - event: Fix past/future class on events
    • 093d5f22 - event: fix tests related to duration of event
    • 6fbe381c - util/debian-install: fix installing wheezy
    • acc7b3c9 - lib/noosfero.rb: remove unecessary require statement
    • 4c2a32d5 - comment_paragraph: fix sanitizer initialization (fix tests)
    • 0e4173fa - environment_notification: shorten index name (fix migration)
    • b512c204 - rails4: mv assert_not_include{,s}
    • 177dbc52 - rspec3: migrate be_true and be_false
    • 58ea4796 - Update delivery, orders, orders_cycle, suppliers and shopping_cart to rails4
    • 8bb7b83a - rspec3: enable deprecated should syntax
    • 8f8f1ad6 - Fix tasks controller tests
    • d26eed6e - Merge branch 'staging' into staging_rails4
    • 44c5519f - Merge branch 'master' into staging_rails4
    • 9c7cf5bc - Fix merge
    • 71129f10 - Fix merge
    • b47cc350 - Fix processed tasks action in task controller
    • 6f721222 - Update plugins
    • 633b9c2c - Merge branch 'master' into staging_rails4
    • 8a124641 - Merge branch 'staging' into staging_rails4
    • a74b5d28 - Update gemfile lock
    • 7041451b - Merge branch 'master' into staging_rails4
    • 8ea48a2e - Merge branch 'staging_rails4' of softwarepublico.gov.br:noosferogov/noosfero into staging_rails4
    • e1bd8b85 - update dialoga plugin
    • 65067c74 - fix oauth_provider plugin adding responders dependency for doorkeeper works properly
    • 749483e4 - Merge branch 'staging_rails4' of softwarepublico.gov.br:noosferogov/noosfero into staging_rails4
    • 0bf25818 - Merge branch 'pg_search_rank' into staging_rails4
    • 84dadd4c - Merge branch 'staging_rails4' of softwarepublico.gov.br:noosferogov/noosfero into staging_rails4
    • 1a54fba2 - updating pairwise plugin
    • 1279aed8 - Merge branch 'staging_rails4' of softwarepublico.gov.br:noosferogov/noosfero into staging_rails4
    • bf4e1cf1 - Merge branch 'master' into staging_rails4
    • 28c2e26c - Merge branch 'master' into staging_rails4
    • a45fc54a - Merge branch 'staging' into staging_rails4
    • fa3b8c7e - Merge branch 'master' into staging_rails4
    • da74e1bc - Update pairwise plugin
    • 176dd8f2 - Merge branch 'staging' into staging_rails4
    • 5289739f - ldap: fix gemfile
    • 73bba38f - Merge branch 'master' into staging_rails4
    • 0adad011 - Remove hardcoded piwik code from application layout
    • 6e048943 - Merge branch 'master' into staging_rails4
    • ba70edb6 - Update proposals_discussion plugin
    • 643884a9 - Fix merge
    • 2f6a334d - api: paginate article search
    • 67ed6ad5 - Update proposals discussion plugin
    • e09406fd - adding insight submodule plugin
    • 302b8afb - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 8f432858 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 788ad817 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • b698d268 - Update proposals_discussion plugin
    • c58ea4db - Update proposals_discussion plugin
    • eaa94bb4 - Add ruby version conf
    • cb4e3d39 - New hotspot to add custom buttons on content manager page
    • 92e5a6a5 - Merge branch 'content-manager-hostspot' into staging
    • 3a2b55ee - Update proposals_discussion plugin
    • be84546e - Update proposals_discussion plugin
    • c8edf175 - Update proposals_discussion plugin
    • e4bf0fc3 - Update proposals_discussion plugin
    • d8741207 - Update proposals_discussion plugin
    • affef2cf - Merge remote-tracking branch 'origin/staging' into login-captcha
    • 64f9b09c - Fixed test for article vote
    • a0944909 - Merged login-captcha with staging
    • 2ba09a89 - Remove debug code
    • 553a5c2f - Merge branch 'staging' into login-captcha
    • 8ebfe266 - Merge branch 'login-captcha' into 'staging'
    • 4c0bdaad - pg_search: refactor search query
    • b89cee4a - Merge branch 'pg_search_rank' into staging
    • 4c7d2f35 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 7a56a75e - api: added param 'has_children' into search article endpoint
    • 4cf430e9 - Merge branch 'staging' into api_articles_grandchildren
    • 7e575db7 - Merge branch 'api_articles_grandchildren' into 'staging'
    • 738d396b - api: apply article filters in search method
    • 8d9a57db - Merge branch 'master' into staging
    • 3a07ccbb - Remove file added by mistake
    • d3b5575c - api: fix ambiguity with children_count in article search
    • 266e7637 - Update proposals discussion plugin
    • 7afdf5e8 - virtuoso: update gemfile
    • c189907b - Update Gemfile.lock
    • 549ea0d2 - Update schema
    • f045320e - Update Gemfile.lock
    • 9f3043a6 - Fixed paths and using relative paths
    • bcc67679 - Minor fix to current_date_or_nil variable
    • 9ddb2acb - Using another channel for irc and ruby version 2.2.1 in .travis.yml
    • 5ab6c7e7 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 9777afa6 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 7ba5c0d4 - resending to test bugfix: force sprockets-rails to 2.3 version
    • 2fdd5328 - Added Gemfile.lock for travis
    • 0a7e61da - allows erb templates in_database.yml
    • 4b68f273 - removing community_hub
    • e660904e - adding community hub as submodule
    • ba115570 - Fix submodules url
    • 7b2bc6ad - Update notification channel
    • d19ad57a - - rm Gemfile.lock before_install travis
    • 9f6599cc - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • ac16dd9c - Fix grape entity version
    • 93200e51 - Update gemfile lock
    • fe6dd433 - Fix grape-entity version
    • c966445b - api: expose boxes and blocks for profiles
    • 7282d8be - api: search profile by identifier
    • 98ad3513 - api: expose article type
    • 550076d8 - api: login from noosfero cookie
    • 12f96cd5 - api: create boxes enpoint
    • 54a1e6d4 - api: add endpoint for profiles
    • fc162af5 - api: fix login from cookie
    • 5c39797b - api: add activities endpoint
    • 0d57b23f - api: expose entities related to activity
    • 6c8bd41f - Merge branch 'angular_poc' into staging
    • 7535aba7 - Merge branch 'travis' into staging
    • 54c448e2 - resending to test bugfix: force sprockets-rails to 2.3 version
    • 9994dedf - refactoring assert_equivalent to compare arrays properly
    • ec60dac8 - require_auth_to_comment: fix exception protected method logged_in?
    • dbaa5364 - Merge branch 'require_auth_to_comment_fix' into 'master'
    • 71178d9a - Noosfero::VERSION: avoid git warning on shallow clones
    • b867d614 - script/vagrant: extract APT proxy setup
    • 2ea43bfd - Add Dockerfile to build Debian Jessie CI image
    • 13eeb12b - .gitlab-ci.yml: use published docker image
    • 7bac1b27 - set-apt-proxy: fix script permissions
    • aaa3f4fe - ldap: add gemfile source
    • 370e1d19 - Enable bigger profile image on members list
    • c2223bbc - Merge branch 'change_members_image_size' into 'master'
    • 3bdce461 - piwik: allow custom path for url
    • fd438e0d - A saner implementation for assert_equivalent
    • 1cc1598d - bugfix in xss permission - map in my_profile
    • 7e75c5c5 - Merge branch 'fix-maps-load2' into 'master'
    • eb0257c2 - categories: fix type error in test
    • 632d06f9 - product_category: filter distinct (fix test)
    • d79e1da5 - shopping_cart: fix functional and selenium tests
    • 9a000264 - Remove binary contents add by mistake
    • 6f2734cd - assert_equivalent: fix typo (enum -> norm)
    • 9c680ef2 - enterprise: Use has_many for #product_categories
    • ec7bb260 - Fix: width of table on notification emails
    • 7816909c - Merge branch 'limit_email_notification_width' into 'master'
    • fcce10fe - Fix XSS terminate removing custom attributes for Macros
    • 568d29ce - Merge branch 'xss_terminate_custom_options' into 'master'
    • ef4af465 - Article visibility options meaning are now clearer
    • f88ca472 - cucumber: ensure rails_env is test if not passed
    • cf372b23 - fix logic of equivalent assertion for arrays with same size and elements duplicated
    • d9561154 - Replace interpolation by full strings
    • f79ff688 - Remove redundant load of plugins' rake tasks
    • e6801b9c - cucumber: set rails_env to cucumber instead of test
    • 9e3e94b3 - responsive: remove empty conflicting file
    • 74426cdd - Fix organization ratings translations' details
    • 5607f066 - Merge branch 'translation_fixies' into 'master'
    • e9c353c4 - Allow multi environment on remote user plugin
    • 1323bbe9 - api: remove check of expired token
    • 2b9e1360 - Merge branch 'participa/noosfero-remove_token_expired'
    • dc825ac2 - article: ensure comments fetch considers polymorphic relation
    • 8571cfc9 - Fix Stoa daemon paths and script name variables
    • 1d20b6f8 - Merge branch 'stoa-daemon' into 'master'
    • b256dff9 - ldap: accept multiple fields in login attribute
    • 0c7ed580 - Organization Ratings plugin improvements
    • ce49e588 - ldap: refactor authentication method
    • 492d8b25 - Translated using Weblate (Spanish)
    • 7be7e7c6 - Add custom field feature to core
    • 84ca7256 - Merge branch 'customfields-rails4' into 'master'
    • 5b9ea251 - Include some profile controller paths to show breadcrumbs block
    • 1a57fd09 - Merge branch 'increase_breadcrumbs_reach' into 'master'
    • 0bd3c635 - update db/schema.rb
    • 7f19dfe8 - Fix how the duration of events are calculated
    • 73a643ce - Merge branch 'event_duration' into 'master'
    • 36f1b7bc - event: Fix past/future class on events
    • 0d4fa8fa - Merge branch 'event_time' into 'master'
    • c153ab2b - event: fix tests related to duration of event
    • f2f58313 - util/debian-install: fix installing wheezy
    • 1309d67f - lib/noosfero.rb: remove unecessary require statement
    • 81ecee71 - comment_paragraph: fix sanitizer initialization (fix tests)
    • 3d1c948f - environment_notification: shorten index name (fix migration)
    • dc161eb7 - rails4: mv assert_not_include{,s}
    • 0f263193 - rspec3: migrate be_true and be_false
    • d663bb67 - Update delivery, orders, orders_cycle, suppliers and shopping_cart to rails4
    • d0c953ce - rspec3: enable deprecated should syntax
    • 9049f9e3 - organization-ratings: add hotspot for rating creation
    • ab48799c - cucumber: remove deprecation warnings from test logs
    • e74f65a7 - Merge branch 'next'
    • fd06f939 - adapting tests to use nokogiri correctly
    • 02b68349 - rails4: rename attachment_fu folder to the name of the gem
    • ddb1fffe - rails4: remove will_paginate from vendor/plugins as it is already load externally
    • 193d5352 - rails4: rename vote_fu to the name of its gem
    • 422b350a - rails4: rename contacts, gdata and ezcrypto to theis gems names
    • 21810adf - rails4: require missing dependencies
    • 922b8c6f - rails4: add needed gemspecs for gem dependency track
    • 8ca818fa - rails4: upgrade dependencies to rails4
    • 4fca4d2b - rails4: use secret_key_base
    • 380faf7e - rails4: upgrade initialization
    • fe697067 - rails4: upgrade routes
    • 0346bd58 - rails4: migrate set_table_name
    • cffc52de - rails4: fix regexp security error
    • 0fb9f587 - rails4.1: renamed reserved keyword
    • 62987843 - rails4.1: allow use of roles
    • 47b2e79b - rails4.1: remove configuration not supported
    • 3ffe1796 - rails4.1: temporaraly removed :finder_sql as it is not supported anymore
    • cce95085 - rails4.1: upgrade will_paginate, delayed_job and attachment_fu
    • a3ed4c95 - rails4: Use latest version from 4.1 series
    • 376bf478 - rails4: update eita-jrails
    • 61707cce - rails4: Default locale to en if not set
    • f231e19b - rails4: fix person/save infinite loop
    • 8925ef9a - rails4: Select RMagick processor for attachment_fu
    • 03c4d8cf - rails4: fix array sum for paths
    • 89b38599 - rails4: convert to string
    • 77c8eca9 - rails4: fix mass assignment on delayed_job
    • 816d1df6 - rails4: 'from' scope is reserved on rails4
    • a1dad6ba - rails4: replace :conditions by where
    • edb090f0 - rails4: update to rails 4.2
    • b56a45db - rails4: reject! don't work with relation
    • 5e5f1478 - rails4: replace includes with joins to fix query error
    • c9fefc28 - rails4: fix unitinialized constant Test
    • b4e6aa3b - rails4: assert_block was deprecated
    • a294f41d - rails4.2: migrate type casting as acts_as_having_settings
    • b84e8fa8 - rails4: from Task.find_by_code to scope
    • 3decb46d - rails4: fix tests init
    • a7264f26 - rails4: remove deprecated application controller file
    • 5a265683 - rails4: use Noosfero::Mailer to set required default_url_options
    • c9e6851d - rails4: do not assert ActiveRecord::Relation as rails changes it
    • 9b404dbe - rails4: disable autosave on person association
    • c6d40a34 - rails4: Array is not used for AR results
    • 9b8228e7 - rails4: use ApplicationMailer pattern
    • 20560074 - rails4: fix identifier regexp
    • d1246cba - rails4: add missed param
    • b5ca63ab - rails4: fix profile tests
    • 31b28c41 - rails4: fix articles versions' tests
    • db650139 - rails4: use new rails sanitizer (loofah)
    • 92267854 - rails4: fix user tests
    • 5d783a7e - rails4: check tag content
    • 2f568c12 - rails4: port comments on action_tracker
    • a3c6b602 - rails4: fix uploaded file tests
    • 6e6793d8 - rails4: only load minitest on test and use minitest-reporters
    • 80fe1db0 - rails4: simplify and fix find_tag_in_string
    • e1f5836f - rails4: use latest rails
    • 7cb73057 - rails4: fix rake db:schema:load run
    • 3c57da65 - rails4: fix a bunch of unit tests
    • 2cee8f57 - rails4: fix more unit tests
    • 1cc34ff8 - rails4: fix all unit tests
    • fafb323e - rails4: fix most functional tests
    • 0e75f1c2 - rails4: fix remaining funcionals tests
    • 7e00c87c - rails4: fix integration tests
    • 6ee575f1 - rails4: fix init (upgrade cucumber) and fix some scenarios
    • bcf8f080 - rails4: update jquery-ujs' rails.js
    • 5281ccda - rails4: fix remaining cucumber tests
    • 1ea6b1cb - rails4: change require on tests
    • f1b53f69 - rails4: fix migration errors with Noosfero::Plugin::ActiveRecord
    • eb8d2df0 - rails4: use new sanitizer
    • 71b019f0 - rails4: put default primary key and convert Rails.root.join for gsub
    • e045c942 - rails4: fix foundation_year validation
    • e6c893a2 - rails4: changed missed set_table_name
    • ecc9032a - rails4: removed unused rakismet from vendor
    • 6b366ef4 - rails4: move to is_public scope
    • f8dbcc7c - rails4: use data-confirm to work with new rails.js
    • caf7b511 - rails4: update attachment_fu and remove monkey patch
    • e3bb9147 - rails4: fix count with distinct monkey patch
    • 92d8b7be - rails4: fix asset pipeline use
    • d6340a14 - rails4: fix plugins tests
    • 5cc216ef - Merge branch 'noosfero' into rails4
    • 97ae8d25 - rails4: port to new session_store
    • a3bfec81 - rails4: workaround user load
    • f3ac17d4 - rails4: fix broken tests after merge
    • c686ddb2 - Merge branch 'noosfero' into rails4
    • b9d2cc07 - rails4: update to 4.2.4
    • 8548bd8a - rails4: fix units and plugins tests
    • b93de569 - travis: use ruby 2.2.3
    • 1e78417c - rails4: fix remaining unit and functionals tests
    • 3ce06577 - rails4: fix layout disable
    • 525cc340 - rails4: fix randomly failing person_notifier test
    • 92def34a - rails4: fix selenium tests
    • c5a6b574 - responsive: use prepend only on ruby 2.0.0+
    • 64eda093 - rails4: fix tests on edge cases
    • 4352c377 - rails4: stick with ruby 1.9 for lambda syntax bug
    • ee8fd9e4 - Merge branch 'noosfero' into rails4
    • 6e62a1c1 - rails4: fix support for ruby 1.9
    • 4b24bb17 - Merge branch 'noosfero' into rails4
    • 274d9644 - rails4: add missed spring-commands-testunit
    • fe8fe114 - rails4,api: fix requires
    • 810bfe8c - rails4: use lambda syntax compatible with ruby 1.9 and 2.0
    • 65264159 - rails4: back to testing on ruby 2 as it is way faster
    • 69d5f48c - rails4: use eager_load by default (fix api tests)
    • df51a028 - rails4: set current user on approve_article tests
    • 190f639e - travis: fix ruby version
    • ab2d95ff - rails4: simbolize keys on full hash assign
    • b3d6f944 - rails4: fix asset pipeline use
    • 0bb637b2 - rails4: rename remaining old named_scope
    • 41f821e8 - rails4: fix more redirect_to params error
    • b71858da - rails4: remove silencers from backtrace_cleaner
    • d486c3ff - rails4: replace update_attributes with the new update
    • a13bb596 - rails4: force html rendering for 403/404
    • 8bc107b4 - rails4: correctly handle api errors
    • 3ce46bb6 - Merge branch 'noosfero' into rails4
    • 36f9dc48 - articles: be specific in queries
    • 809ba7e6 - rails4: move hash key to symbol
    • c50ccd6e - Merge branch 'noosfero' into rails4
    • 6d8fd953 - rails4: fix login invalidation
    • d3c1bfbb - rails4: fix cucumber deprecation warnings
    • df84cdf6 - rails4: make login possible without touching user_data
    • 21a97a65 - delayed_job: config logger
    • 10e7ec44 - rails4: fix size to nil instead empty string (do not use to_s)
    • cbd6f636 - rails4: fix functionals test after merge
    • 4b28211e - rails4: fix a case where partial_for_class is not working for plugins
    • 01937f3d - rails4: relax some dependency constraints
    • a8b43e69 - Gemfile: drop versioned dependency on cucumber
    • b25546b4 - travis-ci: comment makemo until new gettext's api is used
    • f09b8e4e - Merge branch 'master' of https://gitlab.com/noosfero/noosfero into rails4
    • cec323ee - Merge branch 'master' of https://gitlab.com/noosfero/noosfero into rails4
    • 36a91335 - Merge branch 'noosfero' into rails4
    • 1b6f9e37 - Merge branch 'noosfero' into rails4
    • c9c81cfa - rails4: apply associations extensions to child classes
    • d4733489 - Add memberships association for eager loading
    • e8fa0f50 - rails4: Remove activecord primary_key monkey patch
    • c9ce5315 - rails: use a Debian Jessie vagrant box by default
    • 7fcc2cb0 - Add script to install dependencies on Debian Jessie
    • 0e6cd29a - rails4: relax dependencies for Debian Jessie
    • cc3a302d - Remove embedded copy of diffy
    • b2104972 - rails4: Gemfile adjustments
    • 63963974 - rails4: update debian package dependencies
    • f7761e0d - Merge branch 'master' into rails4
    • d7ee1f55 - rails4: don't force a sass version
    • 2c34db5f - Merge remote-tracking branch 'origin/master' into rails4
    • 10aff692 - rails4: go back to rails 4.2
    • 5ebd5e2c - Merge remote-tracking branch 'origin/master' into rails4
    • 74f1ee68 - rails4: port translation tasks to Ruby-GetText 3.x
    • 8376889f - noosfero:translations:compile: avoid change to PO files
    • 5d6f2e08 - noosfero:translations:compile: look for PO files in the right place
    • de53d9cf - plugins/analytics: removing empty POT file
    • d72d5de2 - quick-start: also create test database
    • 678f0e26 - Merge branch 'master' into rails4
    • f9a04729 - rails4: fix asset pipeline
    • a700537c - Merge branch 'rails4'
    • 2dd3d36d - script/development: always send unicorn to the background
    • 359f5d1c - plugins: don't abort on failure of a single plugin
    • e372474d - Restore behavior of the default rake task
    • aece445a - gitignore.example: ignore a local initializer file
    • bf2cbbd3 - Fix behaviour of rake
    • 348b6cb5 - Fixes whenever in production for a multitenancy setup
    • 8c698880 - Merge branch 'whenever-multitenancy' into 'master'
    • 0a886b64 - drop test:rcov task
    • 90a9d312 - Move ci run to script/ci
    • 39a64217 - Remove bogus duplicated code
    • c1bebd4c - Move grape_routes task to its own file
    • 139ef7fe - added 'restricted' mode to tinymce
    • efd5f974 - environment_notification: mv css to public folder
    • d03350b9 - organization_ratings: move css to public folder
    • 45e0d0bc - script/ci: ease search for specific tasks in log
    • 5641033f - Fix name of selenium rake task file
    • 4075f24d - newsletter: whitelist only text for article in newsletter
    • dcddcdea - newsletter: makes gap between tasks border and newsletter border smaller
    • ef77a138 - Merge branch 'newsletter-article-image' into 'master'
    • 82855c6a - dockerfile: update debian image to jessie
    • 0ba03df6 - newsletter: Fixes index creation in migration
    • 6aa8737e - Remove obsolete symlink added by old versions
    • 13fd87d5 - rails4: removes remaining Noosfero::Plugin::ActiveRecord
    • b164af65 - API improvements:
    • 0ac23124 - api: fixes to merge api to rails 4
    • 1e537056 - add test for user api
    • 67589517 - Fix cache_key expiration on image uploaded in articles
    • bd70a538 - Merge branch 'fix_image_cache_key' into 'master'
    • 42b3475d - Merge branch 'master' of gitlab.com:noosfero/noosfero
    • 663c7bac - removing unsed test file
    • 9e8b2738 - Move non-responsive styles from application.css to base theme
    • 48ca8357 - Merge branch 'move-non-responsive-styles' into 'master'
    • 9f1aafae - Support jruby
    • 10e08553 - Remove invalid submodule
    • 29e95ea9 - responsive: don't fetch user again
    • 689be119 - Add slim: fatest and prettiest templates for rails
    • 66f63aa8 - Remove slim gem on plugins as it is now on core
    • de606257 - AddMemberTest: fix call to unexisting assertion method
    • 71a1ced2 - avoid sanitizer to encode special chars
    • 4511d505 - Merge branch 'fix-html-sanitizer'
    • 947bf54c - db/schema.rb: update to Rails 4 conventions
    • 5962c438 - api/search_test: remove extra whitespace
    • c48a83f6 - api/search_test: fix flaky test
    • cf8721e9 - test/unit/person_notifier_test: state expected exception type
    • 75f13387 - rails4: fixes call to deprecated assertion method
    • d1261c16 - newsletter: Fix moderation checkbox regex
    • 674b489a - newsletter: Removes header padding in moderation page
    • ea09f868 - sniffer: rails4 fix filtering of virtual attribute distance
    • 57c595aa - newsletter: Fix test helper import
    • 0ee683a4 - Merge branch 'plugin-bug-fixes' into 'master'
    • e65387e7 - 0-downtime upgrades with the Debian package
    • d3b2dfce - Fix calendar of events for dates with time zone
    • 0767edbc - Merge remote-tracking branch 'origin/master'
    • 614b0d24 - ApplicationControllerTest: adapt multitenancy test
    • d4df1561 - ProfileControllerTest: fix pagination test
    • dc115f26 - Adjust multitenancy test for different PostgreSQL versions
    • 9ff5859c - Upgrade varnish configuration to Varnish 4
    • 875d8afc - Fix HTTP caching and logins with rails 4
    • 6d69da64 - Merge branch 'fix-http-cache' into 'master'
    • e85482ea - organization_ratings: fix migration
    • d378acea - shopping_cart: fix selenium tests
    • 6a2769a5 - assert_equivalent must have the same number of elements
    • 0e6a068c - should not return a theme twice
    • 6ea50685 - Merge branch 'fix_equivalent' into 'master'
    • 3057b70b - return distinct elements in by_enterprise scope
    • 13870552 - Revert "return distinct elements in by_enterprise scope"
    • 128fa31d - removing profile_cat_icons
    • 0726343b - Merge branch 'remove_profile_cat_icons' into 'master'
    • 1674a3a1 - fix to run all plugins tests
    • ab865b86 - bugfix: put the correct article path
    • 1eeb24c6 - bugfix: force sprockets-rails to 2.3 version
    • 265273eb - Merge branch 'master' of softwarepublico.gov.br:noosferogov/noosfero
    • 8171395e - will tell all the failing tests with rake test
    • 6c9f1b36 - Removing Gemfile.lock
    • 533510e8 - - rm Gemfile.lock
    • 72ed6347 - Wont stop travis if Gemfile.lock does not exist
    • afd98f83 - Added specific things for noosferogov
    • 6081a419 - adds - TASK=rake test:all:db
    • 5ae4a98c - Merge branch 'travis' into staging
    • fa13b303 - Merge branch 'staging' of softwarepublico.gov.br:noosferogov/noosfero into staging
    • 28720598 - Makes travis run all the tests via ./script/ci
    • 062c5cea - Merge branch 'staging' into captcha_serpro_plugin
    • d75b4fbd - adds support for voting without login
    Choose File ...   File name...
    Cancel
  • 75f9da986cd17e271b4e4e64023bfa4a?s=40&d=identicon
    Evandro Junior @evandrojr

    Added 1 new commit:

    • 316cf820 - Fixed submodules references
    Choose File ...   File name...
    Cancel
  • 75f9da986cd17e271b4e4e64023bfa4a?s=40&d=identicon
    Evandro Junior @evandrojr

    Added 1 new commit:

    • 2536cdf8 - updates submodule version for recaptcha plugin
    Choose File ...   File name...
    Cancel
  • 75f9da986cd17e271b4e4e64023bfa4a?s=40&d=identicon
    Evandro Junior @evandrojr

    Added 1 new commit:

    Choose File ...   File name...
    Cancel
  • 6807826f4ac49736f2136eb2d59d25e3?s=40&d=identicon
    Francisco Júnior @maljunior

    Added 1 new commit:

    • 6639db52 - update submodule version for recaptcha plugin
    Choose File ...   File name...
    Cancel