From 6cee467c2475ddb082382416859e21fa7fb850b3 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Wed, 18 Nov 2015 10:54:06 -0300 Subject: [PATCH] api: method to resend activation code --- lib/noosfero/api/session.rb | 18 ++++++++++++++++++ test/unit/api/session_test.rb | 11 +++++++++++ 2 files changed, 29 insertions(+), 0 deletions(-) diff --git a/lib/noosfero/api/session.rb b/lib/noosfero/api/session.rb index 20a6ec4..70229be 100644 --- a/lib/noosfero/api/session.rb +++ b/lib/noosfero/api/session.rb @@ -128,6 +128,24 @@ module Noosfero end end + # Resend activation code. + # + # Parameters: + # value (required) - Email or login + # Example Request: + # POST /resend_activation_code?value=some@mail.com + post "/resend_activation_code" do + requestors = fetch_requestors(params[:value]) + not_found! if requestors.blank? + remote_ip = (request.respond_to?(:remote_ip) && request.remote_ip) || (env && env['REMOTE_ADDR']) + # test_captcha will render_api_error! and exit in case of any problem + # this return is just to improve the clarity of the execution path + return unless test_captcha(remote_ip, params, environment) + requestors.each do |requestor| + requestor.user.resend_activation_code + end + end + params do requires :code, type: String, desc: _("Forgot password code") end diff --git a/test/unit/api/session_test.rb b/test/unit/api/session_test.rb index ba6d88f..949c278 100644 --- a/test/unit/api/session_test.rb +++ b/test/unit/api/session_test.rb @@ -210,4 +210,15 @@ class SessionTest < ActiveSupport::TestCase assert !json['user']['private_token'].present? end + should 'resend activation code for an inactive user' do + user = create_user + params = {:value => user.login} + Delayed::Job.destroy_all + assert_difference 'ActionMailer::Base.deliveries.size' do + post "/api/v1/resend_activation_code?#{params.to_query}" + process_delayed_job_queue + end + assert_equal user.email, ActionMailer::Base.deliveries.last['to'].to_s + end + end -- libgit2 0.21.2