Merge branch 'master' of bitbucket.org:jamkazam/jam-ruby

This commit is contained in:
Seth Call 2012-11-15 20:50:13 -06:00
commit 35f5c13283
14 changed files with 79 additions and 47 deletions

View File

@ -22,6 +22,7 @@ require "jam_ruby/tire_tasks"
require "jam_ruby/message_factory"
require "jam_ruby/models/genre"
require "jam_ruby/models/user"
require "jam_ruby/models/user_authorization"
require "jam_ruby/models/band"
require "jam_ruby/models/connection"
require "jam_ruby/models/friendship"

View File

@ -23,7 +23,7 @@ module JamRuby
sendgrid_category "Welcome"
sendgrid_unique_args :type => "welcome_message"
mail(:to => user.email, :subject => "Welcome #{user.name} to Jamkazam") do |format|
mail(:to => user.email, :subject => "Welcome #{user.first_name} to Jamkazam") do |format|
format.text
format.html
end

View File

@ -1,5 +1,5 @@
<html>
<body>
Reset Password! <%= @user.name %>
Reset Password! <%= @user.email %>
</body>
</html>

View File

@ -1 +1 @@
Reset Password! <%= @user.name %>
Reset Password! <%= @user.email %>

View File

@ -1,6 +1,6 @@
<html>
<body>
<p>Welcome! <%= @user.name %>.</p>
<p>Welcome! <%= @user.first_name %>.</p>
<p>To confirm your registration, please go to the <a href="<%= @signup_confirm_url %>">signup confirmation page.</a>.</p>
</body>
</html>

View File

@ -1,2 +1,2 @@
Welcome! <%= @user.name %>
Welcome! <%= @user.first_name %>
To confirm your registration, please go to the signup confirmation page at : <%= @signup_confirm_url %>.

View File

@ -2,11 +2,14 @@ module JamRuby
class User < ActiveRecord::Base
include Tire::Model::Search
attr_accessible :first_name, :last_name, :name, :email, :password, :password_confirmation, :city, :state, :country
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :city, :state, :country
attr_accessor :updating_password
self.primary_key = 'id'
# authorizations (for facebook, etc -- omniauth)
has_many :user_authorizations, :class_name => "JamRuby::UserAuthorization"
# account
belongs_to :account, :class_name => "JamRuby::Account"
@ -65,7 +68,6 @@ module JamRuby
after_save :limit_to_five_instruments
validates :name, uniqueness: {case_sensitive: false}, presence: true, length: {maximum: 50}
validates :first_name, presence: true, length: {maximum: 50}
validates :last_name, presence: true, length: {maximum: 50}
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
@ -114,7 +116,11 @@ module JamRuby
def to_s
return email unless email.nil?
return name unless name.nil?
if !first_name.nil? && !last_name.nil?
return first_name + ' ' + last_name
end
return id
end
@ -141,11 +147,6 @@ module JamRuby
user.last_name = params[:last_name]
end
# username
unless params[:name].nil?
user.name = params[:name]
end
# email
unless params[:email].nil?
user.email = params[:email]
@ -230,15 +231,26 @@ module JamRuby
# throws ActiveRecord::RecordNotFound if instrument is invalid
# throws an email delivery error if unable to connect out to SMTP
def self.signup(name, email, password, password_confirmation,
def self.signup(first_name, last_name, email, password, password_confirmation,
city, state, country, instruments, signup_confirm_url)
user = User.new
UserManager.active_record_transaction do |user_manager|
user.name = name
user.first_name = first_name
user.last_name = last_name
user.email = email
user.password = password
user.password_confirmation = password_confirmation
#FIXME: Setting random password for social network logins. This
# is because we have validations all over the place on this.
# The right thing would be to have this null
if password.nil?
user.password = "blahblahblah"
user.password_confirmation = "blahblahblah"
else
user.password = password
user.password_confirmation = password_confirmation
end
user.admin = false
user.email_confirmed = false
user.city = city
@ -263,9 +275,13 @@ module JamRuby
if user.errors.any?
raise ActiveRecord::Rollback
else
# FIXME:
# It's not standard to require a confirmation when a user signs up with Facebook.
# We should stop asking for it.
#
# any errors here should also rollback the transaction; that's OK. If emails aren't going to be delivered,
# it's already a really bad situation; make user signup again
UserMailer.welcome_message(user, signup_confirm_url + "/" + user.signup_token).deliver
UserMailer.welcome_message(user, signup_confirm_url.nil? ? nil : (signup_confirm_url + "/" + user.signup_token) ).deliver
end
end

View File

@ -0,0 +1,16 @@
module JamRuby
class UserAuthorization < ActiveRecord::Base
attr_accessible :provider, :uid, :token, :token_expiration
self.table_name = "user_authorizations"
self.primary_key = 'id'
belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "user_id"
validates :provider, :uid, :presence => true
# token and token_expiration can be missing
end
end

View File

@ -1,6 +1,5 @@
FactoryGirl.define do
factory :user, :class => JamRuby::User do
sequence(:name) { |n| "Person #{n}" }
sequence(:email) { |n| "person_#{n}@example.com"}
password "foobar"
password_confirmation "foobar"

View File

@ -10,8 +10,8 @@ describe ConnectionManager do
@message_factory = MessageFactory.new
end
def create_user(name, email)
@conn.exec("INSERT INTO users (name, email, password_digest) VALUES ($1, $2, $3) RETURNING id", [name, email, '1']) do |result|
def create_user(first_name, last_name, email)
@conn.exec("INSERT INTO users (first_name, last_name, email, password_digest) VALUES ($1, $2, $3, $4) RETURNING id", [first_name, last_name, email, '1']) do |result|
return result.getvalue(0, 0)
end
end
@ -51,7 +51,7 @@ describe ConnectionManager do
it "can't create two client_ids of same value" do
client_id = "client_id1"
user_id = create_user("user1", "user1@jamkazam.com")
user_id = create_user("test", "user1", "user1@jamkazam.com")
@conn.transaction do
@connman.create_connection(user_id, client_id, "1.1.1.1")
@ -62,7 +62,7 @@ describe ConnectionManager do
it "create connection then delete it" do
client_id = "client_id2"
user_id = create_user("user2", "user2@jamkazam.com")
user_id = create_user("test", "user2", "user2@jamkazam.com")
@conn.transaction do
@connman.create_connection(user_id, client_id, "1.1.1.1")
end
@ -85,7 +85,7 @@ describe ConnectionManager do
client_id = "client_id3"
client_id2 = "client_id3_1"
user_id = create_user("user3", "user3@jamkazam.com")
user_id = create_user("test", "user3", "user3@jamkazam.com")
# we should get a message saying that this user is online
friend_update = @message_factory.friend_update(user_id, true)
@ -110,7 +110,7 @@ describe ConnectionManager do
client_id = "client_id4"
client_id2 = "client_id4_1"
user_id = create_user("user4", "user4@jamkazam.com")
user_id = create_user("test", "user4", "user4@jamkazam.com")
# we should get a message saying that this user is online
@ -152,9 +152,9 @@ describe ConnectionManager do
client_id = "client_id5"
user_id1 = create_user("user5", "user5@jamkazam.com")
user_id2 = create_user("user6", "user6@jamkazam.com")
user_id3 = create_user("user7", "user7@jamkazam.com")
user_id1 = create_user("test", "user5", "user5@jamkazam.com")
user_id2 = create_user("test", "user6", "user6@jamkazam.com")
user_id3 = create_user("test", "user7", "user7@jamkazam.com")
@connman.gather_friends(@conn, user_id1).should == []
@connman.gather_friends(@conn, user_id2).should == []
@ -193,7 +193,7 @@ describe ConnectionManager do
client_id = "client_id8"
user_id = create_user("user8", "user8@jamkazam.com")
user_id = create_user("test", "user8", "user8@jamkazam.com")
@conn.transaction do
@connman.create_connection(user_id, client_id, "1.1.1.1")
@ -218,7 +218,7 @@ describe ConnectionManager do
it "connections with music_sessions associated" do
client_id = "client_id9"
user_id = create_user("user9", "user9@jamkazam.com")
user_id = create_user("test", "user9", "user9@jamkazam.com")
music_session_id = create_music_session(user_id)
@conn.transaction do
@ -243,7 +243,7 @@ describe ConnectionManager do
it "join_music_session fails if no connection" do
client_id = "client_id10"
user_id = create_user("user10", "user10@jamkazam.com")
user_id = create_user("test", "user10", "user10@jamkazam.com")
music_session_id = create_music_session(user_id)
@conn.transaction do
@ -255,8 +255,8 @@ describe ConnectionManager do
it "join_music_session fails if incorrect user_id specified" do
client_id = "client_id20"
user_id = create_user("user20", "user20@jamkazam.com")
user_id2 = create_user("user21", "user21@jamkazam.com")
user_id = create_user("test", "user20", "user20@jamkazam.com")
user_id2 = create_user("test", "user21", "user21@jamkazam.com")
music_session_id = create_music_session(user_id)
@conn.transaction do
@ -269,7 +269,7 @@ describe ConnectionManager do
it "join_music_session fails if no music_session" do
client_id = "client_id11"
user_id = create_user("user11", "user11@jamkazam.com")
user_id = create_user("test", "user11", "user11@jamkazam.com")
@conn.transaction do
@connman.create_connection(user_id, client_id, "1.1.1.1")
@ -284,7 +284,7 @@ describe ConnectionManager do
it "leave_music_session fails if no music_session" do
client_id = "client_id12"
user_id = create_user("user12", "user12@jamkazam.com")
user_id = create_user("test", "user12", "user12@jamkazam.com")
@conn.transaction do
@connman.create_connection(user_id, client_id, "1.1.1.1")
@ -298,7 +298,7 @@ describe ConnectionManager do
it "leave_music_session fails if in different music_session" do
client_id = "client_id13"
user_id = create_user("user13", "user13@jamkazam.com")
user_id = create_user("test", "user13", "user13@jamkazam.com")
music_session_id = create_music_session(user_id)
@conn.transaction do
@ -317,7 +317,7 @@ describe ConnectionManager do
it "leave_music_session works" do
client_id = "client_id14"
user_id = create_user("user14", "user14@jamkazam.com")
user_id = create_user("test", "user14", "user14@jamkazam.com")
music_session_id = create_music_session(user_id)

View File

@ -11,8 +11,8 @@ describe Search do
def create_peachy_data
@user = FactoryGirl.create(:user, first_name: "Peach", last_name: "Pit", name: "peachy", email: "user@example.com", musician: true)
@fan = FactoryGirl.create(:user, first_name: "Peach Peach", last_name: "Pit", name: "peachy2", email: "fan@example.com", musician: false)
@user = FactoryGirl.create(:user, first_name: "Peach", last_name: "Pit", email: "user@example.com", musician: true)
@fan = FactoryGirl.create(:user, first_name: "Peach Peach", last_name: "Pit", email: "fan@example.com", musician: false)
@band = FactoryGirl.create(:band, name: "Peach pit", website: "www.bands.com", biography: "zomg we rock")
end

View File

@ -20,7 +20,7 @@ describe "tire search" do
end
it "full search for single user" do
@user = FactoryGirl.create(:user, first_name: "User", last_name: "One", name: "test", email: "user@example.com", musician: true)
@user = FactoryGirl.create(:user, first_name: "User", last_name: "One", email: "user@example.com", musician: true)
User.search_index.refresh
s = Tire.search ['test-jamruby-users', 'test-jamruby-bands'], :load => true do
@ -48,7 +48,7 @@ describe "tire search" do
end
it "full search for a band & user" do
@user = FactoryGirl.create(:user, first_name: "Peach", last_name: "Foo", name: "test", email: "user@example.com", musician: true)
@user = FactoryGirl.create(:user, first_name: "Peach", last_name: "Foo", email: "user@example.com", musician: true)
@band = FactoryGirl.create(:band, name: "Peach pit", website: "www.bands.com", biography: "zomg we rock")
User.search_index.refresh
@ -70,7 +70,7 @@ describe "tire search" do
it "pagination" do
@user = FactoryGirl.create(:user, first_name: "Peach", last_name: "foo", name: "test", email: "user@example.com", musician: true)
@user = FactoryGirl.create(:user, first_name: "Peach", last_name: "foo", email: "user@example.com", musician: true)
@band = FactoryGirl.create(:band, name: "Peach pit", website: "www.bands.com", biography: "zomg we rock")
User.search_index.refresh
@ -111,7 +111,7 @@ describe "tire search" do
s.results.total.should == 0
@user = FactoryGirl.create(:user, first_name: "Peach", last_name: "Pit", name: "peachy", email: "user@example.com", musician: true)
@user = FactoryGirl.create(:user, first_name: "Peach", last_name: "Pit", email: "user@example.com", musician: true)
User.search_index.refresh
sleep 1 # https://jamkazam.atlassian.net/browse/VRFS-69

View File

@ -6,7 +6,7 @@ describe User do
User.delete_search_index
User.create_search_index
@user = FactoryGirl.create(:user, first_name: "Example", last_name: "User", name: "peachy", email: "user@example.com",
@user = FactoryGirl.create(:user, first_name: "Example", last_name: "User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar", musician: true, email_confirmed: true)
# you have to poke elasticsearch because it will batch requests internally for a second
User.search_index.refresh
@ -60,7 +60,7 @@ describe User do
end
it "should tokenize correctly" do
@user2 = FactoryGirl.create(:user, first_name: "peaches", last_name: "test", name: "peachy2", email: "peach@example.com",
@user2 = FactoryGirl.create(:user, first_name: "peaches", last_name: "test", email: "peach@example.com",
password: "foobar", password_confirmation: "foobar", musician: true, email_confirmed: true)
User.search_index.refresh
ws = User.search("pea")
@ -71,7 +71,7 @@ describe User do
it "users who have signed up, but not confirmed should not show up in search index" do
@user3 = FactoryGirl.create(:user, first_name: "unconfirmed", last_name: "unconfirmed", name: "unconfirmed", email: "unconfirmed@example.com",
@user3 = FactoryGirl.create(:user, first_name: "unconfirmed", last_name: "unconfirmed", email: "unconfirmed@example.com",
password: "foobar", password_confirmation: "foobar", musician: true, email_confirmed: false)
User.search_index.refresh
ws = User.search("unconfirmed")

View File

@ -3,7 +3,7 @@ require 'spec_helper'
describe User do
before do
@user = User.new(first_name: "Example", last_name: "User", name: "test", email: "user@example.com",
@user = User.new(first_name: "Example", last_name: "User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar")
end