PageRenderTime 48ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/test/unit/user_details_test.rb

https://github.com/465858/Proman2
Ruby | 205 lines | 144 code | 25 blank | 36 comment | 1 complexity | f941d1a8c82a7b34dd3d46c39e6eff4d MD5 | raw file
  1. # Copyright 2009 Swansea University
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. require File.dirname(__FILE__) + '/../test_helper'
  15. class UserDetailsTest < ActiveSupport::TestCase
  16. # Tests the basic function of the user classes ...
  17. # see user_test.rb for tests of restful authentication functionality
  18. fixtures :users, :roles
  19. def setup()
  20. @name = Name.new("Jools", "Holland", "Mr", "H.", "Jack")
  21. end
  22. # Replace this with your real tests.
  23. def test_truth
  24. assert true
  25. end
  26. def test_invalid_with_empty_atributes
  27. user = User.new
  28. assert !user.valid?
  29. assert user.errors.invalid?(:login)
  30. assert user.errors.invalid?(:email)
  31. end
  32. def test_unique_login
  33. user = User.new(:login => users(:academic).login,
  34. :email => "academic@xyz.com",
  35. :name => @name,
  36. #:staff_or_student_number => "777777",
  37. :password => "test",
  38. :password_confirmation => "test")
  39. assert !user.save
  40. end
  41. test "test invalid password has less than 6 characters" do
  42. ["a", "ab", "abc", "abcd", "abcde", "abcdef"].each do |password|
  43. user = User.new(:login => "newuser" + password,
  44. :email => "academic#{password}@xyz.com",
  45. :name => @name,
  46. #:staff_or_student_number => "777777",
  47. :password => "test",
  48. :password_confirmation => "test")
  49. assert !user.save
  50. end
  51. end
  52. test "test valid password must be longer than 6 characters" do
  53. user = User.new(:login => "newuser",
  54. :email => "academic@xyz.com",
  55. :name => @name,
  56. #:staff_or_student_number => "777777",
  57. :password => "test123",
  58. :password_confirmation => "test123")
  59. assert user.save
  60. end
  61. test "test password must be no longer than 40 characters" do
  62. user = User.new(:login => "newuser1",
  63. :email => "academic1@xyz.com",
  64. :name => @name,
  65. #:staff_or_student_number => "777777",
  66. :password => "0123456789112345678921234567893123456789",
  67. :password_confirmation => "0123456789112345678921234567893123456789")
  68. assert user.save, "Password has 40 characters"
  69. user = User.new(:login => "newuser2",
  70. :email => "academic2@xyz.com",
  71. #:staff_or_student_number => "777777",
  72. :password => "01234567891123456789212345678931234567894",
  73. :password_confirmation => "01234567891123456789212345678931234567894")
  74. assert !user.save, "Password has more than 40 characters"
  75. end
  76. def test_unique_email
  77. user = User.new(:login => "newuser",
  78. :email => users(:student1).email,
  79. :name => @name,
  80. :staff_or_student_number => "777777",
  81. :password => "testing123",
  82. :password_confirmation => "testing123")
  83. assert !user.save, "should not validate"
  84. end
  85. # def test_unique_staff_or_student_number
  86. # user = User.new(:login => "newuser",
  87. # :email => users(:student).email,
  88. # :first_name => "Lillian",
  89. # :last_name => "Gish",
  90. # :staff_or_student_number =>
  91. # users(:coordinator).staff_or_student_number,
  92. # :password => "test",
  93. # :password_confirmation => "test")
  94. #
  95. # assert !user.save
  96. # assert_equal "has already been taken",
  97. # user.errors.on(:staff_or_student_number)
  98. # end
  99. def test_new_user_has_no_role_assigned
  100. guest = users(:no_role_user)
  101. roles = Role.find(:all)
  102. roles.each do |role|
  103. assert !guest.has_role?(role), "Should not have role #{role.to_s}"
  104. end
  105. end
  106. def test_new_user_is_not_admin
  107. guest = users(:academic)
  108. assert !guest.has_role?('admin'), "Guest user shouldn't have admin role"
  109. end
  110. def test_admin_user_has_admin_role
  111. admin = users(:admin)
  112. assert admin.has_role?('admin'), "admin user should have the 'admin' role"
  113. end
  114. def test_student_user_should_have_student_role
  115. user = users(:student1)
  116. assert user.has_role?('student'), "user should have student role"
  117. end
  118. def test_academic_user_should_have_staff_role
  119. user = users(:academic)
  120. assert user.has_role?('staff'), "user should have staff role"
  121. end
  122. def test_coordinator_user_should_have_staff_and_coordinator_roles
  123. user = users(:coordinator)
  124. assert user.has_role?('coordinator'),
  125. "user should have coordinator role"
  126. assert user.has_role?('staff'), "user should have staff role"
  127. end
  128. def test_add_role
  129. user = User.create(:login => "newuser",
  130. :email => "newuser@xyz.com",
  131. :name => @name,
  132. #:staff_or_student_number => "777777",
  133. :password => "testing123",
  134. :password_confirmation => "testing123")
  135. roles = Role.find(:all)
  136. roles.each do |role|
  137. unless role.name == "admin" # admin user has all roles
  138. assert !user.has_role?(role.name),
  139. "Shouldn't yet have role #{role.name}"
  140. user.add_role(role)
  141. assert user.has_role?(role.name),
  142. "Should now have role #{role.name}"
  143. end
  144. end
  145. end
  146. def test_delete_role
  147. user = User.create(:login => "newuser2",
  148. :email => "newuser2@xyz.com",
  149. :name => @name,
  150. #:staff_or_student_number => "999999",
  151. :password => "testing123",
  152. :password_confirmation => "testing123")
  153. roles = Role.find(:all)
  154. roles.each do |role|
  155. unless role.name == "admin" # admin user has all roles
  156. user.add_role(role)
  157. assert user.has_role?(role.name),
  158. "Has been given role #{role.name}"
  159. user.delete_role(role)
  160. assert ! user.has_role?(role.name),
  161. "Should now have lost role #{role.name}"
  162. end
  163. end
  164. end
  165. test "Admin user has all roles" do
  166. user = users(:admin)
  167. roles = Role.find(:all)
  168. roles.each do |role|
  169. assert user.has_role?(role), "admin user should have role #{role.name}"
  170. end
  171. end
  172. end