[Git][noosfero/noosfero][master] 2 commits: Add method to resend activation code
Bráulio Bhavamitra
gitlab at mg.gitlab.com
Fri Apr 1 20:29:42 BRT 2016
Bráulio Bhavamitra pushed to branch master at Noosfero / noosfero
Commits:
f8be4d99 by Victor Costa at 2016-04-01T16:45:53-03:00
Add method to resend activation code
Signed-off-by: Alexandre Barbosa <alexandreab at live.com>
Signed-off-by: Macartur Sousa <macartur.sc at gmail.com>
Signed-off-by: Marcos Ronaldo <marcos.rpj2 at gmail.com>
- - - - -
10ca9627 by Bráulio Bhavamitra at 2016-04-01T23:29:09+00:00
Merge branch 'resend_activation_email' into 'master'
Add method to resend activation code
Signed-off-by: Alexandre Barbosa <alexandreab at live.com>
Signed-off-by: Marcos Ronaldo <marcos.rpj2 at gmail.com>
See merge request !802
- - - - -
4 changed files:
- app/models/user.rb
- lib/noosfero/api/session.rb
- test/unit/api/session_test.rb
- test/unit/user_test.rb
Changes:
=====================================
app/models/user.rb
=====================================
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -417,6 +417,12 @@ class User < ActiveRecord::Base
@is_password_required = false
end
+ def resend_activation_code
+ return if self.activated?
+ update_attribute(:activation_code, make_activation_code)
+ self.deliver_activation_code
+ end
+
protected
def normalize_email
=====================================
lib/noosfero/api/session.rb
=====================================
--- a/lib/noosfero/api/session.rb
+++ b/lib/noosfero/api/session.rb
@@ -113,6 +113,22 @@ module Noosfero
end
end
+ # Resend activation code.
+ #
+ # Parameters:
+ # value (required) - Email or login
+ # Example Request:
+ # POST /resend_activation_code?value=some at 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'])
+ requestors.each do |requestor|
+ requestor.user.resend_activation_code
+ end
+ present requestors.map(&:user), :with => Entities::UserLogin
+ end
+
params do
requires :code, type: String, desc: _("Forgot password code")
end
=====================================
test/unit/api/session_test.rb
=====================================
--- a/test/unit/api/session_test.rb
+++ b/test/unit/api/session_test.rb
@@ -192,4 +192,30 @@ 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
+ json = JSON.parse(last_response.body)
+ refute json['users'].first['private_token']
+ assert_equal user.email, ActionMailer::Base.deliveries.last['to'].to_s
+ end
+
+ should 'not resend activation code for an active user' do
+ user = create_user
+ params = {:value => user.login}
+ user.activate
+ Delayed::Job.destroy_all
+ assert_no_difference 'ActionMailer::Base.deliveries.size' do
+ post "/api/v1/resend_activation_code?#{params.to_query}"
+ process_delayed_job_queue
+ end
+ json = JSON.parse(last_response.body)
+ assert json['users'].first['private_token']
+ end
+
end
=====================================
test/unit/user_test.rb
=====================================
--- a/test/unit/user_test.rb
+++ b/test/unit/user_test.rb
@@ -737,6 +737,28 @@ class UserTest < ActiveSupport::TestCase
assert user.private_token, 'token'
end
+ should 'deliver e-mail with activation code when resend was requested and user was not activated' do
+ user = new_user :email => 'pending at activation.com'
+ activation_code = user.activation_code
+ Delayed::Job.destroy_all
+ assert_difference 'ActionMailer::Base.deliveries.size', 1 do
+ user.resend_activation_code
+ process_delayed_job_queue
+ end
+ assert_not_equal activation_code, user.reload.activation_code
+ assert_equal 'pending at activation.com', ActionMailer::Base.deliveries.last['to'].to_s
+ end
+
+ should 'not deliver e-mail with activation code when resend was requested and user was activated' do
+ user = new_user :email => 'pending at activation.com'
+ user.activate
+ Delayed::Job.destroy_all
+ assert_no_difference 'ActionMailer::Base.deliveries.size' do
+ user.resend_activation_code
+ process_delayed_job_queue
+ end
+ end
+
protected
def new_user(options = {})
user = User.new({ :login => 'quire', :email => 'quire at example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options))
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/6d94d28cc4c6fbdeec68653bba7a89d98f09d12c...10ca96273e76289c4516ae8a4d8f24879524395f
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20160401/529e0d51/attachment-0001.html>
More information about the Noosfero-dev
mailing list