This repository was archived by the owner on Jan 23, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 89
/
Copy pathtest.emailValidation.js
157 lines (138 loc) · 4.46 KB
/
test.emailValidation.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*
* Copyright (C) 2014 TopCoder Inc., All Rights Reserved.
*
* @version 1.0
* @author muzehyun
*/
'use strict';
/*global describe, it, before, beforeEach, after, afterEach, __dirname */
/*jslint node: true, stupid: true, unparam: true */
/**
* Module dependencies.
*/
var request = require('supertest');
var assert = require('chai').assert;
var expect = require('chai').expect;
var async = require('async');
var _ = require('underscore');
var testHelper = require('./helpers/testHelper');
var API_ENDPOINT = process.env.API_ENDPOINT || 'http://localhost:8080';
describe('Test Email Validation API', function () {
this.timeout(60000); // The api with testing remote db could be quit slow
/**
* Create request and return it
* @param {String} email the email address for request parameter
* @param {Number} statusCode the expected status code
* @param {String} authHeader the Authorization header. Optional
* @return {Object} request
*/
function createRequest(email, statusCode) {
var req = request(API_ENDPOINT)
.get('/v2/users/validateEmail?email=' + encodeURIComponent(email))
.set('Accept', 'application/json');
return req.expect(statusCode);
}
/**
* Make request to create customer API
* @param {String} email the email address for request parameter
* @param {String} authHeader the Authorization header. Optional
* @param {Function<err>} done - the callback
*/
function assertResponse(email, expected, done) {
createRequest(email, 200)
.end(function (err, result) {
if (err) {
done(err);
return;
}
assert.ok(result.body);
assert.isDefined(result.body.available);
assert.equal(result.body.available, expected);
done();
});
}
/**
* It
*/
it('should return true for valid email', function (done) {
assertResponse('[email protected]', true, done);
});
/**
* It should return true for valid email
*/
it('should return true for valid email', function (done) {
assertResponse('[email protected]', true, done);
});
/**
* It should return true for two dots in domain
*/
it('should return true for two dots in domain', function (done) {
assertResponse('[email protected]', true, done);
});
/**
* It should return true for plus sign
*/
it('should return true for plus sign', function (done) {
assertResponse('[email protected]', true, done);
});
/**
* It should return true for ü in local part
*/
it('should return true for ü in local part', function (done) {
assertResponse('hans.mü[email protected]', true, done);
});
/**
* It should return true for ü in domain part
*/
it('should return true for ü in domain part', function (done) {
assertResponse('hans@müller.com', true, done);
});
/**
* It should return true for |
*/
it('should return true for |', function (done) {
assertResponse('test|123@müller.com', true, done);
});
/**
* It should return false for no domain part
*/
it('should return false for no domain part', function (done) {
assertResponse('invalidemail@', false, done);
});
/**
* It should return false for no @
*/
it('should return false for no @', function (done) {
assertResponse('invalid.com', false, done);
});
/**
* It should return false for no local part
*/
it('should return false for no local part', function (done) {
assertResponse('@invalid.com', false, done);
});
/**
* It should return false for too may @
*/
it('should return false for too may @', function (done) {
assertResponse('aaa@[email protected]', false, done);
});
/**
* It should return false for dot in first
*/
it('should return false for dot in first', function (done) {
assertResponse('[email protected]', false, done);
});
/**
* It should return false for two consecutive dots
*/
it('should return false for two consecutive dots', function (done) {
assertResponse('[email protected]', false, done);
});
/**
* It should return false for existing email
*/
it('should return false for existing email', function (done) {
assertResponse('[email protected]', false, done);
});
});