Commit 0fa9222d

mo <mo.khan@gmail.com>
2017-09-08 02:38:05
validate email address.
1 parent 9146472
Changed files (3)
app
assets
javascripts
spec
javascripts
app/assets/javascripts/models/session.js.coffee
@@ -1,4 +1,5 @@
 class CakeSide.Models.Session extends Backbone.Model
+  EMAIL_REGEX=/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/
   modelKey: 'session'
   defaults:
     username: null
@@ -9,6 +10,9 @@ class CakeSide.Models.Session extends Backbone.Model
   validate: (attributes, options) ->
     errors = {}
 
+    if !EMAIL_REGEX.test(attributes.username)
+      errors['username'] = @errorFor('username', 'invalid')
+
     _.each @requiredFields, (field) =>
       if _.isEmpty(attributes[field])
         errors[field] = @errorFor(field, 'blank')
app/assets/javascripts/views/sessions/login_form.js.coffee
@@ -8,6 +8,7 @@ class CakeSide.Views.LoginForm extends CakeSide.AutoView
     'keyup #session_password': 'onKeyUp'
     'submit form': 'onSubmit'
 
+
   initialize: () ->
     @model = new CakeSide.Models.Session()
 
spec/javascripts/models/session_spec.js.coffee
@@ -10,6 +10,13 @@ describe "CakeSide.Models.Session", ->
     expect(subject.isValid()).toEqual(false)
     expect(subject.validationError['username']).toEqual(expectedError)
 
+  it "is invalid, when the email is not a valid email addrees", ->
+    subject.set('username', 'blah')
+    expectedError = "Email is invalid"
+
+    expect(subject.isValid()).toEqual(false)
+    expect(subject.validationError['username']).toEqual(expectedError)
+
   it "is invalid, when the password is missing", ->
     expectedError = "Password can't be blank"
 
@@ -17,7 +24,7 @@ describe "CakeSide.Models.Session", ->
     expect(subject.validationError['password']).toEqual(expectedError)
 
   it "is valid", ->
-    subject.set('username', 'x@example.com')
+    subject.set('username', 'test@example.com')
     subject.set('password', 'password')
     expect(subject.isValid()).toEqual(true)
     expect(subject.validationError).toEqual(null)