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 @@ |
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 | ... | ... |
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 | ... | ... |
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 | ... | ... |
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 | ... | ... |
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 | ... | ... |