Advertisement
Guest User

Untitled

a guest
Jul 30th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. ## user.rb
  2.  
  3. require 'digest/sha1'
  4.  
  5. class User < ActiveRecord::Base
  6.  
  7. attr_accessor :password
  8. attr_accessor :password_confirmation
  9. message_order = "new DESC, created_on ASC"
  10. has_many :messages, :order => message_order
  11.  
  12. validates_presence_of :email_address, :screen_name, :real_name
  13. validates_uniqueness_of :email_address
  14. validates_length_of :screen_name, :maximum => 20
  15. validates_length_of :real_name, :maximum => 50
  16. validates_length_of :password, :within => 5..25
  17. validates_confirmation_of :password, :message => "did not match the confirmation"
  18. validates_format_of :email_address, :with => /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/
  19.  
  20.  
  21. def after_validation_on_create
  22. return false unless self.password
  23. create_salt
  24. self.hashed_password = User.encrypt_password(self.password, self.salt)
  25. #self.password, self.password_confirmation = nil
  26. end
  27.  
  28. def self.login(email_address, password)
  29. user = self.find_by_email_address(email_address)
  30. unless user && (User.encrypt_password(password, user.salt) == user.hashed_password)
  31. user = nil
  32. end
  33. user
  34. end
  35.  
  36. def mailbox
  37. Mailbox.new(self)
  38. end
  39.  
  40. private
  41. def create_salt
  42. self.salt = self.object_id.to_s rand.to_s
  43. end
  44.  
  45. def self.encrypt_password(password, salt)
  46. string_to_hash = password "blync" salt
  47. Digest::SHA1.hexdigest(string_to_hash)
  48. end
  49.  
  50. end
  51.  
  52. ## user_test.rb
  53.  
  54. require File.dirname(__FILE__) '/../test_helper'
  55.  
  56. class UserTest < Test::Unit::TestCase
  57. fixtures :users
  58.  
  59. def setup
  60. @blank_user = User.new
  61. end
  62.  
  63. def test_blank_user
  64. user = @blank_user
  65. assert !user.valid?
  66. assert user.errors.invalid?(:email_address)
  67. assert user.errors.invalid?(:real_name)
  68. assert user.errors.invalid?(:password)
  69. end
  70.  
  71. def test_good_user
  72. user = create_user
  73. assert user.valid?
  74. end
  75.  
  76. def test_password_confirmation
  77. user = create_user(:password_confirmation => "")
  78. assert !user.valid?
  79. assert user.errors.on(:password)
  80. end
  81.  
  82. def test_password_length
  83. user = create_user
  84. user.password = "hi"
  85. assert !user.valid?
  86. assert user.errors.on(:password)
  87. user.password = "abababababababababababababababababababab"
  88. assert !user.valid?
  89. assert user.errors.on(:password)
  90. end
  91.  
  92. def test_email_uniqueness
  93. #A user with email address: 'joe@me.com' is already in a fixture
  94. user = create_user(:email_address => 'joe@me.com')
  95. assert !user.save
  96. assert user.errors.on(:email_address)
  97. end
  98.  
  99. def test_field_lengths
  100. user = create_user(:screen_name => 'asdfjkllmnsdfgfgsdfdgsdgs')
  101. assert !user.valid?
  102. assert user.errors.on(:screen_name)
  103. user = create_user(:real_name => 'asldfjklasjdfklajsdklfjasklasldfjklasjdfklajsdklfjasklasldfjklasjdfklajsdklfjaskl')
  104. assert !user.valid?
  105. assert user.errors.on(:real_name)
  106. end
  107.  
  108. def test_email_address_format
  109. bad = ['joe@', '@', 'poopy', 'test@joe', '@joe.com' ]
  110. good = [ 'kimberly@aol.com', 'joe@black.net', 'jason@testing.org', 'test@suck.us' ]
  111.  
  112. assert_user_array(bad, :field => 'email_address', :assertion => 'reverse')
  113. assert_user_array(good, :field => 'email_address')
  114. end
  115.  
  116. def assert_hashing
  117. user = create_user
  118. user.save!
  119. assert_equal User.encrypt_password("password", user.salt), user.hashed_password
  120. end
  121.  
  122. protected
  123.  
  124. def assert_user_array(array, options = {})
  125. field = options[:field] if options[:field]
  126. assertion = options[:assertion] if options[:assertion]
  127.  
  128. array.each do |item|
  129. user = create_user(field.to_sym => item)
  130. case assertion
  131. when 'reverse'
  132. assert !user.valid?
  133. assert user.errors.on(field.to_sym)
  134. else
  135. assert user.valid?
  136. end
  137. end
  138. end
  139.  
  140. def create_user(options = {})
  141. User.new({ :email_address => 'joe@joe.com',
  142. :screen_name => "joeizzle",
  143. :real_name => "Joe Black",
  144. :password => "password",
  145. :password_confirmation => "password" }.merge(options))
  146. end
  147. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement