Commit 7d1cef867e1325f623638366faeb5387a9261b0a

Authored by Leandro Santos
0 parents
Exists in master

initial commit Noosfero Gravatar Provider Plugin

controllers/gravatar_provider_plugin_controller.rb 0 → 100644
  1 +++ a/controllers/gravatar_provider_plugin_controller.rb
... ... @@ -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 @@
  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
... ...
lib/ext/user.rb 0 → 100644
  1 +++ a/lib/ext/user.rb
... ... @@ -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
... ...
lib/gravatar_provider_plugin.rb 0 → 100644
  1 +++ a/lib/gravatar_provider_plugin.rb
... ... @@ -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
... ...
lib/gravatar_provider_plugin/user_email_hash.rb 0 → 100644
  1 +++ a/lib/gravatar_provider_plugin/user_email_hash.rb
... ... @@ -0,0 +1,8 @@
  1 +class GravatarProviderPlugin::UserEmailHash < Noosfero::Plugin::ActiveRecord
  2 + belongs_to :user
  3 +
  4 + attr_accessible :email_md5_hash
  5 +
  6 + validates_presence_of :user, :email_md5_hash
  7 +
  8 +end
... ...
public/images/nophoto.png 0 → 100644

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 @@
  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
... ...
test/unit/user_email_hash_test.rb 0 → 100644
  1 +++ a/test/unit/user_email_hash_test.rb
... ... @@ -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
... ...