Commit 6cee467c2475ddb082382416859e21fa7fb850b3

Authored by Victor Costa
1 parent b29e7d78

api: method to resend activation code

lib/noosfero/api/session.rb
... ... @@ -128,6 +128,24 @@ module Noosfero
128 128 end
129 129 end
130 130  
  131 + # Resend activation code.
  132 + #
  133 + # Parameters:
  134 + # value (required) - Email or login
  135 + # Example Request:
  136 + # POST /resend_activation_code?value=some@mail.com
  137 + post "/resend_activation_code" do
  138 + requestors = fetch_requestors(params[:value])
  139 + not_found! if requestors.blank?
  140 + remote_ip = (request.respond_to?(:remote_ip) && request.remote_ip) || (env && env['REMOTE_ADDR'])
  141 + # test_captcha will render_api_error! and exit in case of any problem
  142 + # this return is just to improve the clarity of the execution path
  143 + return unless test_captcha(remote_ip, params, environment)
  144 + requestors.each do |requestor|
  145 + requestor.user.resend_activation_code
  146 + end
  147 + end
  148 +
131 149 params do
132 150 requires :code, type: String, desc: _("Forgot password code")
133 151 end
... ...
test/unit/api/session_test.rb
... ... @@ -210,4 +210,15 @@ class SessionTest < ActiveSupport::TestCase
210 210 assert !json['user']['private_token'].present?
211 211 end
212 212  
  213 + should 'resend activation code for an inactive user' do
  214 + user = create_user
  215 + params = {:value => user.login}
  216 + Delayed::Job.destroy_all
  217 + assert_difference 'ActionMailer::Base.deliveries.size' do
  218 + post "/api/v1/resend_activation_code?#{params.to_query}"
  219 + process_delayed_job_queue
  220 + end
  221 + assert_equal user.email, ActionMailer::Base.deliveries.last['to'].to_s
  222 + end
  223 +
213 224 end
... ...