[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