2
0
mirror of https://github.com/yagop/node-telegram-bot-api synced 2025-08-23 18:38:01 +00:00

246 lines
7.0 KiB
JavaScript
Raw Normal View History

2015-07-05 11:37:27 +02:00
var Telegram = require('../index');
2015-06-29 00:37:40 +02:00
var request = require('request');
var should = require('should');
var fs = require('fs');
2015-07-05 11:37:27 +02:00
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
2015-06-29 00:37:40 +02:00
var TOKEN = process.env.TEST_TELEGRAM_TOKEN;
if (!TOKEN) {
throw new Error('Bot token not provided');
}
// Telegram service if not User Id
var USERID = process.env.TEST_USER_ID || 777000;
describe('Telegram', function () {
2015-07-05 11:37:27 +02:00
describe('#setWebHook', function () {
it('should set a webHook', function (done) {
var bot = new Telegram(TOKEN);
bot.setWebHook('216.58.210.174').then(function (resp) {
resp.should.be.exactly(true);
done();
});
});
it('should delete the webHook', function (done) {
var bot = new Telegram(TOKEN);
bot.setWebHook('').then(function (resp) {
resp.should.be.exactly(true);
done();
});
});
});
2015-06-29 00:37:40 +02:00
describe('#emit', function () {
it('should emit a `message` on polling', function (done) {
var bot = new Telegram(TOKEN);
bot.on('message', function (msg) {
msg.should.be.an.instanceOf(Object);
bot._polling = function () {};
done();
});
bot.getUpdates = function() {
return {
then: function (cb) {
cb([{update_id: 0, message: {}}]);
}
};
};
bot._polling();
});
2015-07-05 11:37:27 +02:00
it('should emit a `message` on HTTP WebHook', function (done) {
2015-06-29 00:37:40 +02:00
var bot = new Telegram(TOKEN, {webHook: true});
bot.on('message', function (msg) {
2015-07-05 11:37:27 +02:00
bot._webServer.close();
2015-06-29 00:37:40 +02:00
done();
});
2015-06-30 01:41:04 +02:00
var url = 'http://localhost:8443/bot'+TOKEN;
2015-06-29 00:37:40 +02:00
request({
url: url,
method: 'POST',
json: true,
headers: {
"content-type": "application/json",
},
body: JSON.stringify({update_id: 0, message: {text: 'test'}})
});
});
2015-07-05 11:37:27 +02:00
it('should emit a `message` on HTTPS WebHook', function (done) {
var opts = {
webHook: {
port: 8443,
key: __dirname+'/../examples/key.pem',
cert: __dirname+'/../examples/crt.pem'
}
};
var bot = new Telegram(TOKEN, opts);
bot.on('message', function (msg) {
bot._webServer.close();
done();
});
var url = 'https://localhost:8443/bot'+TOKEN;
request({
url: url,
method: 'POST',
json: true,
headers: {
"content-type": "application/json",
},
rejectUnhauthorized: false,
body: {update_id: 0, message: {text: 'test'}}
});
});
2015-06-29 00:37:40 +02:00
});
describe('#getMe', function () {
it('should return an User object', function (done) {
var bot = new Telegram(TOKEN);
bot.getMe().then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
});
describe('#getUpdates', function () {
it('should return an Array', function (done) {
var bot = new Telegram(TOKEN);
bot.getUpdates().then(function (resp) {
resp.should.be.an.instanceOf(Array);
done();
});
});
});
describe('#sendMessage', function () {
it('should send a message', function (done) {
var bot = new Telegram(TOKEN);
bot.sendMessage(USERID, 'test').then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
});
describe('#forwardMessage', function () {
it('should forward a message', function (done) {
var bot = new Telegram(TOKEN);
bot.sendMessage(USERID, 'test').then(function (resp) {
var messageId = resp.message_id;
bot.forwardMessage(USERID, USERID, messageId)
.then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
});
});
describe('#sendPhoto', function () {
var photoId;
it('should send a photo from file', function (done) {
var bot = new Telegram(TOKEN);
var photo = __dirname+'/bot.gif';
bot.sendPhoto(USERID, photo).then(function (resp) {
resp.should.be.an.instanceOf(Object);
photoId = resp.photo[0].file_id;
done();
});
});
it('should send a photo from id', function (done) {
var bot = new Telegram(TOKEN);
// Send the same photo as before
var photo = photoId;
bot.sendPhoto(USERID, photo).then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
it('should send a photo from fs.readStream', function (done) {
var bot = new Telegram(TOKEN);
var photo = fs.createReadStream(__dirname+'/bot.gif');
bot.sendPhoto(USERID, photo).then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
it('should send a photo from request Stream', function (done) {
var bot = new Telegram(TOKEN);
var photo = request('https://telegram.org/img/t_logo.png');
bot.sendPhoto(USERID, photo).then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
});
2015-07-06 01:36:48 +02:00
describe('#sendChatAction', function () {
it('should send a chat action', function (done) {
var bot = new Telegram(TOKEN);
var action = "typing";
bot.sendChatAction(USERID, action).then(function (resp) {
resp.should.be.exactly(true);
done();
});
});
});
2015-06-29 00:37:40 +02:00
describe('#sendAudio', function () {
it('should send an OGG audio', function (done) {
var bot = new Telegram(TOKEN);
var audio = request('https://upload.wikimedia.org/wikipedia/commons/c/c8/Example.ogg');
bot.sendAudio(USERID, audio).then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
});
describe('#sendDocument', function () {
var documentId;
it('should send a document from file', function (done) {
var bot = new Telegram(TOKEN);
var document = __dirname+'/bot.gif';
bot.sendDocument(USERID, document).then(function (resp) {
resp.should.be.an.instanceOf(Object);
documentId = resp.document.file_id;
done();
});
});
2015-07-07 13:58:20 +05:30
it('should send a document from id', function (done) {
var bot = new Telegram(TOKEN);
// Send the same photo as before
var document = documentId;
bot.sendDocument(USERID, document).then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
2015-07-07 13:58:20 +05:30
it('should send a document from fs.readStream', function (done) {
var bot = new Telegram(TOKEN);
var document = fs.createReadStream(__dirname+'/bot.gif');
bot.sendDocument(USERID, document).then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
it('should send a document from request Stream', function (done) {
var bot = new Telegram(TOKEN);
var document = request('https://telegram.org/img/t_logo.png');
bot.sendDocument(USERID, document).then(function (resp) {
resp.should.be.an.instanceOf(Object);
done();
});
});
});
2015-07-08 21:19:25 +02:00
});