summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@leap.se>2013-07-18 12:52:02 +0200
committerAzul <azul@leap.se>2013-07-24 10:55:50 +0200
commitd96fac2de074bbe3a44d888af5ceaff45b1b9b27 (patch)
treefbebc684c2227c1eceb9bb67c7ecdadb667aefc5
parenta2e49d1b946fa34dd41ce1f07920515df13e09db (diff)
validations of email format and local domain moved over
-rw-r--r--test/unit/email_test.rb18
-rw-r--r--users/app/models/email.rb20
-rw-r--r--users/app/models/local_email.rb20
-rw-r--r--users/test/unit/email_test.rb19
-rw-r--r--users/test/unit/local_email_test.rb11
5 files changed, 75 insertions, 13 deletions
diff --git a/test/unit/email_test.rb b/test/unit/email_test.rb
new file mode 100644
index 0000000..e858bd5
--- /dev/null
+++ b/test/unit/email_test.rb
@@ -0,0 +1,18 @@
+require 'test_helper'
+
+class EmailTest < ActiveSupport::TestCase
+
+ test "valid format" do
+ email = Email.new(email_string)
+ assert email.valid?
+ end
+
+ test "validates format" do
+ email = Email.new("email")
+ assert !email.valid?
+ end
+
+ def email_string
+ @email_string ||= Faker::Internet.email
+ end
+end
diff --git a/users/app/models/email.rb b/users/app/models/email.rb
index 90fc645..1bcff1c 100644
--- a/users/app/models/email.rb
+++ b/users/app/models/email.rb
@@ -1,13 +1,11 @@
class Email < String
-=begin
- included do
- validates :email,
- :format => {
- :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/,
- :message => "needs to be a valid email address"
- }
- end
-=end
+ include ActiveModel::Validations
+
+ validates :email,
+ :format => {
+ :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/,
+ :message => "needs to be a valid email address"
+ }
def to_partial_path
"emails/email"
@@ -17,4 +15,8 @@ class Email < String
to_s
end
+ def email
+ self
+ end
+
end
diff --git a/users/app/models/local_email.rb b/users/app/models/local_email.rb
index d919102..e71d494 100644
--- a/users/app/models/local_email.rb
+++ b/users/app/models/local_email.rb
@@ -6,6 +6,18 @@ class LocalEmail < Email
validate :differs_from_login
=end
+ def self.domain
+ APP_CONFIG[:domain]
+ end
+
+ validates :email,
+ :format => {
+ :with => /@#{domain}\Z/i,
+ :message => "needs to end in @#{domain}"
+ }
+
+
+
def initialize(s)
super
append_domain_if_needed
@@ -16,7 +28,11 @@ class LocalEmail < Email
end
def handle
- gsub(/@#{APP_CONFIG[:domain]}/i, '')
+ gsub(/@#{domain}/i, '')
+ end
+
+ def domain
+ LocalEmail.domain
end
protected
@@ -46,7 +62,7 @@ class LocalEmail < Email
def append_domain_if_needed
unless self.index('@')
- self << "@#{APP_CONFIG[:domain]}"
+ self << '@' + domain
end
end
diff --git a/users/test/unit/email_test.rb b/users/test/unit/email_test.rb
new file mode 100644
index 0000000..7cfbc84
--- /dev/null
+++ b/users/test/unit/email_test.rb
@@ -0,0 +1,19 @@
+require 'test_helper'
+
+class EmailTest < ActiveSupport::TestCase
+
+ test "valid format" do
+ email = Email.new(email_string)
+ assert email.valid?
+ end
+
+ test "validates format" do
+ email = Email.new("email")
+ assert !email.valid?
+ assert_equal ["needs to be a valid email address"], email.errors[:email]
+ end
+
+ def email_string
+ @email_string ||= Faker::Internet.email
+ end
+end
diff --git a/users/test/unit/local_email_test.rb b/users/test/unit/local_email_test.rb
index 9031a98..b25f46f 100644
--- a/users/test/unit/local_email_test.rb
+++ b/users/test/unit/local_email_test.rb
@@ -5,6 +5,7 @@ class LocalEmailTest < ActiveSupport::TestCase
test "appends domain" do
local = LocalEmail.new(handle)
assert_equal LocalEmail.new(email), local
+ assert local.valid?
end
test "returns handle" do
@@ -17,11 +18,17 @@ class LocalEmailTest < ActiveSupport::TestCase
assert_equal email, "#{local}"
end
+ test "validates domain" do
+ local = LocalEmail.new(Faker::Internet.email)
+ assert !local.valid?
+ assert_equal ["needs to end in @#{LocalEmail.domain}"], local.errors[:email]
+ end
+
def handle
- "asdf"
+ @handle ||= Faker::Internet.user_name
end
def email
- "asdf@" + APP_CONFIG[:domain]
+ handle + "@" + APP_CONFIG[:domain]
end
end