Adds ability to login with email when specifying it (#4276)
* Adds ability to login with email when specifying it * Adds tests for corner cases * nits
This commit is contained in:
@@ -3224,4 +3224,166 @@ describe('Parse.User testing', () => {
|
||||
.then(done)
|
||||
.catch(done.fail);
|
||||
});
|
||||
|
||||
it('can login with email', (done) => {
|
||||
const user = new Parse.User();
|
||||
user.save({
|
||||
username: 'yolo',
|
||||
password: 'yolopass',
|
||||
email: 'yo@lo.com'
|
||||
}).then(() => {
|
||||
const options = {
|
||||
url: `http://localhost:8378/1/login`,
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-REST-API-Key': 'rest',
|
||||
},
|
||||
json: { email: "yo@lo.com", password: 'yolopass'}
|
||||
}
|
||||
return rp.get(options);
|
||||
}).then(done).catch(done.fail);
|
||||
});
|
||||
|
||||
it('cannot login with email and invalid password', (done) => {
|
||||
const user = new Parse.User();
|
||||
user.save({
|
||||
username: 'yolo',
|
||||
password: 'yolopass',
|
||||
email: 'yo@lo.com'
|
||||
}).then(() => {
|
||||
const options = {
|
||||
url: `http://localhost:8378/1/login`,
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-REST-API-Key': 'rest',
|
||||
},
|
||||
json: { email: "yo@lo.com", password: 'yolopass2'}
|
||||
}
|
||||
return rp.get(options);
|
||||
}).then(done.fail).catch(done);
|
||||
});
|
||||
|
||||
it('can login with email through query string', (done) => {
|
||||
const user = new Parse.User();
|
||||
user.save({
|
||||
username: 'yolo',
|
||||
password: 'yolopass',
|
||||
email: 'yo@lo.com'
|
||||
}).then(() => {
|
||||
const options = {
|
||||
url: `http://localhost:8378/1/login?email=yo@lo.com&password=yolopass`,
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-REST-API-Key': 'rest',
|
||||
},
|
||||
}
|
||||
return rp.get(options);
|
||||
}).then(done).catch(done.fail);
|
||||
});
|
||||
|
||||
it('can login when both email and username are passed', (done) => {
|
||||
const user = new Parse.User();
|
||||
user.save({
|
||||
username: 'yolo',
|
||||
password: 'yolopass',
|
||||
email: 'yo@lo.com'
|
||||
}).then(() => {
|
||||
const options = {
|
||||
url: `http://localhost:8378/1/login?email=yo@lo.com&username=yolo&password=yolopass`,
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-REST-API-Key': 'rest',
|
||||
},
|
||||
}
|
||||
return rp.get(options);
|
||||
}).then(done).catch(done.fail);
|
||||
});
|
||||
|
||||
it("fails to login when username doesn't match email", (done) => {
|
||||
const user = new Parse.User();
|
||||
user.save({
|
||||
username: 'yolo',
|
||||
password: 'yolopass',
|
||||
email: 'yo@lo.com'
|
||||
}).then(() => {
|
||||
const options = {
|
||||
url: `http://localhost:8378/1/login?email=yo@lo.com&username=yolo2&password=yolopass`,
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-REST-API-Key': 'rest',
|
||||
},
|
||||
json: true,
|
||||
}
|
||||
return rp.get(options);
|
||||
}).then(done.fail).catch((err) => {
|
||||
expect(err.response.body.error).toEqual('Invalid username/password.');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("fails to login when email doesn't match username", (done) => {
|
||||
const user = new Parse.User();
|
||||
user.save({
|
||||
username: 'yolo',
|
||||
password: 'yolopass',
|
||||
email: 'yo@lo.com'
|
||||
}).then(() => {
|
||||
const options = {
|
||||
url: `http://localhost:8378/1/login?email=yo@lo2.com&username=yolo&password=yolopass`,
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-REST-API-Key': 'rest',
|
||||
},
|
||||
json: true,
|
||||
}
|
||||
return rp.get(options);
|
||||
}).then(done.fail).catch((err) => {
|
||||
expect(err.response.body.error).toEqual('Invalid username/password.');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('fails to login when email and username are not provided', (done) => {
|
||||
const user = new Parse.User();
|
||||
user.save({
|
||||
username: 'yolo',
|
||||
password: 'yolopass',
|
||||
email: 'yo@lo.com'
|
||||
}).then(() => {
|
||||
const options = {
|
||||
url: `http://localhost:8378/1/login?password=yolopass`,
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-REST-API-Key': 'rest',
|
||||
},
|
||||
json: true,
|
||||
}
|
||||
return rp.get(options);
|
||||
}).then(done.fail).catch((err) => {
|
||||
expect(err.response.body.error).toEqual('username/email is required.');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('fails to login when password is not provided', (done) => {
|
||||
const user = new Parse.User();
|
||||
user.save({
|
||||
username: 'yolo',
|
||||
password: 'yolopass',
|
||||
email: 'yo@lo.com'
|
||||
}).then(() => {
|
||||
const options = {
|
||||
url: `http://localhost:8378/1/login?username=yolo`,
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-REST-API-Key': 'rest',
|
||||
},
|
||||
json: true,
|
||||
}
|
||||
return rp.get(options);
|
||||
}).then(done.fail).catch((err) => {
|
||||
expect(err.response.body.error).toEqual('password is required.');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user