easemob-sdk
Version:
nodejs sdk for easemob
442 lines (426 loc) • 16.4 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 fs = require('fs');
var path = require("path");
describe( 'Message 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();
}
});
});
describe( 'Send txt message', function() {
var text_message_user =[{
username : 'text_message_wayne1',
password : '123456'
},{
username : 'text_message_wayne2',
password : '123456'
},{
username : 'text_message_wayne3',
password : '123456'
}];
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.remove_batch(10, token, function (err, res, body) {
if(!err && res.statusCode==200){
cb(null);
}else{
cb(err || 'can not delete !');
}
})
},function(cb){
easemobSDK.user.create_batch(text_message_user,token,function(err, res, body){
if(!err && res.statusCode==200){
cb(err);
}else{
cb(err || 'request error!')
}
});
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(text_message_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 = {
"target_type" : "users", // users 给用户发消息, chatgroups 给群发消息
"target" : [text_message_user[1].username], // 注意这里需要用数组,数组长度建议不大于20, 即使只有一个用户,
// 也要用数组 ['u1'], 给用户发送时数组元素是用户名,给群组发送时
// 数组元素是groupid
"msg" : {
"type" : "txt",
"msg" : "hello from rest" //消息内容,参考[[start:100serverintegration:30chatlog|聊天记录]]里的bodies内容
},
"from" : text_message_user[0].username, //表示这个消息是谁发出来的, 可以没有这个属性, 那么就会显示是admin, 如果有的话, 则会显示是这个用户发出的
//"ext" : { //扩展属性, 由app自己定义.可以没有这个字段,但是如果有,值不能是“ext:null“这种形式,否则出错
// "attr1" : "v1",
// "attr2" : "v2"
//}
};
easemobSDK.message.send_txt(data,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data[data.target].should.equal('success');
done();
});
});
});
describe( 'Send img message', function() {
var img_message_user =[{
username : 'img_message_wayne1',
password : '123456'
},{
username : 'img_message_wayne2',
password : '123456'
},{
username : 'img_message_wayne3',
password : '123456'
}];
var uuid;
var secret;
var file = fs.createReadStream(path.join(__dirname + '/raindrop.jpg'));
var data = {file : file};
var filename = __dirname + '/raindrop-thumbnail.jpg' ;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(img_message_user,token,function(err, res, body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(err);
}
});
},
function(cb){
easemobSDK.file.upload(data,true,token ,function( err, res,body ){
if(!err ){
var body = JSON.parse(body);
uuid = body.entities[0].uuid;
secret = body.entities[0]['share-secret'];
cb(null);
}else{
cb(err);
}
});
}],function(err,result){
done(err);
})
});
after(function(done){
async.eachSeries(img_message_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 = {
"target_type" : "users", //users 给用户发消息, chatgroups 给群发消息
"target" : [img_message_user[1].username],// 注意这里需要用数组,数组长度建议不大于20, 即使只有一个用户,
// 也要用数组 ['u1'], 给用户发送时数组元素是用户名,给群组发送时
// 数组元素是groupid
"msg" : { //消息内容
"type" : "img", // 消息类型
"url": "https://a1.easemob.com/" + testConfig.org_name +"/"+ testConfig.app_name + "/chatfiles/" + uuid, //成功上传文件返回的uuid
"filename": "text.jpg", // 指定一个文件名
"secret": secret, // 成功上传文件后返回的secret
//"size" : {
// "width" : 480,
// "height" : 720
//}
},
"from" : img_message_user[0].username, //表示这个消息是谁发出来的, 可以没有这个属性, 那么就会显示是admin, 如果有的话, 则会显示是这个用户发出的
//"ext" : { //扩展属性, 由app自己定义.可以没有这个字段,但是如果有,值不能是“ext:null“这种形式,否则出错
// "attr1" : "v1",
// "attr2" : "v2"
//}
};
easemobSDK.message.send_img(data,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data[data.target].should.equal('success');
done();
});
});
});
describe( 'Send audio message', function() {
var audio_message_user =[{
username : 'audio_message_wayne1',
password : '123456'
},{
username : 'audio_message_wayne2',
password : '123456'
},{
username : 'audio_message_wayne3',
password : '123456'
}];
var uuid;
var secret;
var file = fs.createReadStream(path.join(__dirname + '/testvoice.amr'));
var data = {file : file};
var filename = __dirname + '/raindrop-thumbnail.jpg' ;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.remove_batch(10, token, function (err, res, body) {
if(!err && res.statusCode==200){
cb(null);
}else{
cb(err || 'can not delete !');
}
})
},
function(cb){
easemobSDK.user.create_batch(audio_message_user,token,function(err, res, body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(err);
}
});
},
function(cb){
easemobSDK.file.upload(data,true,token ,function( err, res,body ){
if(!err ){
var body = JSON.parse(body);
uuid = body.entities[0].uuid;
secret = body.entities[0]['share-secret'];
cb(null);
}else{
cb(err);
}
});
}],function(err,result){
done(err);
})
});
after(function(done){
async.eachSeries(audio_message_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 = {
"target_type" : "users", //users 给用户发消息, chatgroups 给群发消息
"target" : [audio_message_user[1].username],// 注意这里需要用数组,数组长度建议不大于20, 即使只有一个
// 用户或者群组, 也要用数组形式 ['u1'], 给用户发送
// 此数组元素是用户名,给群组发送时数组元素是groupid
"msg" : { //消息内容
"type": "audio", // 消息类型
"url": "https://a1.easemob.com/" + testConfig.org_name +"/"+ testConfig.app_name + "/chatfiles/" + uuid, //成功上传文件返回的uuid
"filename": "messages.amr", // 指定一个文件名
"length": 4,
"secret": secret// 成功上传文件后返回的secret
},
"from" : audio_message_user[0].username, //表示这个消息是谁发出来的, 可以没有这个属性, 那么就会显示是admin, 如果有的话, 则会显示是这个用户发出的
//"ext" : { //扩展属性, 由app自己定义.可以没有这个字段,但是如果有,值不能是“ext:null“这种形式,否则出错
// "attr1" : "v1",
// "attr2" : "v2"
//}
}
easemobSDK.message.send_audio(data,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data[data.target].should.equal('success');
done();
});
});
});
describe( 'Send video message', function() {
var vedio_message_user =[{
username : 'vedio_message_wayne1',
password : '123456'
},{
username : 'vedio_message_wayne2',
password : '123456'
},{
username : 'vedio_message_wayne3',
password : '123456'
}];
var uuid;
var secret;
var file = fs.createReadStream(path.join(__dirname + '/test.mp4'));
var data = {file : file};
var filename = __dirname + '/raindrop-thumbnail.jpg' ;
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.create_batch(vedio_message_user,token,function(err, res, body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(err);
}
});
},
function(cb){
easemobSDK.file.upload(data,true,token ,function( err, res,body ){
if(!err ){
var body = JSON.parse(body);
uuid = body.entities[0].uuid;
secret = body.entities[0]['share-secret'];
cb(null);
}else{
cb(err);
}
});
}],function(err,result){
done(err);
})
});
after(function(done){
async.eachSeries(vedio_message_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 = {
"target_type" : "users", //users 给用户发消息, chatgroups 给群发消息
"target" : [vedio_message_user[1].username],// 注意这里需要用数组,数组长度建议不大于20, 即使只有一个
// 用户或者群组, 也要用数组形式 ['u1'], 给用户发送
// 此数组元素是用户名,给群组发送时数组元素是groupid
"msg" : { //消息内容
"type": "video", // 消息类型
"url": "https://a1.easemob.com/" + testConfig.org_name +"/"+ testConfig.app_name + "/chatfiles/" + uuid, //成功上传文件返回的uuid
"filename": "test.mp4", // 指定一个文件名
"file_length": 2688934, //视频文件大小
"length": 10,//视频播放长度
"secret": secret ,// 成功上传文件后返回的secret
//"thumb": "https://a1.easemob.com/easemob-demo/chatdemoui/chatfiles/67279b20-7f69-11e4-8eee-21d3334b3a97",//成功上传视频缩略图返回的uuid
//"thumb_secret": "ZyebKn9pEeSSfY03ROk7ND24zUf74s7HpPN1oMV-1JxN2O2I",// 成功上传视频缩略图后返回的secret
},
"from" : vedio_message_user[0].username, //表示这个消息是谁发出来的, 可以没有这个属性, 那么就会显示是admin, 如果有的话, 则会显示是这个用户发出的
//"ext" : { //扩展属性, 由app自己定义.可以没有这个字段,但是如果有,值不能是“ext:null“这种形式,否则出错
// "attr1" : "v1",
// "attr2" : "v2"
//}
};
easemobSDK.message.send_video(data,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data[data.target].should.equal('success');
done();
});
});
});
describe( 'Send through message', function() {
var through_message_user =[{
username : 'through_message_wayne1',
password : '123456'
},{
username : 'through_message_wayne2',
password : '123456'
},{
username : 'through_message_wayne3',
password : '123456'
}];
before(function(done){
async.waterfall([
function(cb){
easemobSDK.user.remove_batch(10, token, function (err, res, body) {
if(!err && res.statusCode==200){
cb(null);
}else{
cb(err || 'can not delete !');
}
})
},
function(cb){
easemobSDK.user.create_batch(through_message_user,token,function(err, res, body){
if(!err && res.statusCode==200){
cb(null);
}else{
cb(err || 'request error!');
}
});
}
],function(err,result){
done(err);
});
});
after(function(done){
async.eachSeries(through_message_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 = {
"target_type":"users", // users 给用户发消息, chatgroups 给群发消息
"target" : [through_message_user[1].username], // 注意这里需要用数组,数组长度建议不大于20, 即使只有
// 一个用户u1或者群组, 也要用数组形式 ['u1'], 给用户发
// 送时数组元素是用户名,给群组发送时数组元素是groupid
"msg":{ //消息内容
"type":"txt", // 消息类型
"action":"action1"
},
"from":[through_message_user[0].username], //表示这个消息是谁发出来的, 可以没有这个属性, 那么就会显示是admin, 如果有的话, 则会显示是这个用户发出的
//"ext":{ //扩展属性, 由app自己定义.可以没有这个字段,但是如果有,值不能是“ext:null“这种形式,否则出错
// "attr1":"v1",
// "attr2":"v2"
//}
};
easemobSDK.message.send_through(data,token ,function( err, res,body ){
should.not.exists( err );
res.statusCode.should.equal( 200 );
body.data[data.target].should.equal('success');
done(err);
});
});
});
});