cloudboost-tv
Version:
Database Service that does Storage, Search, Real-time and a whole lot more.
942 lines (796 loc) • 29.2 kB
JavaScript
describe("CloudUser", function () {
var username = util.makeString();
var passwd = "abcd";
it("Should create new user", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(300000);
var obj = new CB.CloudUser();
obj.set('username', username);
obj.set('password',passwd);
obj.set('email',util.makeEmail());
obj.signUp().then(function(list) {
if(list.get('username') === username){
done();
}
else{
throw "create user error"
}
}, function (error) {
throw error;
});
});
it("Should create new user and change the password.", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(300000);
var oldPassword = passwd;
var obj = new CB.CloudUser();
obj.set('username', username+"1");
obj.set('password',oldPassword);
obj.set('email',util.makeEmail());
obj.signUp().then(function(list) {
if(list.get('username'))
CB.CloudUser.current.changePassword(oldPassword, 'newPassword', {
success : function(user){
done();
}, error : function(error){
done(error);
}
});
else
done("create user error");
}, function (error) {
throw error;
});
});
it("Should not reset the password when old password is wrong.", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(300000);
var oldPassword = passwd;
var obj = new CB.CloudUser();
obj.set('username', username+"2");
obj.set('password',oldPassword);
obj.set('email',util.makeEmail());
obj.signUp().then(function(list) {
if(list.get('username'))
CB.CloudUser.current.changePassword("sample", 'newPassword', {
success : function(user){
done("Password reset with old password is wrong.");
}, error : function(error){
done();
}
});
else
done("create user error");
}, function (error) {
throw error;
});
});
it("Should not reset the password when user is logged in.", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(300000);
CB.CloudUser.current.logOut({
success : function(){
try{
CB.CloudUser.current.changePassword("sample", 'newPassword', {
success : function(user){
done("Password reset when user is not logged in.");
}, error : function(error){
done();
}
});
}catch(e){
done();
}
}, error : function(error){
done("Failed to log out a user. ")
}
});
});
it("Should not reset Password when user is logged in.", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(300000);
var obj = new CB.CloudUser();
obj.set('username', "911@cloudboost.io");
obj.set('password',passwd);
obj.set('email',"911@cloudboost.io");
obj.signUp().then(function(list) {
if(list.get('username') === "911@cloudboost.io")
CB.CloudUser.resetPassword("911@cloudboost.io",{
success : function(){
CB.CloudUser.current.logOut({
success : function(){
done("Reset password called when the user is logged in.");
}, error : function(){
done("Reset password called when the user is logged in.");
}
});
done("Reset password when the user is logged in.");
}, error : function(error){
CB.CloudUser.current.logOut({
success : function(){
done();
}, error : function(){
done("Failed to log out.");
}
});
}
});
else
throw "create user error"
}, function (error) {
throw error;
});
});
it("Should reset Password", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(300000);
CB.CloudUser.resetPassword("911@cloudboost.io",{
success : function(){
done()
}, error : function(error){
done();
}
});
});
it("Should create a user and get version",function(done){
if(CB._isNode){
done();
return;
}
this.timeout(30000);
var user = new CB.CloudUser();
var usrname = util.makeString();
var passwd = "abcd";
user.set('username', usrname);
user.set('password',passwd);
user.set('email',util.makeEmail());
user.signUp().then(function(list) {
if(list.get('username') === usrname && list.get('_version')>=0){
done();
}
else
throw "create user error"
}, function () {
throw "user create error";
});
});
it("should do a query on user",function(done){
if(CB._isNode){
done();
return;
}
this.timeout(30000);
var user = new CB.CloudUser();
var usrname = util.makeString();
var passwd = "abcd";
user.set('username', usrname);
user.set('password',passwd);
user.set('email',util.makeEmail());
user.signUp().then(function(list) {
if(list.get('username') === usrname && list.get('_version')>=0){
var query = new CB.CloudQuery('User');
query.findById(user.get('id')).then(function(obj){
console.log(obj);
done();
},function(err){
console.log(err);
});
}
else
throw "create user error"
}, function () {
throw "user create error";
});
});
it('should logout the user',function (done){
if(CB._isNode){
done();
return;
}
this.timeout(30000);
CB.CloudUser.current.logOut().then(function(){
done();
},function(){
throw "err";
});
});
it("Should login user", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(30000);
var obj = new CB.CloudUser();
obj.set('username', username);
obj.set('password',passwd);
obj.logIn().then(function(list) {
if(list.get("username") === username)
done();
}, function () {
throw "user login error";
});
});
var roleName2 = util.makeString();
var role1 = new CB.CloudRole(roleName2);
role1.set('name',roleName2);
it("Should assign role to user", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(400000);
var obj = new CB.CloudUser();
obj.set('username', username);
obj.set('password',passwd);
obj.logIn().then(function(loggedUser) {
role1.save().then(function(role){
loggedUser.addToRole(role).then(function(savedUser){
var query = new CB.CloudQuery("User");
query.equalTo('username',username);
query.find({
success: function(list) {
list=list[0];
if(list && list.get("roles")){
var rolesList=list.get("roles");
var userRoleIds=[];
for(var i=0;i<rolesList.length;++i){
userRoleIds.push(rolesList[i].document._id);
}
if(userRoleIds.indexOf(role.document._id)>-1){
done();
}else{
done("addToRole failed");
}
}
},
error: function(error) {
done(error);
}
});
},function(error){
throw error;
});
}, function (error) {
throw error;
});
},function(){
throw "role create error";
})
});
it("Should remove role assigned role to user", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(4000000);
var obj = new CB.CloudUser();
var roleName3 = util.makeString();
var role2 = new CB.CloudRole(roleName3);
role2.set('name',roleName3);
obj.set('username', username);
obj.set('password',passwd);
obj.logIn().then(function(loggedUser) {
role2.save().then(function(role2){
loggedUser.addToRole(role2).then(function(list){
CB.CloudUser.current.removeFromRole(role2).then(function(){
var query = new CB.CloudQuery("User");
query.equalTo('username',username);
query.find({
success: function(list) {
list=list[0];
if(list && list.get("roles")){
var rolesList=list.get("roles");
var userRoleIds=[];
for(var i=0;i<rolesList.length;++i){
userRoleIds.push(rolesList[i].document._id);
}
if(userRoleIds.indexOf(role2.document._id)<0){
done();
}else{
done("removeFromRole failed");
}
}
},
error: function(error) {
done(error);
}
});
},function(error){
done(error);
});
},function(error){
done(error);
});
}, function (error) {
done(error);
});
},function(error){
done(error);
});
});
it("Should check isInRole", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(4000000);
var obj = new CB.CloudUser();
var roleName3 = util.makeString();
var role2 = new CB.CloudRole(roleName3);
role2.set('name',roleName3);
obj.set('username', username);
obj.set('password',passwd);
obj.logIn().then(function(loggedUser) {
role2.save().then(function(role2){
loggedUser.addToRole(role2).then(function(list){
var query = new CB.CloudQuery("User");
query.equalTo('username',username);
query.find({
success: function(list) {
list=list[0];
obj.set("roles",list.get("roles"));
if(CB.CloudUser.current.isInRole(role2)) {
done();
} else {
done("isInRole Failed..");
}
},
error: function(error) {
done(error);
}
});
},function(error){
done(error);
});
}, function (error) {
done(error);
});
},function(error){
done(error);
});
});
it('should encrypt user password',function (done){
this.timeout(300000);
var pass = passwd;
var obj = new CB.CloudUser();
obj.set('username', util.makeString());
obj.set('password',pass);
obj.set('email',util.makeEmail());
obj.save().then(function(obj) {
if(obj.get('password') === pass)
throw "Password is not encrypted.";
else
done();
}, function (err) {
throw "user create error";
});
});
it("Should Create a New User",function(done){
this.timeout(30000);
var obj = new CB.CloudUser();
obj.set('username',util.makeString());
obj.set('email',util.makeEmail());
obj.set('password','pass');
obj.save().then(function(res){
var query = new CB.CloudQuery('User');
query.get(res.get('id')).then(function (res1) {
if(res1){
done();
}else{
throw "Unable to retrieve User";
}
}, function () {
throw "Unable to Get User By ID";
})
},function(err){
throw "Unable to Create User";
});
});
it("Should Create a New User",function(done){
this.timeout(30000);
var obj = new CB.CloudUser();
obj.set('username',util.makeString());
obj.set('email',util.makeEmail());
obj.set('password','pass');
obj.save().then(function(res){
var query = new CB.CloudQuery('User');
query.get(res.get('id')).then(function (res1) {
if(res1){
done();
}else{
throw "Unable to retrieve User";
}
}, function () {
throw "Unable to Get User By ID";
})
},function(err){
throw "Unable to Create User";
});
});
it("Should Create a New User",function(done){
this.timeout(30000);
var obj = new CB.CloudUser();
obj.set('username',util.makeString());
obj.set('email',util.makeEmail());
obj.set('password','pass');
obj.save().then(function(res){
var query = new CB.CloudQuery('User');
query.get(res.get('id')).then(function (res1) {
if(res1){
done();
}else{
throw "Unable to retrieve User";
}
}, function () {
throw "Unable to Get User By ID";
})
},function(err){
throw "Unable to Create User";
});
});
it('should logout the user',function (done){
if(CB._isNode){
done();
return;
}
this.timeout(30000);
CB.CloudUser.current.logOut().then(function(){
done();
},function(){
throw "err";
});
});
it("should send a Reset Email with Email Settings with default Template.", function(done) {
this.timeout(100000);
var url = URL+'/settings/'+CB.appId+"/email";
var emailSettings={
mandrill:{
apiKey:null,
enabled:true
},
mailgun:{
apiKey:"key-f66ed97c75c75cf864990730517d0445",
domain:"cloudboost.io",
enabled:true
},
fromEmail:"hello@cloudboost.io",
fromName:"CloudBoost.io"
};
emailSettings=JSON.stringify(emailSettings);
var params = {};
params.key = CB.masterKey;
params.settings = emailSettings;
function createUserAndSendResetPassword(){
//Create cloudUser
var obj = new CB.CloudUser();
obj.set('username', "Flower");
obj.set('password',passwd);
obj.set('email',"support@cloudboost.io");
obj.save({ success: function(newObj){
CB.CloudUser.resetPassword("support@cloudboost.io",{
success : function(resp){
done();
}, error : function(error){
done(error);
}
});
},error: function(err) {
done(err);
}
});
}
if(!window){
//Lets configure and request
request({
url: url, //URL to hit
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
json: params //Set the body as a string
}, function(error, response, json){
if(error) {
done(error);
} else {
createUserAndSendResetPassword();
}
});
}else{
$.ajax({
// The URL for the request
url: url,
// The data to send (will be converted to a query string)
data: params,
// Whether this is a POST or GET request
type: "PUT",
// The type of data we expect back
dataType : "json",
// Code to run if the request succeeds;
// the response is passed to the function
success: function( json ) {
if(json.category === "email"){
createUserAndSendResetPassword();
}else{
done("Wrong json.");
}
},
// Code to run if the request fails; the raw request and
// status codes are passed to the function
error: function( xhr, status, errorThrown ) {
done("Error thrown.");
},
});
}
});
it("should send a Reset Email with email Template with no Email Settings.", function(done) {
this.timeout(100000);
var url = URL+'/settings/'+CB.appId+"/auth";
var authSettings={
general:{
enabled:true,
callbackURL: null,
primaryColor: "#549afc"
},
custom:{
enabled:true
},
signupEmail:{
enabled:false,
allowOnlyVerifiedLogins:false,
template:""
},
resetPasswordEmail:{
enabled:false,
template:"<h3>TEST(No email Setting only template):Forgot your password? We're there to help.</h3><p>Hi <span class='username></span></p><p>ease click on the button below which will help you reset your password and once you're done, You're good to go!</p><a class='link'></a><p>If you need any help, Just reply to this email and we'll be there to help.</p><p>Thanks, have a great day.</p><p>CloudBoost.io Team</p>"
}
};
authSettings=JSON.stringify(authSettings);
var params = {};
params.key = CB.masterKey;
params.settings = authSettings;
function createUserAndSendResetPassword(){
//Create cloudUser
var obj = new CB.CloudUser();
obj.set('username', "Tree");
obj.set('password',passwd);
obj.set('email',"contact@cloudboost.io");
obj.save({ success: function(newObj){
CB.CloudUser.resetPassword("contact@cloudboost.io",{
success : function(resp){
done();
}, error : function(error){
done(error);
}
});
},error: function(err) {
done(err);
}
});
}
if(!window){
//Lets configure and request
request({
url: url, //URL to hit
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
json: params //Set the body as a string
}, function(error, response, json){
if(error) {
done(error);
} else {
createUserAndSendResetPassword();
}
});
}else{
$.ajax({
// The URL for the request
url: url,
// The data to send (will be converted to a query string)
data: params,
// Whether this is a POST or GET request
type: "PUT",
// The type of data we expect back
dataType : "json",
// Code to run if the request succeeds;
// the response is passed to the function
success: function( json ) {
if(json.category === "auth"){
createUserAndSendResetPassword();
}else{
done("Wrong json.");
}
},
// Code to run if the request fails; the raw request and
// status codes are passed to the function
error: function( xhr, status, errorThrown ) {
done("Error thrown.");
},
});
}
});
it("Should create new user and should fail to login without verified.", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(300000);
var url = URL+'/settings/'+CB.appId+"/auth";
var authSettings={
general:{
enabled:true,
callbackURL: "http://cloudboost.io",
primaryColor: "#549afc"
},
custom:{
enabled:true
},
signupEmail:{
enabled:true,
allowOnlyVerifiedLogins:true,
template:"<h3>TEST(No email Setting only template):Signup? We're there to help.</h3><p>Hi <span class='username></span></p><p>ease click on the button below which will help you reset your password and once you're done, You're good to go!</p><a class='link'></a><p>If you need any help, Just reply to this email and we'll be there to help.</p><p>Thanks, have a great day.</p><p>CloudBoost.io Team</p>"
},
resetPasswordEmail:{
enabled:false,
template:null
}
};
authSettings=JSON.stringify(authSettings);
var params = {};
params.key = CB.masterKey;
params.settings = authSettings;
function signupandlogin(){
var oldPassword = passwd;
var obj = new CB.CloudUser();
obj.set('username', username+"19");
obj.set('password',oldPassword);
obj.set('email',util.makeEmail());
obj.signUp().then(function(list) {
var obj = new CB.CloudUser();
obj.set('username', username+"19");
obj.set('password',oldPassword);
obj.logIn().then(function(user) {
done("User logged in without verification");
}, function (error) {
done();
});
}, function (error) {
throw error;
});
}
if(!window){
//Lets configure and request
request({
url: url, //URL to hit
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
json: params //Set the body as a string
}, function(error, response, json){
if(error) {
done(error);
} else {
signupandlogin();
}
});
}else{
$.ajax({
// The URL for the request
url: url,
// The data to send (will be converted to a query string)
data: params,
// Whether this is a POST or GET request
type: "PUT",
// The type of data we expect back
dataType : "json",
// Code to run if the request succeeds;
// the response is passed to the function
success: function( json ) {
if(json.category === "auth"){
signupandlogin();
}else{
done("Wrong json.");
}
},
// Code to run if the request fails; the raw request and
// status codes are passed to the function
error: function( xhr, status, errorThrown ) {
done("Error thrown.");
},
});
}
});
it("Should nullify the auth custom settings.", function (done) {
if(CB._isNode){
done();
return;
}
this.timeout(300000);
var url = URL+'/settings/'+CB.appId+"/auth";
var authSettings={
general:{
enabled:true,
callbackURL: "http://cloudboost.io",
primaryColor: "#549afc"
},
custom:{
enabled:true
},
signupEmail:{
enabled:false,
allowOnlyVerifiedLogins:false,
template:null
},
resetPasswordEmail:{
enabled:false,
template:null
}
};
authSettings=JSON.stringify(authSettings);
var params = {};
params.key = CB.masterKey;
params.settings = authSettings;
if(!window){
//Lets configure and request
request({
url: url, //URL to hit
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
json: params //Set the body as a string
}, function(error, response, json){
if(error) {
done(error);
} else {
done();
}
});
}else{
$.ajax({
// The URL for the request
url: url,
// The data to send (will be converted to a query string)
data: params,
// Whether this is a POST or GET request
type: "PUT",
// The type of data we expect back
dataType : "json",
// Code to run if the request succeeds;
// the response is passed to the function
success: function( json ) {
if(json.category === "auth"){
done();
}else{
done("Wrong json.");
}
},
// Code to run if the request fails; the raw request and
// status codes are passed to the function
error: function( xhr, status, errorThrown ) {
done("Error thrown.");
},
});
}
});
});