internetee-registry/test/models/admin_user_test.rb
2021-02-18 13:46:01 +02:00

151 lines
3.4 KiB
Ruby

require 'test_helper'
class AdminUserTest < ActiveSupport::TestCase
def test_valid_user_fixture_is_valid
assert valid_user.valid?, proc { valid_user.errors.full_messages }
end
def test_invalid_without_username
user = valid_user
user.username = ''
assert user.invalid?
end
def test_invalid_without_password_and_password_confirmation_when_creating
user = valid_non_persisted_user
user.password = ''
user.password_confirmation = ''
assert user.invalid?
user.password = valid_password
user.password_confirmation = user.password
assert user.valid?
end
def test_validates_password_format
user = valid_non_persisted_user
user.password = 'a' * (Devise.password_length.min.pred)
user.password_confirmation = user.password
assert user.invalid?
user.password = 'a' * (Devise.password_length.max.next)
user.password_confirmation = user.password
assert user.invalid?
user.password = 'a' * Devise.password_length.min
user.password_confirmation = user.password
assert user.valid?
user.password = 'a' * Devise.password_length.max
user.password_confirmation = user.password
assert user.valid?
end
def test_requires_password_confirmation
user = valid_non_persisted_user
user.password = valid_password
user.password_confirmation = ''
assert user.invalid?
user.password_confirmation = 'another'
assert user.invalid?
user.password_confirmation = user.password
assert user.valid?, proc { user.errors.full_messages }
end
def test_invalid_without_email
user = valid_user
user.email = ''
assert user.invalid?
end
def test_validates_email_format
user = valid_user
user.email = 'invalid'
assert user.invalid?
user.email = 'valid@registry.test'
assert user.valid?
end
def test_invalid_when_email_is_already_taken
another_user = valid_user
user = valid_non_persisted_user
user.email = another_user.email
assert user.invalid?
user.email = 'new-user@registry.test'
assert user.valid?, proc { user.errors.full_messages }
end
def test_invalid_without_country_code
user = valid_user
user.country_code = ''
assert user.invalid?
end
def test_invalid_without_roles
user = valid_user
user.roles = []
assert user.invalid?
end
def test_valid_without_identity_code
user = valid_user
user.identity_code = ''
assert user.valid?
end
def test_invalid_without_identity_code_when_country_code_is_estonia
user = valid_user
user.country_code = 'EE'
user.identity_code = ''
assert user.invalid?
end
# https://en.wikipedia.org/wiki/National_identification_number#Estonia
def test_validates_identity_code_format_when_country_code_is_estonia
user = valid_user
user.country_code = 'EE'
user.identity_code = '47101010030'
assert user.invalid?
user.identity_code = '47101010033'
assert user.valid?
end
def test_min_password_length
assert_equal AdminUser.min_password_length, 8
end
def test_country_instance
user = valid_user
assert user.country.present?
end
private
def valid_user
users(:admin)
end
def valid_non_persisted_user
user = valid_user.dup
user.password = user.password_confirmation = valid_password
user.email = 'another@registry.test'
user
end
def valid_password
'a' * Devise.password_length.min
end
end