easemob-sdk
Version:
nodejs sdk for easemob
767 lines (734 loc) • 26.9 kB
JavaScript
/**
* Created by wayne on 15-10-28.
*/
var should = require( 'should' );
var testConfig = require( './config' );
var easemobSDK = require( '../index' );
var async = require('async');
var _ = require('underscore');
describe( 'Chatroom Test', function(){
var token;
before( function( done ){
// Init the SDK before testing.
easemobSDK.init(testConfig.org_name,testConfig.app_name,testConfig.client_id,testConfig.client_secret);
easemobSDK.get_token(function(err,result){
if(!err){
token = result.access_token;
done(err);
}
});
});
//创建聊天室
describe( 'Create chatroom', function() {
var create_chatroom_user =[{
username : 'create_chatroom_wayne1',
password : '123456'
},{
username : 'create_chatroom_wayne2',
password : '123456'
},{
username : 'create_chatroom_wayne3',
password : '123456'
}];
before(function(done){
easemobSDK.user.create_batch(create_chatroom_user,token,function(err, res, body){
if(!err && res.statusCode==200){
done(err);
}
});
});
after(function(done){
async.eachSeries(create_chatroom_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
var data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"create_chatroom_wayne1", //聊天室的管理员, 此属性为必须的
"members":["create_chatroom_wayne2","create_chatroom_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
easemobSDK.chatroom.create(data,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
done(err);
});
});
});
//修改聊天室信息
describe( 'Modify chatroom', function() {
var modify_chatroom_user =[{
username : 'modify_chatroom_wayne1',
password : '123456'
},{
username : 'modify_chatroom_wayne2',
password : '123456'
},{
username : 'modify_chatroom_wayne3',
password : '123456'
}];
var chatroom_data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"modify_chatroom_wayne1", //聊天室的管理员, 此属性为必须的
"members":["modify_chatroom_wayne2","modify_chatroom_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(modify_chatroom_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.chatroom.create(chatroom_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
}
})
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(modify_chatroom_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
var modify_chatroom_data = {
"name":"test wayne chatroom", //聊天室名称
"description":"update chatroominfo", //聊天室描述
"maxusers":200 //聊天室成员最大数(包括群主), 值为数值类型
};
easemobSDK.chatroom.modify(modify_chatroom_data,chatroom_id ,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
_.each(body.data,function(data){
data.should.be.true;
});
done(err);
});
});
});
//删除聊天室
describe( 'Remove chatroom', function() {
var remove_chatroom_user =[{
username : 'remove_chatroom_wayne1',
password : '123456'
},{
username : 'remove_chatroom_wayne2',
password : '123456'
},{
username : 'remove_chatroom_wayne3',
password : '123456'
}];
var remove_chatroom_data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"remove_chatroom_wayne1", //聊天室的管理员, 此属性为必须的
"members":["remove_chatroom_wayne2","remove_chatroom_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(remove_chatroom_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.chatroom.create(remove_chatroom_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
};
})
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(remove_chatroom_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
easemobSDK.chatroom.remove(chatroom_id ,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data.id.should.equal( chatroom_id );
body.data.success.should.be.true;
done(err);
});
});
});
//获取app中所有的聊天室
describe( 'Get all chatroom', function() {
var get_all_chatroom_user =[{
username : 'get_all_chatroom_wayne1',
password : '123456'
},{
username : 'get_all_chatroom_wayne2',
password : '123456'
},{
username : 'get_all_chatroom_wayne3',
password : '123456'
}];
var get_all_chatroom_data = {
"name":"waynechatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"get_all_chatroom_wayne1", //聊天室的管理员, 此属性为必须的
"members":["get_all_chatroom_wayne2","get_all_chatroom_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(get_all_chatroom_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
}
})
},
function(cb){
easemobSDK.chatroom.create(get_all_chatroom_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
}
})
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(get_all_chatroom_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
easemobSDK.chatroom.get_all(token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data[0].id.should.equal(chatroom_id);
body.data[0].name.should.equal(get_all_chatroom_data.name);
body.data[0].owner.should.equal(get_all_chatroom_data.owner);
done(err);
});
});
});
//获取一个聊天室详情
describe( 'Get chatroom', function() {
var get_chatroom_user =[{
username : 'get_chatroom_wayne1',
password : '123456'
},{
username : 'get_chatroom_wayne2',
password : '123456'
},{
username : 'get_chatroom_wayne3',
password : '123456'
}];
var get_chatroom_data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"get_chatroom_wayne1", //聊天室的管理员, 此属性为必须的
"members":["get_chatroom_wayne2","get_chatroom_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(get_chatroom_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.chatroom.create(get_chatroom_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
};
})
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(get_chatroom_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
easemobSDK.chatroom.get(chatroom_id ,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
var is_pass = false;
_.each(body.data[0].affiliations,function(user){
if(user['owner']){
user['owner'].should.equal(get_chatroom_data.owner);
is_pass = true;
}
});
is_pass.should.be.true;
done(err);
});
});
});
//获取用户加入的聊天室
describe( 'Get user chatroom', function() {
var get_user_chatroom_user =[{
username : 'get_user_chatroom_wayne1',
password : '123456'
},{
username : 'get_user_chatroom_wayne2',
password : '123456'
},{
username : 'get_user_chatroom_wayne3',
password : '123456'
}];
var get_user_chatroom_data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"get_user_chatroom_wayne1", //聊天室的管理员, 此属性为必须的
"members":["get_user_chatroom_wayne2","get_user_chatroom_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(get_user_chatroom_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.chatroom.create(get_user_chatroom_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
};
})
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(get_user_chatroom_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
easemobSDK.chatroom.get_user_chatroom(get_user_chatroom_user[0].username ,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data[0].name.should.equal(get_user_chatroom_data.name);
done(err);
});
});
});
//聊天室成员添加[单个]
describe( 'Add member', function() {
var add_chatroom_member_user =[{
username : 'add_chatroom_member_wayne1',
password : '123456'
},{
username : 'add_chatroom_member_wayne2',
password : '123456'
},{
username : 'add_chatroom_member_wayne3',
password : '123456'
},{
username : 'add_chatroom_member_wayne4',
password : '123456'
}];
var add_chatroom_user_data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"add_chatroom_member_wayne1", //聊天室的管理员, 此属性为必须的
"members":["add_chatroom_member_wayne2","add_chatroom_member_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(add_chatroom_member_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.chatroom.create(add_chatroom_user_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
};
})
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(add_chatroom_member_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
easemobSDK.chatroom.add_member(add_chatroom_member_user[3].username,chatroom_id ,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data.user.should.equal(add_chatroom_member_user[3].username);
body.data.id.should.equal(chatroom_id);
done(err);
});
});
});
//聊天室成员添加[批量]
describe( 'Add member batch', function() {
var add_chatroom_members_user =[{
username : 'add_chatroom_members_wayne1',
password : '123456'
},{
username : 'add_chatroom_members_wayne2',
password : '123456'
},{
username : 'add_chatroom_members_wayne3',
password : '123456'
}];
var add_user =[{
username : 'add_chatroom_members_wayne4',
password : '123456'
},{
username : 'add_chatroom_members_wayne5',
password : '123456'
},{
username : 'add_chatroom_members_wayne6',
password : '123456'
}];
var add_chatroom_users_data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"add_chatroom_members_wayne1", //聊天室的管理员, 此属性为必须的
"members":["add_chatroom_members_wayne2","add_chatroom_members_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(add_chatroom_members_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.user.create_batch(add_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.chatroom.create(add_chatroom_users_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
};
})
}
],function(err,result){
done(err);
});
});
after(function(done){
add_chatroom_members_user = add_chatroom_members_user.concat(add_user);
async.eachSeries(add_chatroom_members_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
var add_usernames = {};
add_usernames.usernames = new Array();
_.each(add_user,function(user){
add_usernames.usernames.push(user.username);
});
easemobSDK.chatroom.add_member_batch(add_usernames,chatroom_id ,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data.newmembers.should.match(add_usernames.usernames);
body.data.id.should.equal(chatroom_id);
done(err);
});
});
});
//聊天室成员删除[单个]
describe( 'Remove member', function() {
var remove_chatroom_member_user =[{
username : 'remove_chatroom_member_wayne1',
password : '123456'
},{
username : 'remove_chatroom_member_wayne2',
password : '123456'
},{
username : 'remove_chatroom_member_wayne3',
password : '123456'
},{
username : 'remove_chatroom_member_wayne4',
password : '123456'
}];
var remove_chatroom_user_data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"remove_chatroom_member_wayne1", //聊天室的管理员, 此属性为必须的
"members":["remove_chatroom_member_wayne2","remove_chatroom_member_wayne3","remove_chatroom_member_wayne4"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(remove_chatroom_member_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.chatroom.create(remove_chatroom_user_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
};
})
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(remove_chatroom_member_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
easemobSDK.chatroom.remove_member(remove_chatroom_member_user[3].username,chatroom_id ,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data.user.should.equal(remove_chatroom_member_user[3].username);
body.data.id.should.equal(chatroom_id);
done(err);
});
});
});
//聊天室成员删除[批量]
describe( 'Remove member batch', function() {
var remove_chatroom_members_user =[{
username : 'remove_chatroom_members_wayne1',
password : '123456'
},{
username : 'remove_chatroom_members_wayne2',
password : '123456'
},{
username : 'remove_chatroom_members_wayne3',
password : '123456'
},{
username : 'remove_chatroom_members_wayne4',
password : '123456'
},{
username : 'remove_chatroom_members_wayne5',
password : '123456'
},{
username : 'remove_chatroom_members_wayne6',
password : '123456'
}];
var remove_chatroom_users_data = {
"name":"testchatroom", //聊天室名称, 此属性为必须的
"description":"server create chatroom", //聊天室描述, 此属性为必须的
"maxusers":300, //聊天室成员最大数(包括群主), 值为数值类型,默认值200,此属性为可选的
"owner":"remove_chatroom_members_wayne1", //聊天室的管理员, 此属性为必须的
"members":["remove_chatroom_members_wayne2","remove_chatroom_members_wayne3"] //聊天室成员,此属性为可选的,但是如果加了此项,数组元素至少一个(注:群主jma1不需要写入到members里面)
};
var chatroom_id;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(remove_chatroom_members_user,token,function(err,res,body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(body);
};
})
},
function(cb){
easemobSDK.chatroom.create(remove_chatroom_users_data,token ,function(err,res,body){
if(!err && res.statusCode==200){
chatroom_id = body['data']['id'];
cb(null);
}else{
cb(body);
};
})
}],
function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(remove_chatroom_members_user, function iterator(user, callback){
easemobSDK.user.remove(user.username,token,function(err, res, body){
if(!err && res.statusCode==200){
callback(null);
}else {
callback(err || 'can not delete !');
}
});
},function(err){
done(err);
});
});
it( 'Should return OK', function( done ) {
var usernames = 'remove_chatroom_members_wayne5,remove_chatroom_members_wayne6'
easemobSDK.chatroom.remove_member_batch(usernames,chatroom_id ,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
_.each(body.data,function(data){
data.result.should.be.true;
});
done(err);
});
});
});
});