Commit 7d1cef867e1325f623638366faeb5387a9261b0a
0 parents
Exists in
master
initial commit Noosfero Gravatar Provider Plugin
Showing
8 changed files
with
128 additions
and
0 deletions
Show diff stats
| 1 | +++ a/controllers/gravatar_provider_plugin_controller.rb | ||
| @@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
| 1 | +class GravatarProviderPluginController < PublicController | ||
| 2 | + append_view_path File.join(File.dirname(__FILE__) + '/../views') | ||
| 3 | + def h | ||
| 4 | + begin | ||
| 5 | + user_hash = GravatarProviderPlugin::UserEmailHash.where(email_md5_hash: params[:id]).first | ||
| 6 | + redirect_to profile_icon(user_hash.user.person, :thumb) | ||
| 7 | + rescue Exception => e | ||
| 8 | + Rails.logger.error "GravatarProviderPlugin:: Cannot find profile image for hash [#{params[:id]}]" | ||
| 9 | + redirect_to '/plugins/gravatar_provider/images/nophoto.png' | ||
| 10 | + end | ||
| 11 | + end | ||
| 12 | + | ||
| 13 | +end |
db/migrate/20150611070000_create_gravatar_provider_plugin_user_emails_hashes_table.rb
0 → 100644
| 1 | +++ a/db/migrate/20150611070000_create_gravatar_provider_plugin_user_emails_hashes_table.rb | ||
| @@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
| 1 | +class CreateGravatarProviderPluginUserEmailsHashesTable < ActiveRecord::Migration | ||
| 2 | + def self.up | ||
| 3 | + create_table :gravatar_provider_plugin_user_email_hashes do |t| | ||
| 4 | + t.belongs_to :user | ||
| 5 | + t.string :email_md5_hash | ||
| 6 | + end | ||
| 7 | + add_index( | ||
| 8 | + :gravatar_provider_plugin_user_email_hashes, | ||
| 9 | + [:email_md5_hash], | ||
| 10 | + name: 'index_gravatar_provider_plugin_md5_hash' | ||
| 11 | + ) | ||
| 12 | + user_count = User.count | ||
| 13 | + puts "Migrating #{user_count} user to table gravatar_provider_plugin_user_email_hashes..." | ||
| 14 | + User.all.each do |user| | ||
| 15 | + GravatarProviderPlugin::UserEmailHash.create! do |user_email_hash| | ||
| 16 | + user_email_hash.user = user | ||
| 17 | + user_email_hash.email_md5_hash = Digest::MD5.hexdigest(user.email) | ||
| 18 | + end | ||
| 19 | + end | ||
| 20 | + puts "Migration gravatar_provider_plugin_user_email_hashes completed" | ||
| 21 | + end | ||
| 22 | + def self.down | ||
| 23 | + drop_table :gravatar_provider_plugin_user_email_hashes | ||
| 24 | + end | ||
| 25 | +end |
| 1 | +++ a/lib/ext/user.rb | ||
| @@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
| 1 | +require_dependency 'user' | ||
| 2 | +require 'digest/md5' | ||
| 3 | + | ||
| 4 | +User.class_eval do | ||
| 5 | + | ||
| 6 | + after_create :insert_email_hash | ||
| 7 | + | ||
| 8 | + def insert_email_hash | ||
| 9 | + GravatarProviderPlugin::UserEmailHash.create! do |user_email_hash| | ||
| 10 | + user_email_hash.user = self | ||
| 11 | + user_email_hash.email_md5_hash = Digest::MD5.hexdigest(self.email) | ||
| 12 | + end | ||
| 13 | + end | ||
| 14 | + | ||
| 15 | +end |
| 1 | +++ a/lib/gravatar_provider_plugin.rb | ||
| @@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
| 1 | +class GravatarProviderPlugin < Noosfero::Plugin | ||
| 2 | + | ||
| 3 | + def self.plugin_name | ||
| 4 | + "GravatarProviderPlugin" | ||
| 5 | + end | ||
| 6 | + | ||
| 7 | + def self.plugin_description | ||
| 8 | + _("A plugin that enable noosfero as a gravatar server") | ||
| 9 | + end | ||
| 10 | + | ||
| 11 | + def stylesheet? | ||
| 12 | + true | ||
| 13 | + end | ||
| 14 | + | ||
| 15 | +end |
1.14 KB
test/functional/gravatar_provider_plugin_controller_test.rb
0 → 100644
| 1 | +++ a/test/functional/gravatar_provider_plugin_controller_test.rb | ||
| @@ -0,0 +1,24 @@ | @@ -0,0 +1,24 @@ | ||
| 1 | +require "test_helper" | ||
| 2 | + | ||
| 3 | +class GravatarProviderPluginControllerTest < ActionController::TestCase | ||
| 4 | + fixtures :profiles, :environments, :users, :roles, :domains | ||
| 5 | + | ||
| 6 | + include ApplicationHelper | ||
| 7 | + | ||
| 8 | + def setup | ||
| 9 | + user = create_user_full('testinguser') | ||
| 10 | + @person = user.person | ||
| 11 | + @user_email_hash = GravatarProviderPlugin::UserEmailHash.where(user_id: user.id).first | ||
| 12 | + end | ||
| 13 | + | ||
| 14 | + def current_theme | ||
| 15 | + 'default' | ||
| 16 | + end | ||
| 17 | + | ||
| 18 | + def test_index_should_redirect_to_user_image | ||
| 19 | + get :h, {id: @user_email_hash.email_md5_hash} | ||
| 20 | + assert_redirected_to profile_icon(@person, :thumb) | ||
| 21 | + end | ||
| 22 | + | ||
| 23 | + | ||
| 24 | +end |
| 1 | +++ a/test/unit/user_email_hash_test.rb | ||
| @@ -0,0 +1,28 @@ | @@ -0,0 +1,28 @@ | ||
| 1 | +require "test_helper" | ||
| 2 | + | ||
| 3 | +class UserEmailHashTest < ActiveSupport::TestCase | ||
| 4 | + fixtures :profiles, :environments, :users, :roles, :domains | ||
| 5 | + | ||
| 6 | + def setup | ||
| 7 | + @user_email_hash = GravatarProviderPlugin::UserEmailHash.new | ||
| 8 | + end | ||
| 9 | + | ||
| 10 | + should 'not save without user' do | ||
| 11 | + assert !@user_email_hash.save | ||
| 12 | + end | ||
| 13 | + | ||
| 14 | + should 'require user' do | ||
| 15 | + @user_email_hash.save | ||
| 16 | + assert @user_email_hash.errors[:user].present? | ||
| 17 | + end | ||
| 18 | + | ||
| 19 | + should 'require email_md5_hash' do | ||
| 20 | + @user_email_hash.save | ||
| 21 | + assert @user_email_hash.errors[:email_md5_hash].present? | ||
| 22 | + end | ||
| 23 | + | ||
| 24 | + should 'have user_email_hash record crerated after user creation' do | ||
| 25 | + user = create_user_full 'mytestuser' | ||
| 26 | + assert GravatarProviderPlugin::UserEmailHash.where(user_id: user.id).count.eql?(1) | ||
| 27 | + end | ||
| 28 | +end |