Commit 6cee467c2475ddb082382416859e21fa7fb850b3
1 parent
b29e7d78
Exists in
theme-brasil-digital-from-staging
and in
7 other branches
api: method to resend activation code
Showing
2 changed files
with
29 additions
and
0 deletions
Show diff stats
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 | ... | ... |